Befehl zum "Ende der letzten Zeile mit Inhalt im Einfügemodus"

410
sundar

Wenn ich sie mit Klartextdateien wieder in Vim öffne, um Inhalt hinzuzufügen, möchte ich zum Ende der letzten Zeile des Inhalts gehen und in den Einfügemodus gelangen. Im Idealfall kann dies durch ein einfaches GAÖffnen der Datei erledigt werden. Leider habe ich die Angewohnheit, am Ende der Datei ein paar zusätzliche Zeilenumbrüche hinzuzufügen, und es ist schwierig, sie loszuwerden.

Was ist in diesem Zusammenhang der einfachste Weg in Vim zu sagen: "Gehen Sie zur letzten Zeile in der Datei, die Inhalt enthält, gehen Sie zum Ende dieser Zeile und wechseln Sie in den Einfügemodus"? Ich denke, der Kern meiner Frage ist, wie drücke ich Vim das Konzept der "letzten Zeile mit Inhalt" aus?

2

3 Antworten auf die Frage

1
Lieven Keersmaekers

Sie könnten ?\w entergefolgt von verwendenA

  • ?\w sucht rückwärts nach dem ersten Wort
  • A versetzt Sie in die letzte Zeile mit Inhalt in den Einfügemodus
Einfach und genial. Vielen Dank! Um der Nachwelt willen habe ich festgestellt, dass Ctrl-End auch den Cursor an das Ende der letzten Zeile bewegt - aber ich bevorzuge diese Lösung, da sie der Vim-Norm entspricht und die Hand nicht von der Home-Reihe bewegt. Ich füge dies als `map`ping zu meiner vimrc hinzu, vielleicht` nnoremap \ wA`. sundar vor 8 Jahren 1
1
meuh

Wenn Sie immer zur letzten Nicht-Whitespace-Zeile einer Datei oder zu einer bestimmten Art von Datei gehen möchten, können Sie eine Autocmd in Ihre einfügen ~/.vimrc. Zum Beispiel:

:autocmd BufRead *.txt :$;?\S? 

Dies geht automatisch zum Ende der Datei und sucht nach einem Zeichen, das kein Whitespace ist, für jede Datei, die dem Glob-Muster entspricht *.txt. Sie geben dann obeispielsweise ein, um Sachen hinzuzufügen.

Dieselbe Technik kann verwendet werden, um Leerzeilen zu entfernen, die Sie am Ende von Puffern hinterlassen, wenn Sie sie in die Datei zurückschreiben, wodurch das Problem von vornherein vermieden wird . Zum Beispiel:

:autocmd FileType python autocmd BufWritePre <buffer> :%s/\(\n\s*\)\+\%$//e 

Dieses Beispiel gilt nur für Dateien, die als Dateityp Python erkannt werden (z. B. das Suffix .py).

Ich akzeptierte Lievens Antwort, da sie besser zu meinem Arbeitsstil passt, aber Ihre Antwort ist die allgemeinere und eine, die mehr Gelegenheiten für zukünftige Leser bietet. Vielen Dank, dass Sie sie hinzugefügt haben. sundar vor 8 Jahren 0
0
aparente001

Ich habe noch nie in Vim gearbeitet, aber ich werde etwas Logik vorschlagen:

  • Gehe zum Dateiende
  • Einen Charakter sichern
  • Ersetzen Sie den Zeilenumbruch durch eine leere Zeichenfolge. Wiederholen Sie den Vorgang bei Erfolg. wenn nicht, sind wir fertig.