в vim, как установить "args" в результате "grep -l"? - PullRequest
11 голосов
/ 23 июня 2009

Чтобы проиллюстрировать, вот как это сделать из командной строки:

vim `grep "hello" * -Rl`

Это открывает vim со всеми файлами, в которых есть «привет» (-l дает только имена файлов). Я хочу сделать то же самое, но изнутри vim. Концептуально, что-то вроде этого (что не работает):

:args !grep "hello" * -Rl

Я открыт для совершенно разных подходов к достижению этой цели; Мне бы хотелось, чтобы он был в одной строке (чтобы его можно было легко редактировать и повторять).


Ответ заключается в простом использовании обратных галочек - , но с ключевым условием! Нижеследующее не работает для меня из-за кавычек вокруг hello:

:args `grep "hello" * -Rl`

Но это работает, если я уберу их или уйду от кавычек:

:args `grep hello * -Rl`
:args `grep \"hello\" * -Rl`

(это было скрыто в комментариях после ответа хаоса - я добавил их здесь, чтобы сделать их более заметными на случай, если у кого-то еще возникла эта проблема)

Ответы [ 2 ]

8 голосов
/ 23 июня 2009

Ну, это работает для меня:

:args `grep -Rl "hello" *`

Запуск vim 7.0.305.

3 голосов
/ 23 июня 2009

Попробуйте команду args:

:ar[gs] `grep -Rl "hello" .`

Если обратные пометки не работают для вас, используете ли вы текущую версию vim?

:version
...