Внутри Vim я хочу сканировать текст по строкам и передать его содержимое внешней команде оболочки. Например, у меня есть список имен и хочу приветствовать каждое имя списка. Что мне уже удалось сделать, так это следующее.Передача аргумента в vim «выполнить»
Учитывая этот текст:
John Doe
Jane Doe
Baby Doe
я могу использовать эту команду, чтобы найти имя только и повторно использовать маркер в качестве замены команды с использованием синтаксиса обратной ссылки (\ 0 или \ 1).
:%g/\w\+/ s//--\0--/
Это выход:
--John-- Doe
--Jane-- Doe
--Baby-- Doe
То, что я хотел бы сделать сейчас, чтобы изменить свою команду «заменить» для «выполнения» команды оболочки.
Эта команда
:% г/\ ш \ +/ехе "мир"
работает отлично, но как спараметрировать это "эхо привет!"?
До сих пор, я попытался это:
:% г/\ ш \ +/ехе "эхо-привет!" \ 0
и это тоже:
:% г/\ ш \ +/ехе "! эхо привет" &
без успеха ...
Этот вопрос имеет большую ценность, поскольку вы могли бы, начиная с Vim, сканировать текст, содержащий список каталогов, и создавать их на лету.
HTTP: // VIM .wikia.com/wiki/Power_of_g имеет несколько примеров. – bishop
Специально этот: http://vim.wikia.com/wiki/Redirect_g_search_output – dNitro