Wie fügt man Leerzeichen in die Spalte X ein, um die Dinge in Spalten anzuordnen?
Ich habe meinen source-code für das kopieren von Operatoren wie folgt geschrieben.
foo = rhs.foo;
foobar = rhs.foobar;
bar = rhs.bar;
toto = rhs.toto;
Ich würde gerne die Linie Dinge wie folgt (mehr lesbaren, nicht wahr?).
foo = rhs.foo;
foobar = rhs.foobar;
bar = rhs.bar;
toto = rhs.toto;
Gibt es eine VIM-Magie stecken-bis-zu-Spalte-N, oder etwas ähnliches, das mir erlauben würde-Linie Dinge, die mit ein paar Anschläge pro Zeile?
InformationsquelleAutor der Frage Didier Trosset | 2011-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es ein nettes plugin, das genau das leistet und mehr, aufgerufen Ausrichten.vim
Für den Fall, würden Sie brauchen, um wählen Sie Ihren Ausdruck und geben Sie dann
:Align =
. Es wird alles ausrichten, mit=
als Trennzeichen und Referenz.(Es gibt eine Menge von Optionen, ausrichten, Links, rechts, zyklisch, etc)
Können Sie auch überprüfen,Tabellarisch.vimdie bietet ähnliche Funktionen. Sehen Sie sich den screencast dort für eine demo.
InformationsquelleAutor der Antwort Xavier T.
Den anderen Antworten hier sind toll, vor allem @nelstrom Kommentar für Tabellarischen.vim und seinem ausgezeichneten screencast.
Aber wenn ich das Gefühl zu faul zum installieren von Vim-plugins, noch irgendwie bereit zu verwenden Vim-Makros, würde ich die Verwendung von Makros.
Den Algorithmus:
Für dein Beispiel,
Positionieren Sie den cursor irgendwo auf die erste Zeile und aufzeichnen des Makros für diese Zeile von der Eingabe, im normalen Modus:
Übersetzt:
qa
-- Ein makro aufzeichnen, in hotkeya
0
-- Gehen Sie an den Anfang der Zeilef=
- Geh auf die erste Gleichheitszeichen100i <Esc>
-- (Es gibt ein einzelnes Leerzeichen nach deri
und die<Esc>
bedeutet escape-Taste, nicht der Typ "<Esc>".) Legen Sie 100 Räume8|
- Geh auf die 8. Spalte (sorry, müssen Sie manuell herauszufinden, welche Spalte ausrichten)dw
-- Löschen, bis die nächste nicht-Leerzeichenj
-- Gehen Sie zur nächsten Zeileq
-- Stoppen Sie die Aufnahme.Führen Sie dann das makro gespeichert hotkey
a
3 mal (für die 3 verbleibenden Linien), indem Sie den cursor auf die zweite Zeile, und drücken Sie:InformationsquelleAutor der Antwort TalkLittle
Wenn Sie mit einer unix-ähnlichen Umgebung, können Sie das Kommandozeilen-tool
column
. Markieren Sie Ihre Zeilen mit den visuellen Modus, dann:Diese fügt den ausgewählten text in die Standardeingabe des Befehls nach
'<,'>!
. Beachten Sie, dass'<,'>!
wird automatisch eingefügt, wenn Sie auf:
im visuellen Modus.InformationsquelleAutor der Antwort evnu
Einen schnellen, einfachen Weg zu gehen ist das hinzufügen von X Leerzeichen und dann löschen zurück zur Spalte X. Zum Beispiel, wenn X=40, Typ
InformationsquelleAutor der Antwort Patrick Sanan
Können wir diese beiden Funktionen, wie ich Sie in der unten Pfad für das gleiche Szenario : https://stackoverflow.com/a/32478708/3146151
einfach diese beiden Funktionen in Ihre .vimrc oder .gvimrc und rufen Sie die Funktionen wie normale Funktion aufrufen in den editor, Wann immer Sie wollen.
Funktionen ich habe es hier gepostet : https://github.com/imbichie/vim-vimrc-/blob/master/MCCB_MCCE.vim
Müssen wir diese Funktion aufrufen, in der vim-editor, und geben Sie die Anzahl der Vorkommen des Zeichens oder Raum, der Sie bewegen will und die Zeichen in " und die Spalte Anzahl.
Die Anzahl des Auftretens werden kann, von der ausgehend jeder Zeile (Leistungsschalter-Funktion) oder Sie können am Ende jeder Zeile (MCCE-Funktion).
für das oben genannte Beispiel in der Frage genannten können wir die Verwendung der Leistungsschalter-Funktion und dem Charakter, den wir verwenden können,'=', also die Verwendung werden, wie dies in der vim-editor.
Also wird das verschieben des ersten
=
Zeichen für die 8. Spalte von Zeile Nummer 1 bis 4.Dies sind die Funktionen :
InformationsquelleAutor der Antwort imbichie
Ich weiß, das ist alt, aber ich dachte, @talklittle hatte die richtige Idee, die Antwort habe gerade ausführlich. Eine schnellere Möglichkeit ist das einfügen von Leerzeichen nach dem " = " und dann entfernen Sie alle Leerzeichen nach dem 10ten Spalte wie folgt:
InformationsquelleAutor der Antwort Pete D
Alternative Lösung ist die Durchführung von zwei aufeinander folgenden Substitutionen:
Der trick ist, die Spalte Muster
\%>7c
entspricht Leerzeichen*
erst nach der 7. Spalte. Hierfoobar
ist die längste variable name mit6
- Zeichen, so müssen wir7
im regex.InformationsquelleAutor der Antwort Sergio