Як використовувати трубу для редагування файлу з vi


15

Скажімо, у мене є файл з назвою file.txt. У ньому є ім'я файлу, який я хочу редагувати за допомогою vi. Я хочу зробити щось подібне, щоб я міг редагувати файл:

cat file.txt | vi

Однак це не працює. Як це можна зробити?

Щоб уточнити речі:

Ось вміст file.txt:

textfile

Тому я хочу якось надіслати вміст file.txt до vi, щоб відбулося те саме, що і під час набору тексту vi textfile.

Зміст file.txt може змінюватися. Я хочу, щоб vi редагував той файл, який вказаний у file.txt.


Я не думаю, що vi = vim. Я не знаю, що це має значення для цього питання, але ваш тег вводить в оману.
soandos

Я думаю, що у вашому питанні ви можете задати більше. Відкриття довільно названого файлу є базовим використанням vi. тобто: vi file.txt. Ви щось намагаєтесь зробити?
camster342

vi запускає vim для OSX та інших сучасних систем Linux.
tony_sid

Насправді я намагаюся редагувати файл, ім'я якого зберігається у буфері обміну OSX. Введення pbpaste відобразить ім'я файлу. Я намагаюся редагувати цей файл, фактично не вводячи його, але використовуючи все, що зберігається у буфері обміну. У Linux немає pbpaste, але це по суті те саме, що отримати вихід з імені файлу cat.
tony_sid

встановіть, xclipа потім використовуйте xclip -oдля доступу до буфера обміну на оболонці в x11. на всякий випадок, якщо вам потрібно буде замінити pbpaste...
akira

Відповіді:


9

ви можете спробувати це:

% vi `cat file.txt`

або, щоб уникнути непотрібного використання кота:

% vi `< file.txt`

ви говорите vi (m) лише купу довільних речей. якщо ви хочете, щоб vi (m) зробив щось на кшталт "ей, відкрийте цей файл", ви повинні подати йому ті самі команди, які ви використовували б у vi (m), наприклад. щось на кшталт :e foo.txt. але це просто складніше, ніж робити те, що я запропонував.


Ті не спрацювали.
tony_sid

4
це зворотні посилання, ви ввели їх правильно? вони відкривають передплату, виконують "кота" ... якщо це не працює, спробуйте vi $(cat file.txt)
akira

О добре, це працює зараз. Дякую.
tony_sid

23

Принаймні для vim (не впевнений у vi), ви можете зробити

cat file.txt | vim -

'-' вказує vim читати з stdin.


1
Вибачте, але це не правильна відповідь. Це відкриває vim із вмістом 'textfile'. Запитуючий хоче, щоб vim відкрив сам «текстовий файл». Я б сказав, але, на жаль, у мене тут недостатньо репутації.
scubbo

гадюк прав! Моя відповідь корисніша лише для того, щоб виправити щось із stdin.
Джефф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.