2009-06-23 4 views
5

Есть команда «: a», но это многострочная строка, и argdo снова запрашивает текст для каждого файла.в vim, как добавить/вставить текст с помощью argdo?

В документах упоминается глобальная команда (g/pat/command), которая будет использовать альтернативную версию «: a», которая заканчивается новой строкой, а не «.». на строке (вы можете включить новые строки, экранируя их с помощью «\»). Но я не мог заставить это работать.

Единственный способ, которым я видел это первый дергать текст, чтобы быть добавленной в именованный регистр, а затем использовать:

:argdo put x     " where x is the register 

Я надеюсь, что-то вроде

:argdo append myTextHere 

ответ

4

Непонятно, где вы пытаетесь вставить текст в буфер. Если вы хотите после текущей строки:

:argdo exe 'normal osometext' 

Вставка текста с переносами в нем:

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

эй, это довольно круто. Я видел «нормальный», но не использовал его. BTW Я нашел, что это также сработало:: argdo normal osometext – 13ren

+0

Я должен был ответить на ваш запрос для ясности: иногда я хотел бы вставить его в одну строку в каждом из файлов (например, строка 2); иногда по определенной схеме. Я, вероятно, не хотел бы делать это с точки зрения текущей строки, потому что в разных файлах он может быть другим. Но я думаю, что ваш подход достаточно прост, чтобы адаптироваться к этому, перейдя к линии или поиска шаблона, прежде чем вставлять. – 13ren

+0

Это красиво, я ЛЮБЛЮ ЭТО! Например: argdo exe 'normal zR', чтобы развернуть все вкладки. – user3751385

1

Yanking текст в vim поместит его в буфер по умолчанию, который равен ". Вы можете вставить этот буфер в режиме вставки, например, набрав <C-R>". Так что все, что вам нужно, это argdo put "

+0

Спасибо, я надеялся на что-то при этом не требуется настройка регистров. Что-то вроде:: argdo append myTextHere Я уточню вопрос. – 13ren

2

Чтобы добавить текст после строки NR 10:

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

Для добавления текста к строка 10:

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

спасибо, это похоже работоспособный. Это похоже на то, что нужно переключиться на другой уровень, чтобы сделать это (используя ваш «звонок» или «обычный» Брайана) – 13ren