Makro für nummerierte Listen in vim?
Oft scheint es, habe ich eine Liste der Elemente, und ich muss hinzufügen, die zahlen vor Ihnen. Zum Beispiel:
Item one
Item two
Item three
Werden sollten:
1. Item one
2. Item two
3. Item three
In vim, ich kann drücken I
im edit-Modus, legen Sie "1.", Treffer zu entkommen. Dann gehe ich in die nächste Zeile, drücken Sie .
, und dann ^A
erhöhen die Anzahl. Dies scheint äußerst ineffizient... wie würde ich ein makro machen, damit ich gehen kann, um die nächste Zeile, und fügen Sie eine Zahl am Anfang, die um eins größer ist als die Zeile vor?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ganz einfach ein makro aufzeichnen, um es zu tun.
Legen Sie zuerst
1.
am Anfang der ersten Zeile (es gibt ein paar Leerzeichen nach den1.
aber man kann Sie nicht sehen).Gehen Sie an den Anfang der zweiten Zeile und gehen Sie in den Aufnahmemodus mit
qa
.Drücken Sie die folgende Tastenfolge:
Nun können Sie die Wiedergabe der Aufnahme mit
@a
(das erste mal; für spätere Zeiten, die Sie tun können@@
wiederholen die zuletzt ausgeführte makro) und es wird eine neue inkrementierten Zahl zu Beginn jeder Zeile.3@a
ausführen das makro 3 malk^yWjP^<ctrl-a>j
statt. Der text kann nicht an den start der Linie, und noch wichtiger dein makro funktioniert nicht nach der zehnten Zeile.^
danach.:h
auf jedem Teil des Makros zu wissen, was es tut. Dann funktioniert es auch hier.k
-> Vorherige Zeile^
-> Anfang der LinieyW
-> muss ich dies ein???,j
-> bewegt den cursor auf die nächste Zeile,P
-> sollten Sie wissen, was Sie tut, wenn Sie ein vim Benutzer^
-> Anfang der Zeile wieder<C-A>
ist die eine, die nicht den job hier : es erhöht die Zahl unter dem cursor, undj
-> nächste Zeile wieder.Wählen Sie Ihre Linien in den visuellen Modus mit:
V
, dann Typ:Ist einfach zu setzen in einem Befehl:
}
Funktionalität, sondern wegen der Art, es zu tun-Linie zu zählen, allein der Austausch^
mit\n\n
würde nicht schneiden es. Schade, sonst wäre es in meinen.vimrc
. Guten code, wie auch immer, ich war nicht bewusst\=()
- und ich kann es nicht finden in der vim-Hilfe!:h sub-replace-\=
:xnoremap
hier, um nicht Durcheinander den select-Modus -- das ist die eine, die von den meisten snippets plugins.:UnNumberLines
ist viel einfacher:command! -nargs=0 -range=% UnNumberLines <line1>,<line2>s/\d\+\. //g
Gibt es auch einige plugins, die das tun, diese Art von Arbeit, wenn Sie es zu tun haben bei Gelegenheit:
http://vim.sourceforge.net/scripts/script.php?script_id=670
Können Sie die 'record' - Funktion.
Es ist eine einfache Möglichkeit zur Aufzeichnung von Makros in Vim.
Finden Sie unter :Hilfe-Datensatz
Im normal-Modus 'qa' um die Aufnahme zu starten, was Ihnen in der 'a' - register
Geben Sie den erforderlichen Befehl zum einfügen einer Zahl am Anfang der Zeile, kopieren Sie Sie in die nächste Zeile und verwenden Sie STRG-A, um seinen Wert zu erhöhen.
'q' zum beenden der Aufzeichnung
dann '@a' auf replay das makro gespeichert in register 'a'
('@@' wiederholt das Letzte makro).
Und Sie können Dinge tun, wie '20@a' zu tun, es zwanzig mal hintereinander.
Ist es ziemlich praktisch zu wiederholen, text-änderung.
Je nach Fall ist es einfacher oder schwieriger zu benutzen als ein regexp.
Vielleicht ist es nicht ein makro-Lösung, aber zumindest ist es einfach.
fügen Sie zahlen zu allen Linien
Ist es möglich
:%!nl -ba
oder:%!cat -n
- Befehle, die Zeilennummern hinzufügen, um alle Linien.unter Windows hast du zu Cygwin/MSYS/SUA installiert.
Nummer hinzufügen, um die ausgewählten Linien
Nummer hinzufügen, nur für ausgewählte Zeilen, bitte wählen Sie Sie im visuellen Modus (v und Cursor), dann, wenn Sie fertig sind - ausführen den Befehl:
:%!nl
(Ignoriere leere Zeilen) oder:%!cat -n
(Leerzeilen eingeschlossen).Formatierung
Entfernen Sie zusätzliche Leerzeichen, wählen Sie in visual block (Strg+v) und entfernen Sie diese (x).
Fügen Sie einige Zeichen (
.
,:
,)
) nach den zahlen, wählen Sie in visual block (Strg+v), dann fügen Sie die Zeichen (A, geben Sie den Charakter, beenden Sie dann mit Esc)..
) können Sie:'<,'>normal a.
auf ausgewählten Linien. Wie die Auswahl zuvor getan wurde, wiederholen Sie es mitgv
.Einfügen einer Zahl am Anfang des Blocks der text zB.
1. Item One
Geben Sie die vim-normal-Modus-Befehl wie folgt:
Bedeutet dies:
Was dies ermöglicht es Ihnen zu tun, ist replay das makro über die Letzte Zeile " nummerierte Liste so oft wie nötig.