Es sollte trivial sein und vielleicht sogar in der Hilfe enthalten sein, aber ich kann nicht herausfinden, wie ich es navigieren soll. Wie rücke ich mehrere Zeilen schnell in vi ein?
quelle
Es sollte trivial sein und vielleicht sogar in der Hilfe enthalten sein, aber ich kann nicht herausfinden, wie ich es navigieren soll. Wie rücke ich mehrere Zeilen schnell in vi ein?
Verwenden Sie den >Befehl. Fünf Zeilen einrücken , 5>>. Um einen Zeilenblock zu markieren und einzurücken, Vjj>um drei Zeilen einzurücken (nur Vim). Um einen geschweiften Klammernblock einzurücken, setzen Sie den Cursor auf eine der geschweiften Klammern und verwenden Sie >%oder von einer beliebigen Stelle innerhalb des Blocks >iB.
Wenn Sie Textblöcke kopieren und den Einzug eines Blocks an seiner neuen Position ausrichten müssen, verwenden Sie ]pstatt nur p. Dadurch wird der eingefügte Block am umgebenden Text ausgerichtet.
Mit dieser shiftwidth
Einstellung können Sie auch steuern, wie viele Leerzeichen eingerückt werden sollen.
shiftwidth
Einstellung erfahren Sie, wie Sie dies ändern können.Diese Antwort fasst die anderen Antworten und Kommentare dieser Frage zusammen und fügt zusätzliche Informationen hinzu, die auf der Vim-Dokumentation und dem Vim-Wiki basieren . Aus Gründen der Übersichtlichkeit unterscheidet diese Antwort nicht zwischen Vi- und Vim-spezifischen Befehlen.
In den folgenden Befehlen bedeutet "erneutes Einrücken " "Zeilen entsprechend Ihren Einrückungseinstellungen einrücken ".
shiftwidth
ist die primäre Variable, die den Einzug steuert.Allgemeine Befehle
Sie können ersetzen
{
mit}
oderB
, zum Beispiel=iB
ist ein gültiger Block indent Befehl. Schauen Sie sich "Codeblock einrücken" an, um ein schönes Beispiel für das Ausprobieren dieser Befehle zu erhalten.Denken Sie auch daran
So können Einrückungsbefehle einfach und bequem wiederholt werden.
Komplette Dateien erneut einrücken
Eine andere häufige Situation besteht darin, dass Einrückungen in einer Quelldatei behoben werden müssen:
Sie können diese Idee auf mehrere Dateien erweitern:
Oder mehrere Puffer:
Im visuellen Modus
Im Einfügemodus
Diese Befehle gelten für die aktuelle Zeile:
Ex-Befehle
Diese sind nützlich, wenn Sie einen bestimmten Zeilenbereich einrücken möchten, ohne den Cursor zu bewegen.
Einrücken mit Markern
Ein anderer Ansatz ist über Marker :
... bewegen Sie den Cursor zum Endpunkt
Variablen, die den Einzug regeln
Sie können diese in Ihrer .vimrc-Datei festlegen .
Vim verfügt über eine intelligente Einrückung basierend auf dem Dateityp. Versuchen Sie, dies zu Ihrer .vimrc hinzuzufügen:
Verweise
:help =
quelle
>}
. Vielen DankEine große Auswahl wäre:
Es ist sehr schnell und alles wird eingerückt ;-)
quelle
gg=G
nur jede Zeile ab Position 1 gesetzt. Alle Leerzeichen wurden entfernt. Gibt es noch etwas Spezifisches für XML?set cindent
sollte in vimrc sein oder laufen,:set cindent
bevor dieser Befehl ausgeführt wirdVersuchen Sie dies auch für C- Einrückungen. Sind
:help =
für weitere Informationen:={
Dadurch wird der aktuelle Codeblock, in dem Sie sich befinden, automatisch eingerückt.
Oder nur:
==
um die aktuelle Zeile automatisch einzurücken.
quelle
Tastendruck für mehr visuelle Menschen:
Befehlsmodus aufrufen:
Escape
Bewegen Sie sich zum Anfang des Bereichs, um einzurücken:
hjkl↑↓←→
Starten Sie einen Block:
v
Bewegen Sie sich zum Ende des Bereichs, um Folgendes einzurücken:
hjkl↑↓←→
(Optional) Geben Sie die Anzahl der gewünschten Einrückungsstufen ein
0..9
Führen Sie den Einzug im Block aus:
>
quelle
Der Meister aller Befehle ist
gg=G
Dies rückt die gesamte Datei ein!
Im Folgenden finden Sie einige der einfachen und eleganten Befehle zum schnellen Einrücken von Zeilen in Vim oder gVim.
Einrücken der aktuellen Zeile
==
Zum Einrücken aller Zeilen unterhalb der aktuellen Zeile
=G
n
Zeilen unterhalb der aktuellen Zeile einrückenn==
Zum Beispiel, um 4 Zeilen unterhalb der aktuellen Zeile einzurücken
4==
Um einen Codeblock einzurücken, gehen Sie zu einer der geschweiften Klammern und verwenden Sie den Befehl
=%
Dies sind die einfachsten und dennoch leistungsstarken Befehle zum Einrücken mehrerer Zeilen.
quelle
vim
, nichtvi
.vim
, mit der als verknüpft wurdevi
?Neben der bereits gegebenen Antwort und akzeptierten ist es auch möglich, einen Marker zu platzieren und dann alles vom aktuellen Cursor zum Marker einzurücken.
Geben Sie daher ein,
ma
wo Sie den oberen Rand Ihres eingerückten Blocks haben möchten , bewegen Sie den Cursor so weit wie nötig nach unten und geben Sie dann ein>'a
(beachten Sie, dass "a
" für jeden gültigen Markernamen eingesetzt werden kann). Dies ist manchmal einfacher als5>>
odervjjj>
.quelle
Gehen Sie zum Anfang des Textes
quelle
Neben den angebotenen Lösungen mache ich gerne einen Absatz nach dem anderen
>}
quelle
Wenn Sie einen Block auswählen und >zum Einrücken verwenden, kehrt dieser zum normalen Modus zurück. Ich habe dies in meiner .vimrc-Datei:
Sie können Ihre Auswahl so oft einrücken, wie Sie möchten.
quelle
Angenommen, Sie verwenden 2 Leerzeichen, um Ihren Code einzurücken. Art:
Dann:
Du hast die Idee.
( Leere Zeilen werden nicht eingerückt, was ich sehr nett finde. )
Ich fand die Antwort in der (g) vim-Dokumentation zum Einrücken von Blöcken:
:'<,'>le4
die Leerzeichen einfügen. Vielen Dank!:set number
um Toggle - Zeilennummern (sie sind weg von Standard), oder setzen Sieset number
in Ihrem vimrc.vim-prettier
anstelle der Standard-Einrückungs-Engine). Die Verwendung>
wird ansonsten die von Prettier vorgenommene Formatierung auf königliche Weise verbessern.Das Schöne an der Benutzeroberfläche von Vim ist die Konsistenz. Bearbeitungsbefehle bestehen aus dem Befehl und einer Cursorbewegung. Die Cursorbewegungen sind immer gleich:
'
.Um vim verwenden zu können, müssen Sie lernen, den Cursor zu bewegen und sich an ein Repertoire von Befehlen zu erinnern, z. B. >Einrücken (und)< Einrücken "Ausrücken").
So kann zum Einrücken der Linien von der Cursorposition bis zum oberen Rand des Bildschirms Sie tun >H, >Gauf dem Boden der Datei einrücken.
Wenn Sie anstatt zu >Htippen dH, löschen Sie denselben Zeilenblock, cHum ihn zu ersetzen usw.
Einige Cursorbewegungen passen besser zu bestimmten Befehlen. Insbesondere ist der %Befehl praktisch, um einen ganzen HTML- oder XML-Block einzurücken. Wenn in der Datei die Syntax hervorgehoben ist (
:syn on
), setzen Sie den Cursor in den Text eines Tags (wie im "i" von <div> und geben Sie ein>% wird bis zum schließenden </ div> -Tag eingerückt.So funktioniert Vim: Man muss sich nur die Cursorbewegungen und Befehle merken und wie man sie mischt. Meine Antwort auf diese Frage lautet also "Gehen Sie zu einem Ende des Zeilenblocks, den Sie einrücken möchten, und geben Sie dann den >Befehl und eine Bewegung zum anderen Ende des Blocks ein", wenn Einzug als Verschieben der Zeilen interpretiert wird, =wenn Einzug wird wie im hübschen Druck interpretiert.
quelle
Mach das:
Und fügen Sie diese Zeile hinzu:
Dies ist nur für eine CPP-Datei. Sie können dies für einen anderen Dateityp tun, indem Sie einfach den Dateityp ändern ...
quelle
Mit dem
norm i
Befehl können Sie den angegebenen Text am Zeilenanfang einfügen. So fügen Sie 10 Leerzeichen vor den Zeilen 2-10 ein:Denken Sie daran, dass am Ende des Befehls ein Leerzeichen stehen muss - dies ist das Zeichen, das wir einfügen möchten. Wir können eine Zeile auch mit einem anderen Text einrücken, um beispielsweise jede Zeile in einer Datei mit fünf Unterstrichen einzurücken:
Oder etwas noch ausgefalleneres:
Ein praktischeres Beispiel ist das Kommentieren von Bash / Python / etc-Code mit dem Zeichen #:
Zum erneuten Einrücken verwenden xstatt i. So entfernen Sie beispielsweise die ersten 5 Zeichen aus jeder Zeile:
quelle
Ein schneller Weg, dies mit zu tun
VISUAL MODE
verwendet den gleichen Prozess wie das Kommentieren eines Codeblocks.Dies ist nützlich, wenn Sie Ihre Anweisungen nicht ändern
shiftwidth
oder verwenden möchten,set
und ist flexibel genug, um mit TABS, SPACES oder anderen Zeichen zu arbeiten.-- VISUAL MODE --
:
, um zur Eingabeaufforderung zu wechselnErsetzen durch 3 führende Leerzeichen:
:'<,'>s/^/ /g
Oder durch führende Registerkarten ersetzen:
:'<,'>s/^/\t/g
Kurze Erklärung:
'<,'>
- Innerhalb des visuell ausgewählten Bereichss/^/ /g
- Fügen Sie am Anfang jeder Zeile innerhalb des gesamten Bereichs 3 Leerzeichen ein(oder)
s/^/\t/g
- Fügen SieTab
am Anfang jeder Zeile innerhalb des gesamten Bereichs einquelle
>}
oder>{
Einzug von der aktuellen Zeile bis zum nächsten Absatz<}
oder<{
gleiches Einrückenquelle
Ich mag es, Text zum Einrücken zu markieren:
PS: Mit dieser :'a,'zTechnik können Sie einen Bereich für jede Operation (d, y, s /// usw.) markieren, in der Sie Linien, Zahlen oder verwenden können %.
quelle
:help left
In können
ex mode
Sie Linien verwenden:left
oder:le
um einen bestimmten Betrag auszurichten. Insbesondere:left
werden Linien im [Bereich] nach links ausgerichtet. Es setzt den Einzug in den Zeilen auf [Einzug] (Standard 0).:%le3
oder:%le 3
oder:%left3
oder:%left 3
richtet die gesamte Datei durch Auffüllen mit drei Leerzeichen aus.:5,7 le 3
richtet die Linien 5 bis 7 aus, indem sie mit drei Leerzeichen aufgefüllt werden.:le
ohne Wert oder:le 0
wird links mit einem Abstand von 0 ausgerichtet.Dies funktioniert in Vim und gVim.
quelle
:'<,'>le4
die Leerzeichen einfügen. Vielen Dank!Für mich war die MacVim (Visual) -Lösung, wählen Sie mit der Maus und drücken Sie ">", aber nachdem Sie die folgenden Zeilen in "~ / .vimrc" eingefügt haben, da ich Leerzeichen anstelle von Tabulatoren mag:
Es ist auch nützlich, MacVim über die Befehlszeile (Terminal.app) aufrufen zu können. Da ich also das folgende Hilfsverzeichnis "~ / bin" habe, platziere ich ein Skript namens "macvim":
Und natürlich in "~ / .bashrc":
MacPorts spielt viel mit "~ / .profile", so dass die Umgebungsvariable PATH ziemlich lang werden kann.
quelle
5==
wird fünf Zeilen von der aktuellen Cursorposition einrücken.Sie können also vorher eine beliebige Nummer eingeben
==
. Die Anzahl der Zeilen wird eingerückt. Dies ist im Befehlsmodus.gg=G
wird die gesamte Datei von oben nach unten einrücken.quelle
Ich habe in den Kommentaren keine Methode gefunden, die ich verwende, also werde ich sie teilen (ich denke nur Vim):
Dies ist nützlich, wenn Sie die Einstellungen für Einrückungen / Registerkarten in nicht ändern möchten
vimrc
oder sich daran erinnern sie diese während der Bearbeitung ändern.Zum Einrücken verwende ich den gleichen Ctrl+ VBlock, um Leerzeichen auszuwählen und mit zu löschen D.
quelle
Ich weiß nicht, warum es so schwierig ist, eine einfache Antwort wie diese zu finden ...
Ich selbst musste viel kämpfen, um das zu wissen. Es ist sehr einfach:
.vimrc
Datei im Home-Verzeichnis.Fügen Sie diese Zeile hinzu
in Ihrer Datei, in der Sie richtig einrücken möchten.
Im Normal- / Befehlsmodus eingeben
quelle
Zum Beispiel,
Erhöhen Sie das Symbol '>' für weitere Registerkarten.
Zum Beispiel,
quelle
:set number
um Toggle - Zeilennummern (sie sind weg von Standard), oder setzen Sieset number
in Ihrem vimrc.Wenn ich Python häufig benutze, muss ich häufig Blöcke um mehr als einen Einzug verschieben. Sie können dies tun, indem Sie eine der Blockauswahlmethoden verwenden und dann einfach die Anzahl der Einrückungen eingeben, die Sie direkt vor dem springen möchten
>
Zum Beispiel
V5j3>
werden fünf Zeilen dreimal eingerückt - das sind 12 Leerzeichen, wenn Sie vier Leerzeichen für Einrückungen verwenden.quelle
Um jede Zeile in einem Dateityp einzurücken, Escund dann G=gg.
quelle
So rücken Sie markierten Code in vi sofort um mehrere Leerzeichen ein:
Option 1: Einen Codeblock in vi im Visual Block-Modus in drei Leerzeichen einrücken:
Wählen Sie den Codeblock aus, den Sie einrücken möchten. Verwenden Sie dazu den Ctrl+Vnormalen Modus und den Pfeil nach unten, um Text auszuwählen.
:
Geben Sie bei Auswahl diesen Befehl ein, um dem Block des ausgewählten Texts einen Befehl zu erteilen.In der Befehlszeile wird Folgendes angezeigt:
:'<,'>
Um den Einzug auf drei Leerzeichen zu setzen, geben Sie ein
le 3
und drücken Sie die Eingabetaste. Folgendes erscheint::'<,'>le 3
Der ausgewählte Text wird sofort in drei Leerzeichen eingerückt.
Option 2: Einen Codeblock in vi im Visual Line-Modus in drei Leerzeichen einrücken:
Seien Sie im normalen Modus und drücken Sie die folgenden Tasten:
Interpretation dessen, was Sie getan haben:
V
bedeutet, Text auszuwählen.jjjj
Pfeile vier Zeilen nach unten, wobei vier Zeilen hervorgehoben werden.:
teilt vi mit, dass Sie eine Anweisung für den hervorgehobenen Text eingeben werden.le 3
bedeutet, dass hervorgehobener Text drei Zeilen eingerückt wird.Der ausgewählte Code wird sofort auf drei Leerzeichen erhöht oder verringert.
Option 3: Verwenden Sie den Visual Block-Modus und den speziellen Einfügemodus, um den Einzug zu erhöhen:
Im normalen Modus die folgenden Tasten drücken:
Ctrl+V
(Drücken Sie fünfmal die Leertaste)
Esc Shift+i
Der gesamte hervorgehobene Text wird um weitere fünf Leerzeichen eingerückt.
quelle
Ich verwende die visuelle Auswahl im Blockmodus:
I
( Shift+ I), um den Einfügemodus aufzurufen.Dies ist kein Uni-Tasker. Es klappt:
c
anstelle vonI
).quelle
vim-prettier
anstelle der Standard-Einrückungs-Engine). Die Verwendung>
wird ansonsten die von Prettier vorgenommene Formatierung auf königliche Weise verbessern.Für einen Codeblock {}: =+%
Für eine ausgewählte Zeile: Shift+ vWählen Sie mit den Aufwärts- / Abwärtspfeiltasten und drücken Sie dann =.
Für die gesamte Datei: gg+ =+G
Hinweis: 'gg' bedeutet, dass Sie zu Zeile 1 gehen, '=' der Einrückungsbefehl ist und 'G' den Cursor an das Ende der Datei bewegt .
quelle
So rücken Sie die gesamte Datei um vier ein:
quelle
Quelle: https://www.fir3net.com/UNIX/General/how-do-i-tab-multiple-lines-within-vi.html
quelle