So löschen Sie ausgewählten Text im vi-Editor

116

Ich benutze PuTTY und den vi-Editor. Wie kann ich das tun, wenn ich mit der Maus fünf Zeilen auswähle und diese Zeilen löschen möchte?

Wie kann ich die Zeilen mit meiner Tastatur auswählen, wie ich es in Windows kann, wo ich Shiftdie Pfeile drücke und bewege, um den Text auszuwählen? Wie kann ich das in vi machen?

Peter Mortensen
quelle
1
Ich habe die gedruckte Mannliste, konnte aber nicht finden, wie ich den ausgewählten Text löschen kann
x Zeichen rechts vom Cursor löschen X Zeichen links vom Cursor löschen D Bis zum Ende der Zeile löschen dd Aktuelle Zeile löschen : d Aktuelle Zeile aus lagmonster.org/docs/vi.html löschen Hoffnung, die ein wenig hilft
Mawg sagt wieder Monica
1
VIM Fragen zum Superuser? LOL!
Pascal Thivent
1
@Pascal: hmm, ja, du hast recht. Übrigens eine schön formatierte Antwort. Oh, und seine / ihre Frage betraf nicht VIM, sondern VI. ;)
Marcel Korpel

Antworten:

214

Ich benutze PuTTY und den vi-Editor. Wie kann ich das tun, wenn ich mit der Maus fünf Zeilen auswähle und diese Zeilen löschen möchte?

Vergiss die Maus. So entfernen Sie 5 Zeilen:

  • Gehen Sie zur ersten Zeile und geben Sie d5d( ddlöscht eine Zeile, d5dlöscht 5 Zeilen) ~ oder ~ ein
  • Geben Sie Shift-vzur Eingabe linewise Auswahlmodus , dann bewegen Sie den Cursor nach unten verwenden j(ja, Verwendung h, j, kund lzu bewegen , links , unten , oben , rechts jeweils, das ist viel effizienter als mit den Pfeilen) und geben Sie ddie Auswahl zu löschen.

Wie kann ich die Zeilen mit meiner Tastatur auswählen, wie ich es in Windows kann, wo ich Shiftdie Pfeile drücke und bewege, um den Text auszuwählen? Wie kann ich das in vi machen?

Wie gesagt, entweder Shift-vzum Aufrufen des zeilenweisen Auswahlmodus oder vzum Aufrufen des zeichenweisen Auswahlmodus oder zum Aufrufen des Ctrl-vblockweisen Auswahlmodus. Dann bewegen sich mit h, j, kundl .

Ich schlage vor, einige Zeit mit dem Vim-Tutor (Lauf vimtutor) zu verbringen , um sich auf sehr didaktische Weise mit Vim vertraut zu machen.

Siehe auch

Pascal Thivent
quelle
1
Tatsächlich bietet vim eine hervorragende Mausunterstützung, wenn Ihr Terminal dies unterstützt. Wenn Sie den gpmDaemon beispielsweise in einer Konsole verwenden oder ausführen xtermoder konsolein einer grafischen Umgebung set mouse=aausführen , können Sie vim mitteilen (oder zu Ihrer .vimrc hinzufügen), und die Maus kann zum Auswählen, Ändern der Größe von Teilungen usw. verwendet werden.
Ben Voigt
@Ben Du hast recht, ich benutze die Maus überhaupt nicht, aber das bedeutet nicht, dass VIM (unter bestimmten Umständen) nicht damit umgehen kann. Ich habe diesen ungenauen Teil tatsächlich aus meiner Antwort entfernt, während Sie tippten.
Pascal Thivent
Außerdem ist es sehr schwer zu sagen, wann Ihr V groß ist oder nicht ... Ich würde vorschlagen, für die Auswahl des Linienmodus [Umschalt] + [V] zu sagen.
Ben Voigt
Ich weiß , es ist eine Weile her, aber warum mit h, j, kund lwäre viel effizienter als mit den Pfeilen? Ich sehe kein Problem mit den Pfeilen und das Endergebnis sieht gleich aus. Außerdem wurden die Pfeile zuerst für diesen Zweck entworfen, so dass sich ihre Anordnung (zumindest für mich) viel intuitiver anfühlt
Frederico Pantuzza
1
@FredericoPantuzza An diesem Punkt ist es eine Frage der Armbewegung - das Ziel ist es, Ihre Finger immer auf den Tasten der Startreihe zu halten. Wenn Sie Ihren rechten Arm hochheben und zu den Pfeiltasten schieben müssen, um sie zu verwenden, summiert sich dies im Laufe der Zeit.
AndrewF
59

Mach es auf die vi Art.

Um 5 Zeilen zu löschen, drücken Sie: 5dd (5 löschen)

Um auszuwählen (tatsächlich in die Zwischenablage zu kopieren), geben Sie Folgendes ein: 10yy

Es ist etwas schwer zu verstehen, aber sehr praktisch zu lernen, wenn Sie diese Remote-Terminals verwenden

Beachten Sie die Lernkurven einiger Editoren:


(Quelle: calver at unix.rulez.org )

OscarRyz
quelle
31

Wenn Sie mit Zeilennummern löschen möchten, können Sie Folgendes verwenden:

:startingline, last line d

Beispiel:

:7,20 d

In diesem Beispiel werden die Zeilen 7 bis 20 gelöscht.

Vladimir verleg
quelle
Dieser Tipp war mir bisher nicht bekannt. Es wirkt wie ein Zauber! Vielen Dank!
Tung
13

Durch Hervorheben mit der Maus werden nur Zeichen auf dem Terminal hervorgehoben. VI erhält diese Informationen nicht wirklich, daher müssen Sie sie anders hervorheben.

Drücken Sie 'v', um einen Auswahlmodus aufzurufen, und bewegen Sie diesen mit den Pfeiltasten. Drücken Sie zum Löschen x. Um Zeilen gleichzeitig auszuwählen, drücken Sie Umschalt + v. Versuchen Sie zum Auswählen von Blöcken Strg + v. Das ist zum Beispiel gut, um viele Kommentarzeilen vor Ihren Code einzufügen :).

Ich bin mit VI einverstanden, aber es hat eine Weile gedauert, bis ich mich verbessert habe. Meine Arbeitskollegen haben mir diesen Spickzettel empfohlen . Ich habe einen Ausdruck an der Wand für die seltsamen Momente, in denen ich etwas vergesse.

Viel Spaß beim Hacken!

heymatthew
quelle
6

Wenn Sie ein Terminal wie PuTTY verwenden , sind dies normalerweise keine Mausklicks und Auswahlen an das Remote-System übertragen. Vi hat also keine Ahnung, dass Sie gerade einen Text ausgewählt haben. (Es gibt Ausnahmen, aber im Allgemeinen werden Mausaktionen nicht übertragen.)

Um mehrere Zeilen in vi 5ddzu löschen, löschen Sie beispielsweise 5 Zeilen.

Wenn Sie Vim nicht verwenden , würde ich dies dringend empfehlen. Sie können die visuelle Auswahl verwenden, indem Sie drücken V, um einen visuellen Block zu starten, den Cursor zum anderen Ende bewegen und dzum Löschen (oder einem anderen Bearbeitungsbefehl, z. B. yzum Kopieren) drücken .

Greg Hewgill
quelle
1
@ Justin L.: Verwenden <kbd>a</kbd>.
Greg Hewgill
1
Vielen Dank! : D Gibt es noch mehr davon irgendwo versteckt?
Justin L.
1
Putty kann Mausbefehle übertragen. Der erste Satz ist möglicherweise veraltet.
Congusbongus
3

Wenn Sie alle Zeilen in einer Datei aus Ihrer aktuellen Zeilennummer entfernen möchten dG, werden alle Zeilen bis zum (shift g)Ende der Datei gelöscht

Syed
quelle