vim rückwärts Tricks löschen

119
  • Wie löscht man ein Wort links? Mit anderen Worten, löschen Sie das Wort, wenn der Cursor am Ende steht.
  • Wie löscht man Zeichen am Zeilenanfang?
  • Wie löscht man das erste Leerzeichen links?

  • Irgendwelche anderen Tricks zum Löschen von Wörtern?

vehomzzz
quelle

Antworten:

163

Im Allgemeinen wird d <motion> nach <motion> von der aktuellen Position zur Endposition gelöscht. Dies bedeutet, dass:

  1. d <Linkspfeil> löscht das aktuelle und das linke Zeichen
  2. d $ wird von der aktuellen Position bis zum Zeilenende gelöscht
  3. d ^ löscht vom aktuellen Rückwärts zum ersten Nicht-Leerzeichen
  4. d0 wird vom aktuellen Rückwärts bis zum Zeilenanfang gelöscht
  5. dw löscht den Strom bis zum Ende des aktuellen Wortes (einschließlich des nachgestellten Leerzeichens).
  6. db löscht den aktuellen bis zum Anfang des aktuellen Wortes

Lesen Sie dies , um alle Dinge zu lernen, die Sie mit dem Befehl 'd' kombinieren können.

Lucas Oman
quelle
1
Eine weitere praktische Abkürzung für den Fall, dass Sie sich dbschwer erinnern können: 5. dw or d<ctrl+rightarrow>und 6. db or d<ctrl+leftarrow>
Crisboot
6
Anstatt Typisierung d<leftArrow>tun dhstatt, da hfür Bewegung ist der Schlüssel links
Dylanthepiguy
4
Warum wird diese Antwort akzeptiert? d <leftArrow> (und keine der folgenden außer dw) löscht kein Zeichen unter einem Cursor, wie OP es wünscht.
Listerreg
73

Ich war schon oft in diesem Szenario. Ich möchte alle Leerzeichen in Zeile 10 entfernen, damit sie nach dem Komma mit Zeile 9 verbunden werden.

Geben Sie hier die Bildbeschreibung ein

Dies ist im Grunde eine einfache Zeilenverbindung in VIM.

kJ macht den Trick (siehe unten)

Vim Join Lines

Abdo
quelle
9
Ich habe überall danach gesucht!
Funktionvoid
2
haha, ich will das und ich habe keine Ahnung, wie ich es in Google beschreiben soll. So glücklich, dass ich nach unten scrolle =))
Thai Tran
1
Ich kann nicht glauben, wie oft ich das manuell gemacht habe. Genau das habe ich gesucht, DANKE!
Tobiasandersen
1
Genau das habe ich gesucht. Vim hat mich täglich
umgehauen
4
Die Erklärung hierfür lautet: k= Nach oben, J= Zeile unten mit der aktuellen Zeile mit einem Leerzeichen dazwischen verbinden. Sie können auch kgJohne Leerzeichen beitreten. gJ= Linie unten ohne Leerzeichen dazwischen verbinden. Über Cheatsheet: vim.rtorr.com
KhalilRavanna
31

Um Punkt 3 zu beantworten, diwund dawsind ausgezeichnet.

Randy Morris
quelle
4
Ich finde es traurig, dass es keine Zwei-Zeichen-Befehle gibt, um ein Wort rückwärts zu löschen, wenn Sie am letzten Buchstaben sind, weil Sie in Standard-Editoren wie Notepad ++, gedit usw. einfach STRG + Rücktaste verwenden können ... außer davon vim ist ausgezeichnet.
Itmuckel
3
@ roggan87 Wenn Sie sich im letzten Buchstaben eines Wortes befinden, werden dbdie Buchstaben vor dem letzten Buchstaben gelöscht, der letzte Buchstabe bleibt jedoch erhalten.
Prashanth Chandra
2
Können Sie erklären, was die iund ain der Mitte dieser Befehle tun? Ich weiß, dass der führende d"Löschen" ist, und ich nehme an, dass der nachfolgende w"Wort" ist.
Carl G
1
@CarlG Die beste Erklärung ist in :help text-objects. Der erste Absatz ist sehr kurz und ich denke, er beschreibt ihn sehr gut.
Randy Morris
5
<kbd> i </ kbd> ist "inner" und <kbd> a </ kbd> ist "a", wie in "a word". Ersteres enthält kein einschließendes Leerzeichen, während letzteres ein nachfolgendes Leerzeichen enthält, falls vorhanden, andernfalls ein vorangestelltes Leerzeichen. Sehr hilfreich, danke.
Carl G
25

Im Einfügemodus:

  • ^ w
  • ^ u
  • kann nicht aus meinem Kopf antworten ;-)

Andernfalls:

  • dw
  • v0x
  • kann nicht aus meinem Kopf antworten ;-)
Michael Krelin - Hacker
quelle
Ich wusste nicht, dass ich Wörter im Einfügemodus in Vim löschen kann. Das hilft sehr.
Đỗ Tiến
18

Im Befehlsmodus:

  1. bdw, zurück Wort löschen.
  2. d^(zum ersten nicht leeren), d0(zum ersten Zeichen)
  3. BdW (gehe zum ersten Leerzeichen, lösche zum nächsten Leerzeichen)

(Community-Wiki, zögern Sie nicht zu hacken.)

Zoul
quelle
14
  1. db (wenn der Cursor hinter dem Wort steht) oder bdw
  2. d0(oder d^wenn Sie zum ersten nicht leeren Zeichen löschen möchten)
  3. dEoder dtSpacezum Löschen in das erste Leerzeichen oder d/\sEnterzum Löschen in das nächste Leerzeichen.

Bearbeiten

Da die Frage so geändert wurde, dass 3 auf das erste Leerzeichen links gelöscht wird, sollte sich meine Antwort ändern in:

  1. dBoder dShiftTSpaceum zum ersten Leerzeichen zurückzukehren oder d?\sEnterum zum vorherigen Leerzeichen zu löschen.

Sehen:

:help motion.txt
:help WORD
DrAl
quelle
Guter Anruf bei # 3. Ich war mir nicht sicher, wie ich mit Leerzeichen umgehen sollte. Es ist erwähnenswert, dass dF <SPACE> bis einschließlich <SPACE> gelöscht wird, während dT <SPACE> das <SPACE> dort belässt.
Mark Biek
Kam hierher auf der Suche nach so etwas bdw. Das verbleibende Zeichen (das ursprünglich unter dem Cursor) von dbnervte mich immer wieder.
Deiwin
8

Ich bin der Meinung, dass keine der Antworten vollständig ist:

Im Allgemeinen starten Sie einen Löschvorgang normalerweise mit d<motion>und selten mit x.

Hinweis: Wenn Nnicht angegeben, verhält es sich wie N=1(löscht ein einzelnes Zeichen)

Diskrete Zeichen:

<N>x - Löschen Sie N Zeichen rechts

d<N><left-arrow> - Löschen Sie N Zeichen links

d<N><right-arrow> - Löschen Sie N Zeichen rechts

Wortgrenzen:

Hinweis: Das erste vorhergehende / nachfolgende Wort befindet sich unter dem Cursor

d<N>b - Löschen Sie vom Anfang des vorhergehenden N-ten Wortes bis zur aktuellen Position

d<N>e - Von der aktuellen Position bis zum Ende des nachfolgenden N-ten Wortes löschen

d<N>w- Wie d<N>eabereinschließlich nachfolgendem Leerzeichen

diw - Löschen Sie das gesamte Wort unter dem Cursor

daw- Wie, diwjedoch einschließlich nachfolgendem Leerzeichen

Liniengrenzen:

d0 - Löschen Sie vom Zeilenanfang bis zur aktuellen Position

d^ - Löschen Sie vom ersten Nicht-Leerzeichen an die aktuelle Position

d$ - Von der aktuellen Position bis zum Zeilenende löschen

Daniel Trugman
quelle
1

/ <CR>x

(Suche nach einem Leerzeichen vorwärts, drücke die Eingabetaste, um dorthin zu gelangen, x zum Löschen)

Es mag einen magischeren Weg geben, aber ich kenne keinen.

brettkelly
quelle
Wenn Sie das erste Leerzeichen links löschen möchten, klicken Sie auf? anstelle von / in meinem Beispiel.
brettkelly