Wie füge ich dieselbe Codezeile X-mal ein, ändere aber jedes Mal ein Wort in der Zeile?


8

Ich schreibe HTML-Listen und möchte in der Lage sein, 10 Listenelemente automatisch einzufügen, wobei sich nur der Elementtext ändert.

Ich könnte dies mit PHP erreichen und dann nur den gerenderten HTML-Code kopieren, aber wenn es eine Möglichkeit gibt, diesen Schritt zu überspringen und direkt von Vim aus auszuführen, würde ich so viel Zeit sparen.


4
Schauen Sie sich das Plugin github.com/mattn/emmet-vim an , es könnte Ihren Anforderungen entsprechen. Andernfalls können Sie dazu ein Makro verwenden. Kennen Sie den Text im Voraus?
— nobe4

Ja, ich weiß, welchen Text ich in jedes Element einfügen möchte. Vielen Dank für den Plugin-Vorschlag. Ich werde heute Abend einen Blick nach Hause werfen und mir auch die Vim-Makros ansehen.
— Azmodeus

Antworten:


9

Für das, was Sie tun möchten, ist emmet-vim , wie nobe4 vorgeschlagen hat, die beste Wahl.

li{item $}*10<c-y>,Erweitert im Einfügemodus 10 <li>s mit item Nvorgefülltem Text. Sie beginnen mit der Bearbeitung des Inhalts des ersten. Wenn Sie sich noch im Einfügemodus befinden, wird durch Drücken <c-y>nzum nächsten Tag zum Bearbeiten gewechselt.

Wenn es sich bei Ihren Listenelementen nicht um einen sequenzwiederholten Text handelt, können Sie vim-Surround als Hilfe verwenden.

Beispielliste mit Text, der umbrochen werden muss:

abc
def
ghi

Wenn Sie mit dem Cursor irgendwo im Text beginnen, ^vip$<c-v>Stli<cr>wird jede Zeile durch Drücken von umbrochen <li></li>.

^     - move to the first column
vip   - select the paragraph
$     - Move to the last column in the selection
<c-v> - Convert the visual selection into a block. Without the
        previous $, it would only select 1 column.
St    - Start vim-surround's tag entry
li    - The tag name
<cr>  - Enter

Dies kann zu einer benutzerfreundlichen Key Map gemacht werden:

nmap <leader>li ^vip$<c-v>Stli<cr>

1
Du hast meinen Fingern viel Qual erspart. Danke mein Herr.
— Azmodeus

1
@ Azmodeus Ich bin froh, dass es geholfen hat. vim-Surround ist ein solcher Produktivitätssteigerer, dass Sie sich die Zeit nehmen sollten, den Dokumenten zu folgen. Und für den Fall, dass Sie es nicht wussten, funktioniert emmet-vim in vorkompilierten Stylesheets wie sass oder weniger. Versuchen Sie dies beispielsweise in einer scss-Datei:.col$*5>.inner
— Tommy A

2

Ich würde dies wahrscheinlich mit einem Mapping tun:

 :nmap ^B o<li></li>^[4hi

Es ist geplant, Tags einzufügen und die Einfügung dazwischen zu platzieren, damit Sie den Text eingeben, in den normalen Modus zurückkehren und dann erneut Strg-B drücken können. (PS, ^ B und ^ [werden mit ctrl_V eingegeben, aber das wussten Sie wahrscheinlich schon.) Um zehn Zeilen in einem einzigen Befehl einzufügen, können Sie verwenden

10ctrl_b

Mir war nicht klar, ob Sie eine automatische Art haben, den Elementtext tatsächlich zu erstellen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.