Как я могу открыть оболочку внутри окна Vim?

114

Я могу открыть оболочку с помощью команды: shell в Vim, однако я не могу редактировать файл и в то же время использовать оболочку.

Есть ли способ разделить Vim на несколько окон (или вкладок) и открыть оболочку в одной из них?

Мартин Фиксман
источник
1
Раньше был патч оболочки для vim, но он больше не компилируется afaik. Самое близкое к настоящей оболочке - это использовать screen или tmux. Это самое большое, чего мне не хватает в vim.
Рэнди Моррис
2
Похоже на дубликат stackoverflow.com/questions/1236563/…
Брэд Купит 01

Ответы:

87

Neovim и Vim 8.2поддерживают это изначально с помощью :ter[minal]команды.

Подробнее см. terminal-windowВ документации.

пратер
источник
5
Это должно быть приемлемое решение для vim> = 8.0.
amath
3
Как разбить терминал по вертикали?
Kiran Kumar Kotari
2
@KiranKumarKotari, попробуйте, vsplit term://bashесли вы используете Neovim.
Prater
4
с vim 8.0 или новее terminalкоманда разбивает окно и выделяет командную оболочку специальным цветом в строке состояния окна. Slick.
NoelProf
@KiranKumarKotari vert [ical] ter [minal]
MPA95
46

Ну, это зависит от вашей ОС - на самом деле я не тестировал его в MS Windows, - но Conque - один из лучших плагинов.

Собственно, может и лучше, но работает.

Жолт Ботыкай
источник
4
Если вы используете Vundle для управления плагинами, вы можете добавить Bundle 'jewes / Conque-Shell' в свой .vimrc файл и запустить: BundleInstall, чтобы установить его.
Mingjiang Shi
Одна вещь, на которую следует обратить внимание: требование + python или + python3 для vi может быть убийственным в некоторых рабочих средах.
cfi
Это обновленный URL (со скриншотами): github.com/wkentaro/conque.vim
Walty Yeung
18

:vspили :sp- разбивает vim на два экземпляра, но вы не можете использовать: shell только в одном из них.

Почему бы не отобразить другую вкладку терминала, а не другую вкладку vim. Если вам нравится идея, вы можете попробовать: Ctrl-shift-t.и перемещаться между ними с помощью Ctrl - pageupиCtrl - pagedown

Если вам нужно всего несколько команд оболочки, вы можете создать любую команду оболочки в vim, используя !

Например :!./a.out.

владв
источник
1
А чтобы запустить открытый в данный момент исполняемый файл, вы можете использовать vimмагию пути следующим образом::!./%
cprn
Почему бы не отобразить еще одну вкладку терминала - не все используют vim в эмуляторе терминала над графическим интерфейсом пользователя… Исходя из Ctrlтого, что я полагаю, ваш ответ предполагает gnome-terminal или аналогичный эмулятор.
törzsmókus
8

Вы можете использовать tmuxили screen(второй может делать только горизонтальное разделение без патча), чтобы разделить ваш терминал. Но я не знаю, как иметь один экземпляр Vim на обеих панелях.

ZYX
источник
4
screen может делать вертикальное разделение, если вы строите его из git.
Рэнди Моррис
8

Если вы еще не узнали, вы можете использовать замечательный плагин для экрана .

Conque тоже исключительный, но я считаю screen более практичным (например, он не «засоряет» ваш буфер, и вы можете просто отправлять команды, которые вам действительно нужны, после редактирования их в вашем буфере)

Eelvex
источник
6

Думаю, это довольно старый вопрос, но сейчас в 2017 году. У нас есть neovim, это форк vim, который добавляет поддержку терминала.

Таким образом, вызов :termоткроет окно терминала. Преимущество этого решения по сравнению с использованием tmux (терминального мультиплексора) заключается в том, что у вас будут те же привязки окон, что и в вашей vimнастройке. neovim совместим с vim, поэтому вы можете просто скопировать и вставить свой, .vimrcи он будет работать.

Еще одним преимуществом является то, что вы можете переключиться в нормальный режим в открытом терминале и выполнять базовое копирование и редактирование. Я думаю, это также очень полезно для коммитов git, поскольку все в вашем буфере вы можете использовать в автозаполнении.

Я обновлю этот ответ, поскольку vim также планирует выпустить поддержку терминалов, вероятно, в vim 8.1. Вы можете следить за прогрессом здесь: https://groups.google.com/forum/#!topic/vim_dev/Q9gUWGCeTXM

После его выпуска я считаю, что это более лучшая установка, чем использование tmux.

chriz
источник
6
Я думаю, он был выпущен в Vim 8.0
LangeHaare
3

VimShell от Shougo , который может автоматически дополнять имена файлов при использовании с neocomplcache

Куроз
источник
1

Не совсем то, что вы просите, но вас может заинтересовать мой плагин vim-notebook, который позволяет пользователю поддерживать фоновый процесс и заставлять его оценивать часть текущего документа (и записывать результат в документ). Он предназначен для использования в документах типа записной книжки, содержащих фрагменты кода, которые необходимо оценить.

Томас Баручель
источник
0

Вы можете захотеть открыть "экранную" программу, разделить экран, открыть оболочку на одном и vim на другом. Работает для меня.

MRCYBUL
источник
Отменил -1, потому что не было объяснения. Кроме того, я тестировал решение плагина vim screen, и оно не сильно отличается от решения mrcybul. @mrcybul: танки за попытки помочь. Чтобы не получить отрицательные голоса, внимательно прочтите другие ответы и добавляйте свои, только если считаете, что они принесут что-то новое. Также укажите, почему ваше решение может быть лучше в определенных случаях.
Titou
0

Сейчас я использую tmux.

Установка: sudo apt-get install tmux Запустить: tmux

Ctrl + b, за которым следует Ctrl +%: он разделяет окно терминала на две вертикальные половины.

Ctrl + «стрелка влево | стрелка вправо»: перемещается между терминалами.

Артуро Руис Маньяс
источник