Как открыть файл в VIM, используя трубу
Я использую locate
Команда очень часто.
Так что, если я запускаю следующую команду.
locate updatedb | head -1
Тогда это дает мне O/p
/usr/updatedb.conf
Интересно, есть ли такая команда, которая может позволить мне открыть этот файл напрямую?
Я надеюсь на что-то подобное.
locate updatedb | head -1 | vim
5 ответов
Вы почти закончили
$ locate updatedb | head -1 | xargs vim
иногда (под определенными терминалами) вам необходимо сбросить терминал после редактирования.
$ reset
В качестве интерактивного редактора Vim нужен как stdin, так и stdout, поэтому использование его внутри канала проблематично и заставляет Vim предупреждать об этом. Для всего одного файла подстановка процесса решает это легко:
vim "$(locate updatedb | head -1)"
Вы также можете использовать обратные метки, и это работает даже внутри самого Vim:
:edit `locate updatedb | head -1`
В дополнение к приведенному выше ответу, чтобы избежать "повреждения терминала", указанного в комментарии Якобо де Вера, используйте параметр xargs
-o
или же
--open-tty
чтобы vim предполагал, что ввод осуществляется с терминала, а не со стандартного ввода.
$ locate updatedb | head -1 | xargs -o vim
Я знаю, что это плохое решение, но я использовал это для создания псевдонима в .bashrc:
locate updatedb > /tmp/vimForTempDontTouch && vim /tmp/vimForTempDontTouch
Недостатки: некрасиво
Преимущество: нет побочных эффектов с терминалом