2011-02-01 3 views
11

Я делаю поиск $ PWD-имя 'filename' | vim -перенаправление вывода команды 'find' в 'vim'

Ожидается, что файл будет открыт в редакторе vim. Но это не работает. В этом случае я уверен, что существует только один файл с именем «filename».

Также результат поиска дает полный путь к стандарту.

+0

Использование команды 'command | vim -' сообщает vim читать вывод из 'command' и помещает его в буфер. (В отличие от открытия этих файлов.) – idbrii

+0

@pydave Я пропустил '-' в вашем комментарии. Важный! –

+1

@pydave Кстати, 'vim <(command)' делает то же самое, используя замену процесса Bash, и это работает не только с vim. например чтобы увидеть различия между двумя каталогами, используйте 'diff <(ls -l dir1) <(ls -l dir2)' –

ответ

20
vim "$(find "$PWD" -name 'filename')" 

или

find "$PWD" -name 'filename' -exec vim {} \; 

(Вы можете оставить "$PWD", кстати. find начинает поиск с текущего каталога по умолчанию.)

+0

Спасибо, Роман .. это помогло .. –

+1

Это не работает для меня. 'vim '$ (найти" $ PWD "-name' filename ')" 'открывает новый файл whos name является конкатенацией всех файлов, выводимых из find. Это на OSX. –

+0

Ах. ОП указывает, что имеется только один соответствующий файл. Поэтому мое возражение уменьшается. –

7

find . -name 'filename' -print0 | xargs -0 vim

также должны работать. Возможно, вы захотите прочитать на xargs, что полезно знать.

+1

Это не работает для меня. 'найти. -name 'utility' -print0 | xargs -0 vim' вместо этого открывает один новый файл, имя которого является конкатенацией вывода из find. Это на OSX. –

+0

Ах. ОП указывает, что имеется только один соответствующий файл.Поэтому мое возражение уменьшается –

0

Упоминается в комментариях @ idbrii, но мой любимый:

find . -name 'filename' -type f -exec vim {} \+ 

Это открывает каждый найденный файл в своем собственном буфере, готовом перемещаться с :next и :prev. Протестировано на OSX, но я уверен, что он тоже будет работать на Linux.

Смежные вопросы