Как открыть файл в VIM, используя трубу


15

Я использую locateкоманду очень часто.

Так что, если я запускаю следующую команду.

locate updatedb | head -1

Тогда это дает мне O/p

/usr/updatedb.conf

Интересно, есть ли такая команда, которая позволяет мне открыть этот файл напрямую?

Я надеюсь на что-то подобное.

locate updatedb | head -1 | vim

Ответы:


22

Вы почти закончили

$ locate updatedb | head -1 | xargs vim

иногда (под определенными терминалами) вам необходимо сбросить терминал после редактирования.

$ reset

2
Скорее всего , ваша версия locateесть -l/ --limit/ -nвариант , так что вам не нужно head -1:locate -n 1 updatedb | xargs vim
Дмитрий Александров

1
Почему происходит эта терминальная коррупция? Есть ли способ избежать этого?
Якобо де Вера

16

В качестве интерактивного редактора Vim нужен как stdin, так и stdout, поэтому использование его внутри канала проблематично и заставляет Vim предупреждать об этом. Для всего одного файла подстановка процесса решает это легко:

vim "$(locate updatedb | head -1)"

Вы также можете использовать обратные метки, и это работает даже внутри самого Vim:

:edit `locate updatedb | head -1`

Это также работает со строками с пробелами, что хорошо для имен файлов, таких как «версия 2 - final.csv».
Алекс Мур-Ниеми

0

Я знаю, что это плохое решение, но я использовал это для создания псевдонима в .bashrc:

locate updatedb  > /tmp/vimForTempDontTouch && vim /tmp/vimForTempDontTouch

Недостатки: некрасиво

Преимущество: нет побочных эффектов с терминалом

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.