Vim: Wie füge ich im visuellen Blockmodus ein?

145

Wie können Sie in Vim einfügen, wenn Sie sich im visuellen Blockmodus befinden (durch Drücken von Strg-V)?

ovatsug25
quelle
4
Mögliches Duplikat von VIM Blockwise Insert
Conner
1
SCHNELLE ZUSAMMENFASSUNG DER ANTWORT: Ich werde die Antwort hier einfach in einfacher Form formulieren. Es gibt so viele Kommentare, dass dieser Thread ertrinkt. 1) Überprüfen Sie, ob Sie + visualextra in Ihrer Version von Vim aktiviert haben, indem Sie Folgendes eingeben: ver in Vim. 2) Sie fügen ein, indem Sie zuerst das Material markieren, das Sie bearbeiten möchten, und dann I (Großbuchstabe i) drücken - Kleinbuchstaben, die nicht funktionieren. 3) Sobald Sie dies getan haben, sieht es möglicherweise so aus, als würden Sie nur in die erste Zeile einfügen. Wenn Sie fertig sind, drücken Sie ESC und j, und der Text wird in die anderen Zeilen kopiert. So geht es mir.
Zeth

Antworten:

202

Versuche dies

Drücken Sie nach Auswahl eines Textblocks Shift+ ioder Großbuchstaben I.

Kleinbuchstaben ifunktionieren nicht.

Geben Sie dann die gewünschten Elemente ein und drücken Sie Esczweimal , um sie schließlich auf alle Zeilen anzuwenden .




Wenn das nicht funktioniert ...

Überprüfen Sie, ob Sie +visualextrain Ihrer Version von Vim aktiviert haben .

Sie können dies tun, indem Sie :verdie Liste der Funktionen eingeben und durch sie scrollen. (Möglicherweise möchten Sie es kopieren und in einen Puffer einfügen und eine inkrementelle Suche durchführen, da das Format ungerade ist.)

Das Aktivieren liegt außerhalb des Rahmens dieser Frage, aber ich bin sicher, dass Sie es irgendwo finden können.

ovatsug25
quelle
13
Vergiss auch nicht A!
jmdeldin
42
Sie müssen auch die Esc-Taste drücken, um den Einfügemodus zu verlassen, bevor der Text dupliziert wird.
Brandon Joyce
19
Hat jemand jemals gesehen, dass dies nicht funktioniert? Ich habe ein nicht modifiziertes vim-Setup unter CentOS. Ich drücke Strg + V, drücke einige Male Ja und sehe, wie der Cursor das erste Zeichen einiger Zeilen hervorhebt. Ich drücke Shift + i. Der Cursor bewegt sich zum ersten Zeichen der ersten Zeile, aber ich kehre zum normalen Modus zurück. Ich weiß das, denn wenn ich "a" drücke, wird das Zeichen nach rechts verschoben und "- INSERT -" angezeigt. Wenn ich ein paar Zeichen eingebe und die Esc-Taste drücke, wird dies nicht auf die anderen Zeilen angewendet.
Tyler Collier
2
@ TylerCollier Ich habe das Problem unter Ubuntu 14.04 auf Digitalocean. Bitte kommentieren Sie, wenn Sie eine Lösung gefunden haben.
Zack Burt
2
@ZacharyBurt Das mit Ubuntu 14.04 (installiert als vi) installierte Standard-VIM enthält diese Funktion nicht visualextra, sodass das Einfügen von Blöcken dort nicht funktioniert. sudo apt-get install vimbringt eine voll funktionsfähige Version, auf der visualextraaktiviert ist. @TylerCollier Dies kann auch bei Ihrer CentOS-Installation das gleiche Problem sein: Überprüfen Sie die Ausgabe von vim --version, um die vollständige Liste der aktivierten Funktionen anzuzeigen .
Gabriel Grant
40
  1. Drücken Sie Strg und v // Startauswahl
  2. Drücken Sie die Umschalttaste und i // und geben Sie einen beliebigen Text ein
  3. Drücken Sie esc esc // Drücken Sie zweimal esc
dom frei
quelle
Nach dem Drücken ctrl + vkönnen Sie drücken, jum schnell Zeilen unterhalb der aktuellen Position kauszuwählen , oder drücken, um schnell Zeilen oberhalb der aktuellen Position auszuwählen. Sie können auch die shiftTaste mit den upoder downFehlern verwenden, um die Auswahl zu treffen.
tyler.frankenstein
1
Von allen Antworten ist dies die einzige, die für mich funktioniert hat. Ich bin auf einem Mac mit der Brew-Installation
Daniel Kaplan
Ich habe seit Jahren beklagen , dass ich konnte nicht leicht i nsert (wie c hange) im Block wählen. iIch bin erstaunt, dass es eine Hauptstadt gibt. Ich habe verwendet :normal iINPUT<CR>, um am Anfang von Zeilen einzugeben. Vielen Dank dafür!
Tim Visée
Ich glaube nicht, dass Sie zweimal esc drücken müssen. Wenn Sie nach esc etwas drücken, wird der Text automatisch aktualisiert. Wenn nicht, dauert es ungefähr eine halbe Sekunde.
Shahbaz
29

Möglicherweise haben Sie auch einen Anwendungsfall, in dem Sie einen Textblock löschen und ersetzen möchten.

So was

Hello World
Hello World

Sie können die visuelle Blockauswahl vor "W" treffen und Shift+ i- "Cool" - Hit drückenESC und dann "Welt" durch visuelle Blockauswahl löschen.

Alternativ besteht die coolere Möglichkeit darin, in beiden Zeilen nur die visuelle Blockauswahl "Welt" zu treffen. Geben Sie ein cfür change. Jetzt bist du im insertModus. Fügen Sie das gewünschte Material ein und drücken Sie ESC. Beides wird mit weniger Tastenanschlägen reflektiert.

Hello Cool 
Hello Cool
Nishant
quelle
Der letzte Schritt ist hilfreich für mich, Sie müssen drücken, ESCdann zeigt die gesamte markierte Zeile das Zeichen, das Sie eingeben.
Webb Lu
tolles Zeug, es hilft sehr
Prosti
9

Wenn Sie vor oder nach der ausgewählten Spalte neuen Text hinzufügen möchten:

  • Drücken Sie Strg + v
  • Spalten auswählen
  • Drücken Sie Shift + i
  • schreibe deinen Text
  • Drücken Sie esc
  • drücke "jj"
Rugby82
quelle
2
Tank you, jjum die Änderungen auf alle Zeilen unten zu verbreiten, war das letzte bisschen, das mir fehlte!
Kilogic
jjist ein Mörder!
Anh Tran