Я знаю, что могу :!
или могу :r!
выполнить внешнюю команду и при желании вставить ее вывод в текст. Я даже могу выполнить, :!sh
и я создам оболочку, которая будет жить до тех пор, пока я не выйду из нее - но пока оболочка активна, Vim «спит» и недоступен. Я должен выйти из оболочки и создать новую, если я хочу на мгновение вернуться в Vim - не очень полезно.
Я могу получить доступ к оболочке на противоположном конце, приостановив Vim с помощью ^Zи управляя заданием Vim bg
, fg
и jobs
. Это имеет больше смысла, но в конечном итоге очень громоздко. Я могу использовать, Screen
если он доступен (часто это не так), или открыть несколько окон моего оконного менеджера (и ssh для последовательного выбора хоста из каждого из них, чтобы на удаленном хосте были и vim, и shell, опять же громоздко).
Было бы лучше, если бы Vim позволил мне открыть сеанс оболочки и сохранить его, скажем, в одном из его (внутренних) окон или разрешить переключаться на него и обратно. Возможно ли что-то подобное?
источник
:split
, сохранив файл в другом окне? ... Для меня это звучит как работа для tmux или screen ...Ответы:
Есть пара плагинов vim, которые позволяют это. Я использую Conque ( Github ).
После помещения его в каталог плагинов все, что вам нужно сделать, это:
И у вас будет интерактивная оболочка bash в vim. Затем вы можете использовать свои обычные жесты vim, чтобы делать что-либо еще, что вы можете сделать в окне.
Также другой плагин vimshell .
источник
:help shell-window
. (Краткий ответ: нет.)Я полагаю, что с VIM плагины, предназначенные для этого, не так уж хороши, хотя IMO vimshell подходит ближе всего. Однако вы должны понимать, что это проблема с двумя частями.
На мой взгляд, есть два подхода, которые работают намного лучше в этом отношении.
Я должен добавить, что существует высокая вероятность того, что NeoVIM может привести к изменению этого аспекта, поскольку одной из его основных целей является возможность выполнять задания асинхронно. Но до тех пор это лучшее, что мы можем получить на мой взгляд.
источник
В
:help shell-window
мы можем прочитать о выполнении команд оболочки в окне:Однако есть несколько решений, которые вы можете использовать:
использование,
screen
которое специально разработано для таких вещей, например:Смотрите больше на: Руководство по выживанию экрана GNU в stackoverflow SE
Или: GNU Screen Splitting , экран Quick Reference для более подробной информации.
VIM-Shell - сторонний патч
vterm - эмулятор терминала внутри vim.
Vimux - легко взаимодействовать с tmux из vim.
другие уже упоминались: Conque
Связанный: Как запустить терминал внутри vim? в стеке потока
источник