Я пытаюсь перенаправить вывод команды bash в новый файл.
Если я попробую трубу, как показано ниже:
ls -la | vim
Баш показывает мне ошибки:
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
Я знаю, что могу открыть Vim и затем использовать:
:r !ls -la
Но есть ли способ сделать это в самом bash, чтобы Vim открывался и выходные данные вставлялись туда автоматически?
<(ls -la)
на самом деле процесс подстановки, а не подстановка команд .Ты действительно близок сам по себе. Вам просто не хватало одного персонажа.
источник
Вот другой подход, надеюсь, научить кого-то чему-то новому.
Если вы знаете, что команда
:r !ls -la
работает внутри vim, вы можете сделать следующее, чтобы открыть vim и запустить ее сразу после открытия, прямо из bash:Это эквивалент открытия, а
vim
затем выполнения команды:r! ls -la
. Это должно работать с любойvim
командой, команда которой указана после-c
опции.источник
Вы можете сказать vim открыть stdin:
источник
Если ваша цель - просто получить вывод в текстовый файл, вам не нужно вызывать vim. Баш может сделать это наедине с
источник
setlocal buftype=nofile
Это хороший вариант, если вы собираетесь создать псевдоним для замены
less
:Теперь вам не нужно вводить! выйти
Другой вариант:
так что вы можете выйти с просто
q<enter>
.источник