Autoindent-Einstellungen in VIMRC-Datei anpassen

854
Shane Reustle

Ich habe Autoindent in meiner .vimrc-Datei aktiviert, habe aber einen nervenden Fehler / eine störende Funktion gefunden. Wenn ich zum Beispiel dreimal Tabstopps mache und die Eingabetaste drücke, wird die neue Zeile auch 3 Mal Tabulatoren angezeigt. Wenn ich dann erneut die Eingabetaste drücke, wird diese neue Zeile ebenfalls 3-mal eingerückt, wie es sollte. Das Problem tritt auf, wenn ich zur vorherigen Zeile (der ersten der zwei neuen Zeilen) gehe. VIM entfernt das Leerzeichen automatisch, da es als leere Zeile erkannt wurde.

Gibt es eine Möglichkeit, dies zu verhindern? Ich möchte in der Lage sein, auf die Codierung wie folgt zurückzugreifen:

Funktionstest () { <return> <return>}<up> <right>

Vielen Dank!

1

2 Antworten auf die Frage

2
garyjohn

Ich kenne keine Optionseinstellung, durch die Vim diese Zeilen automatisch mit dem führenden Leerzeichen belässt. Die übliche Lösung ist Ihren Bearbeitungsstil zu ändern, so dass Sie nicht, dass Leerzeichen verlieren, oder einen Normal-Mode - Befehl zu verwenden, wie zum Beispiel o, Ooder Seine neue Zeile zu beginnen, so dass die Einrückungen automatisch erfolgt, oder Kraft Einrücken auf dem aktuellen Zeile im Einfügemodus mit Ctrl-Toder Ctrl-F.

Wenn Sie jedoch diese bestimmte Tastenfolge wirklich verwenden möchten und Ihre Einrückung nicht verlieren möchten, denke ich, dass diese Zuordnung funktionieren wird.

:inoremap <Return> <Space><BS><Return> 

Wenn Sie ein Leerzeichen (oder ein beliebiges Zeichen) in die Zeile setzen und dann einen Schritt nach hinten machen, sagen Sie Vim, dass es sich um eine nicht leere Zeile handelt, die den führenden Leerraum in Ruhe lässt.

0
dgo.a

Die Zuordnung von <Return> oder <CR> scheint großartig zu sein. Es hat einen Nachteil: Es macht die Verwendung von Vims automatischer Vervollständigung (<Cn>) schwieriger. Es kollidiert auch mit Plugins, die auf dem Standardverhalten basieren, z . B. Supertab .

Diese Seite: http://vim.wikia.com/wiki/Get_the_correct_indent_for_new_lines_despite_blank_lines bietet eine alternative Lösung: Hinzufügen einer Funktion, um trotz vorheriger Leerzeilen den richtigen Einzug zu erhalten.