Як відкрити файл у vim за допомогою pipe


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 "$(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.