Вопрос Как использовать канал для редактирования файла с помощью vi


Допустим, у меня есть файл с именем file.txt. В нем есть имя файла, который я хочу редактировать с помощью vi. Я хочу сделать что-то подобное, чтобы я мог редактировать файл:

cat file.txt | vi

Однако это не работает. Как это можно сделать?

Чтобы прояснить ситуацию:

Вот содержимое file.txt:

textfile

Поэтому я хочу как-то отправить содержимое файла file.txt в vi, чтобы то же самое происходило, как при наборе текста vi textfile,

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


15
2018-05-31 04:57


происхождения


Я не думаю, что 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


ответы:


вы можете попробовать следующее:

% vi `cat file.txt`

или, чтобы избежать использования усела кошки:

% vi `< file.txt`

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


9
2018-05-31 05:06



Это не сработало. - tony_sid
это обратные шаги, вы набрали их правильно? они открывают подоболочку, выполняют «кошку» ... если это не работает, попробуйте vi $(cat file.txt) - akira
О, хорошо, теперь это работает. спасибо. - tony_sid


По крайней мере, для vim (не уверен в vi), вы можете сделать

cat file.txt | vim -

«-» говорит vim читать со stdin.


23
2017-10-18 22:49



Извините, но это неправильный ответ. Это открывает vim с содержимым «textfile». Вопросник хочет, чтобы vim открыл сам «текстовый файл». Я бы спустил, но, к сожалению, у меня не хватает репутации. - scubbo
scubbo правильно! Мой ответ более полезен только для того, чтобы просто контактировать что-то с stdin. - Jeff