Was ist in Vim der Befehl, um die Einrückung aller Zeilen zu korrigieren?
Oft kopiere ich Code und füge ihn in ein Remote-Terminal ein und lasse das Ganze durcheinander bringen. Ich möchte das auf einen Schlag beheben.
vim
vi
indentation
mmcdole
quelle
quelle
Antworten:
=
kann der Einrückungsbefehl Bewegungen annehmen. Also,gg
um den Anfang der Datei=
zu bekommen, umG
bis zum Ende der Datei einzurücken ,gg=G
.quelle
''
(zwei einfache Anführungszeichen) bringt dich zurück zu dem Ort, an dem du warst,gg=G''
sollte also einrücken und dann zurückkehren.Versuchen Sie es vor dem Einfügen in das Terminal
:set paste
und dann,:set nopaste
wenn Sie fertig sind. Dadurch werden der automatische Einzug, der Zeilenumbruch und andere Funktionen deaktiviert, die Ihre Paste durcheinander bringen.edit: Außerdem sollte ich darauf hinweisen, dass ein viel besseres Ergebnis als das
=
Einrücken normalerweise mit einem externen Programm erzielt werden kann. Zum Beispiel laufe ich die:%!perltidy
ganze Zeit.astyle
,cindent
Etc. können auch verwendet werden. Natürlich können Sie diese einem Tastenanschlag zuordnen und je nach Dateityp unterschiedliche Tastenanschläge zuweisen.quelle
equalprg
Option in einem ftplugin so einstellen=
, dass anstelle eines benutzerdefinierten Tastenbelegs ein externer Filter zum Einrücken verwendet wird.formatpgm
mit ordentlich und Astyle und danngq
. Hier sind einige Beispiele aus meinem.vimrc
:au FileType xml set fp=tidy\ -q\ -i\ -xml
undau FileType java set fp=/usr/local/bin/astyle\ --mode=java\ --indent=tab
Wenn Sie den Block, in dem Sie sich befinden, erneut einrücken möchten, ohne Akkorde eingeben zu müssen, haben Sie folgende Möglichkeiten:
quelle
=aB
was den Cursor überhaupt nicht bewegt.[[=]]
sind 5 Akkorde erforderlich :(Der Meister aller Befehle ist
gg=G
Dies rückt die gesamte Datei ein!
Im Folgenden finden Sie einige einfache und elegante Befehle zum schnellen Einrücken von Zeilen in Vim oder gVim.
Zum Einrücken aller Zeilen unterhalb der aktuellen Zeile
Einrücken der aktuellen Zeile
n
Zeilen unterhalb der aktuellen Zeile einrückenZum Beispiel, um 4 Zeilen unterhalb der aktuellen Zeile einzurücken
Um einen Codeblock einzurücken, gehen Sie zu einer der geschweiften Klammern und verwenden Sie den Befehl
quelle
Sie können ordentliche Anwendungen / Dienstprogramme verwenden, um HTML- und XML-Dateien einzurücken, und es funktioniert ziemlich gut beim Einrücken dieser Dateien.
Verschönern Sie eine XML-Datei
Verschönern Sie eine HTML-Datei
quelle
Drücken Sie die Esc-Taste und geben Sie die folgenden Kombinationen schnell ein:
quelle
1G=G
. Das sollte alle Zeilen in der Datei einrücken.1G
Nimmt Sie die erste Zeile,=
startet den automatischen Einzug undG
die letzte Zeile führt Sie zur letzten Zeile in der Datei.quelle
1gg=G
:set paste
ist dein Freund Ich benutze Kitt und kopiere am Ende Code zwischen Windows. Bevor ich auf:set paste
(und:set nopaste
) Kopieren / Einfügen eingestellt wurde, gab es mir genau aus diesem Grund Passungen.quelle
Verwenden Sie in Vim
:insert
. Dadurch bleibt Ihre gesamte Formatierung erhalten und es wird keine automatische Einrückung durchgeführt. Weitere Informationenhelp :insert
.quelle
Wenn Sie nicht mit der
:set paste
mittleren Maustaste klicken möchten ,set nopaste
können Sie auch den Inhalt der Zwischenablage einfügen:Auf diese Weise müssen Sie den normalen Modus nicht verlassen. Wenn Sie den Text einfügen müssen
+
oder*
davon abhängen, wie Sie ihn ausgewählt haben, lesen Sie:help quoteplus
.quelle
vim-autoformat formatiert Ihre Quelldateien mit externen Programmen, die für Ihre Sprache spezifisch sind, z. B. das Juwel "rbeautify" für Ruby-Dateien, das Paket "js-beautify" npm für JavaScript.
quelle
Bei komplexen C ++ - Dateien erhält vim nicht immer die richtige Formatierung, wenn der
=
Filterbefehl von vim verwendet wird . In solchen Situationen ist es daher besser, einen externen C ++ - Formatierer wie astyle (oder uncrustify ) zu verwenden, z.Die Funktion '=' von Vim verwendet standardmäßig den internen Formatierer (was nicht immer richtig ist). Sie können ihn jedoch auch mithilfe eines externen Formatierers wie astyle einstellen, indem Sie ihn wie in dieser Frage beschrieben entsprechend einrichten .
quelle
Für XML-Dateien verwende ich diesen Befehl
Sie müssen xmllint installiert haben (Paket libxml2-utils)
(Quelle: http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html )
quelle
Sie können ein Mapping erstellen, um dies für Sie zu tun.
Dieser wird die gesamte Datei automatisch einrücken und den Cursor weiterhin an der Position halten, an der Sie sich befinden:
quelle
Verwenden Sie für vi Editor: Einfügen. Dadurch bleibt Ihre gesamte Formatierung erhalten und es wird kein automatisches Einrücken eingefügt. Drücken Sie anschließend die Esc-Taste, um die tatsächlich formatierte Datei anzuzeigen. Andernfalls werden einige Müllzeichen angezeigt. wie ^ ich zB:
quelle
Wechseln Sie in vim einfach in den visuellen Modus und wählen Sie nach der Auswahl von nach oben und unten aus. Drücken Sie einfach =. Alle ausgewählten Zeilen werden eingerückt.
quelle
ggvG=
wenn du kannstgg=G
. Was war der Sinn, um die Bewegung sichtbar zu machen? Das gilt für alle Aktionen, die Bewegungen ausführen.