Я использую grep -e Peugeot -e PeuGeot carlist.txt
для поиска через carlist.txt и вытащить некоторые элементы, и я предположил, что это grep -e Peugeot -e PeuGeot carlist.txt | vi
будет через меня, но это то, что я получаю:
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
:read !grep -e Peugeot -e PeuGeot carlist.txt
.:read !cmd...
включит вывод cmd ... в файл (в месте нахождения курсора)grep ... > /tmp/foo
. Вы можете добавить&& vi /tmp/foo
в конце, если вы хотите редактировать этот файл немедленно.vi
работает с произвольными текстовыми файлами; Сами файлы не связаны напрямую сvi
. (Или, как я только что узнал,vi -
заставитvi
оперировать содержимымstdin
;vim
делает это, но не все версииvi
делают.)Ответы:
Запуск vi или vim с '-' в качестве аргумента заставляет его читать файл для редактирования из стандартного ввода. Следовательно:
будет делать то, что вам нужно.
источник
stdin
. В некоторых случаях вам придется перенаправлять отstderr
кstdin
, например:valgrind my_file.out 2>&1 | vi -
grep
раскраска поиска (состоящая из непечатных символов) внутри Vim? Вы всегда можете просто выполнить поиск в Vim.Вы должны использовать перенаправление вывода :
Кроме того, я думаю, что вы
grep
можете улучшить:источник
Кроме того
vim -
, вы можете также использовать подстановку процесса, используя<(command)
синтаксис, например:Смотрите также:
источник
Перенаправление вывода также можно использовать так:
Даже несколько выходов команды могут быть перенаправлены, как если бы они были сохранены в отдельных файлах:
источник
В
~/bin/r
:в
~/.vimrc
:Затем:
и у меня есть
по моему
~/.bashrc,
такисточник
Есть много эффективных способов сделать то, что вы хотите, либо в vi (m), либо вне vi (m).
Запустите вашу команду, создайте (временный) файл, затем отредактируйте файл ( см. Ответ Джозефа Р. )
Запустите вашу команду (в фоновом режиме), чтобы создать временный файл, и отредактируйте файл, используя «: e!» обновить ваш файл по мере его создания (это полезно для файлов журналов и других файлов, создаваемых другим процессом, например, cron?),
Запустите vi (m) и запустите дочерний процесс, чтобы создать временный файл, а затем прочитайте его,
Или просто переключитесь на файл,
Запустите vi (m) и используйте двойной удар "!!" чтобы vi запустил дочернюю команду, взяв результаты и вставив их в текущее местоположение (перезаписывает текущую строку, поэтому убедитесь, что у вас пустая строка),
И теперь вы можете записать файл (если хотите) в любое имя файла,
И ответ Петра Узела тоже хорош,
Который читает со стандартного ввода
источник