2009-06-23 6 views
5

Es gibt den ": a" -Befehl, aber das ist mehrzeilig, und Argdo fragt Sie erneut nach dem Text für jede Datei.in vim, wie man Text mit argdo anfügt/einfügt?

Die Dokumente erwähnen den globalen Befehl (g/pat/command), der eine alternative Version von ": a" verwendet, die durch einen Zeilenvorschub anstelle von "." in einer Zeile (Sie können Zeilenumbrüche einfügen, indem Sie sie mit "\" trennen). Aber ich konnte das nicht zur Arbeit bringen.

Der einzige Weg, den ich gesehen habe, ist zunächst der Text-to-be-added in einem benannten Register zerren, dann verwenden:

:argdo put x     " where x is the register 

Ich hoffe, für so etwas wie

:argdo append myTextHere 

Antwort

4

Ich bin unklar, wo Sie den Text in den Puffer einfügen möchten. Wenn Sie es nach der aktuellen Zeile wollen:

:argdo exe 'normal osometext' 

Text einfügen mit Zeilenumbrüchen in es:

:argdo exe "normal osometext\<CR>anewline" 
+0

Hey, das ist ziemlich cool. Ich habe "normal" vorher gesehen aber nicht benutzt. BTW Ich fand, dass dies auch funktionierte:: argdo normal osometext – 13ren

+0

Ich hätte deine Bitte auf Klarheit beantworten sollen: manchmal würde ich es in derselben Zeile in jeder der Dateien einfügen wollen (zB Zeile 2); manchmal nach einem bestimmten Muster. Ich würde es wahrscheinlich nicht in Bezug auf die aktuelle Zeile machen wollen, weil es in den verschiedenen Dateien anders sein könnte. Aber ich denke, Ihr Ansatz ist leicht genug, um sich daran anzupassen, indem Sie zu einer Linie gehen oder nach einem Muster suchen, bevor Sie einfügen. – 13ren

+0

Das ist schön, ich LIEBE DIESES! Zum Beispiel: argdo exe 'normal zR' um alle Tabs zu entfalten. – user3751385

1

Wenn Sie einen Text in vim markieren, wird er in den Standardpuffer eingefügt, der " lautet. Sie können diesen Puffer im Einfügemodus einfügen, indem Sie beispielsweise <C-R>" eingeben. Alles, was Sie brauchen, ist argdo put "

+0

Danke, ich hatte auf etwas th gehofft bei der Einrichtung von Registern nicht beteiligt. Etwas wie:: argdo append myTextHere Ich werde die Frage klären. – 13ren

2

Um Text nach Linie nr 10 anhängen:

:argdo call append(10, "hello world") 

Um Text zu dem Anfügen Linie 10:

:argdo call setline(10, getline(10)."textappended") 
+0

danke, das scheint praktikabel. Es sieht so aus, als müsste man zu einem anderen Level wechseln (entweder mit "Call" oder Brians "normal") – 13ren