Как я перенаправляю вывод команды к энергии в ударе?

Я пытаюсь перенаправить вывод команды удара в новый файл.

Если я пробую канал как указано ниже:

ls -la | vim

Bash показывает мне ошибки:

Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.

Я знаю, что могу открыть Vim и затем использовать:

:r !ls -la

Но есть ли способ сделать это в самом ударе, так, чтобы Vim был открыт, и вывод вставляется там автоматически?

89
задан 25 August 2015 в 18:00

7 ответов

Можно использовать замена процесса (это также работает с приложениями, которые не могут читать от STDIN):

vim <(ls -la)

Или использование vim функция для чтения от STDIN:

ls -la | vim -
141
ответ дан 22 November 2019 в 23:10

Вы действительно близки самостоятельно. Вы просто пропускали один символ.

ls -la | vim -
38
ответ дан 22 November 2019 в 23:10

Вот другой подход, надо надеяться, чтобы преподавать кому-то что-то новое.

, Если Вы знаете, что команда :r !ls -la работает в энергии, можно сделать следующее, чтобы открыть энергию и заставить его выполнить команду, как только это открывается, прямо от удара:

vim -c ':r! ls -la'

Это - эквивалент открытия vim, тогда выполняющий команду :r! ls -la. Это должно работать с любым vim команда, куда команда происходит после -c опция.

19
ответ дан 22 November 2019 в 23:10

Можно сказать энергии открывать stdin:

ls -la | vim -
12
ответ дан 22 November 2019 в 23:10

Если Ваша цель состоит в том, чтобы просто получить вывод в текстовый файл затем, Вы не должны вызывать энергию. Bash может сделать это один с

ls -la > outputfile.txt
1
ответ дан 22 November 2019 в 23:10

setlocal buftype=nofile

Это хороший вариант, если вы собираетесь создать псевдоним для замены less:

seq 100 | vim +':setlocal buftype=nofile' -

Теперь вы не Т нужно набрать! выйти.

Другой вариант:

seq 100 | vim +'nnoremap q :quit!' -

, так что вы можете выйти с помощью всего лишь q<enter>.

1
ответ дан 22 November 2019 в 23:10

Я хочу добавить опцию

ls -al | view -

view — версия vim только для чтения (эквивалентно vim -R)

0
ответ дан 13 October 2020 в 00:03

Другие вопросы по тегам:

Похожие вопросы: