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


114

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

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


1
Раньше был патч оболочки для vim, но он больше не компилируется afaik. Самое близкое к настоящей оболочке - это использовать screen или tmux. Это самое большое, чего мне не хватает в vim.
Рэнди Моррис

2

Ответы:


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 на обеих панелях.


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

8

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

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


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.


6
Я думаю, он был выпущен в Vim 8.0
LangeHaare

3

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


1

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


0

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


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

0

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.