Я привык к Emacs, но я пробую Vim, чтобы увидеть, какой из них мне нравится больше.
Одна вещь, которая мне нравится в Emacs - это возможность запуска терминала внутри Emacs. Это возможно внутри Vim? Я знаю, что вы можете выполнять команды из Vim, но я хотел бы иметь возможность запускать терминал внутри вкладки.
:! <command>
то , что вы ищете?:term
команда, которая открывает новый терминал в новом разделенном окне. Если он не работает для вас, проверьте,vim --version | grep -o .terminal
доступна ли эта функция (+terminal
) или недоступна (-terminal
).Ответы:
Я определенно рекомендую
screen
что-то подобное. Vim - это текстовый редактор, а не оболочка.Я бы использовал, Ctrl+ASчтобы разделить текущее окно по горизонтали, или на экране Ubuntu и в других исправленных версиях вы можете использовать Ctrl+A|(pipe) для разделения по вертикали. Затем используйте Ctrl+ATab(или аналогично в некоторых системах, Ctrl+ACtrl+Iкоторые легче набрать) для переключения между окнами. Существуют и другие команды для изменения размера и расположения окон.
Или менее сложное использование
screen
- просто открывать несколько полноэкранных окон и переключаться между ними. Это то, что я обычно делаю, я использую функцию разделения экрана только изредка.В вопросе « Руководство по выживанию экрана GNU» есть несколько полезных советов, если вы не знакомы с его использованием.
источник
Устаревший с августа 2011 года
Проверьте Conque Shell (также на GitHub ). Позволяет запускать любые интерактивные программы внутри vim, а не только оболочку.
источник
:ConqueTerm bash <CR>
,vim <CR>
,:ConqueTerm bash
.... рекурсивный ужас !!Я не уверен, чего именно вы пытаетесь достичь (я никогда не использовал Emacs), но вы можете запускать команды в Vim, набрав:
И если вы хотите ввести несколько команд или поиграть в оболочке некоторое время, вы всегда можете использовать:
Как только команда или оболочка завершится, вам будет предложено нажать, Enterчтобы вернуться в окно редактора.
Vim намеренно легок и лишен возможности делать вещи не редактируемого типа, так же как и запуск полноценной оболочки внутри панели / вкладки Vim, но, как уже упоминалось выше, существуют сторонние дополнения, такие как vim-shell, которые позволяют вам делать такие вещи.
Обычно, если я хочу переключиться между Vim и моей оболочкой (Bash), я просто нажимаю CTRL+, Zчтобы приостановить процесс Vim, поиграюсь в своей оболочке, затем набираю 'fg', когда хочу вернуться к Vim - сохраняя свой редактор и мой оболочка красивая и отдельная.
источник
:r! command [ENTER]
упомянутое в комментариях.Способ, которым я обхожу это:
fg
.источник
:!bash
это лучший способ сделать это:!bash
лучшеCtrl+z
? (Просто интересно)Ctrl+Z
, например, вы можете перейти в другую папку, аls
затемgit status
и т. Д.Ctrl+Z
Это «пауза», с которой вы можете «возобновить»fg
. Но с:! Bash, как я знаю до сих пор, вы можете запустить только одну команду одновременно, или даже если вы можете запустить больше, чем команду одновременно, это все равно не удобно. В общем, Ctrl + Z намного лучшеЕсли он включен в вашей версии Vim, терминал можно запустить с помощью
:term
команды.В Vim 8 была добавлена поддержка окон терминала. Это дополнительная функция, которую можно включить при компиляции Vim с функцией терминала +. Если ваша версия Vim имеет поддержку терминала,
:echo has('terminal')
будет выводиться «1».При входе
:term
вы перейдете в режим работы терминала , где вы можете использовать терминал, как и ожидалось.В режиме Terminal-Job , нажатие
Ctrl-W N
илиCtrl-\ Ctrl-N
переключение режима в Terminal-Normal , что позволяет перемещать курсор и запускать команды аналогично нормальному режиму Vim . Чтобы вернуться к Terminal-Job режим , нажмитеi
.Другие ответы упоминают схожую функциональность в Neovim
источник
i
после переключения из режима просмотра ctrl-wN. Это убойная функция даже в tmux, и она работает и в Windows.:term
?brew install vim --override-system-vi
и:term
работает отлично. Спасибо, что поделился!:vertical :term
будет вертикально разделен с терминалом в левом окне.:vertical :botright :term
будет вертикально разделен с терминалом в правом окне. Кроме того, вы можете вручную расположить окна, а затем использовать их:term ++curwin
для открытия терминала в активном окне.:sh
затем,ctrl+d
чтобы вернуться (Баш)Обновление :
Вы можете сопоставить
ctrl+d
vim для запуска:sh
, что позволяет быстро переключаться между bash и vim.noremap <C-d> :sh<cr>
источник
ctrl+z
иfg
немного быстрее, учитывая, что вам не нужно печатать:sh
в этом случае.:sh
если вы делаете карту. Послеnoremap
, вы можете простоCtrl+D
перейти от vim кsh
, и так как^D
есть EOF, который завершаетsh
, так что вы вернетесь обратно к vim. Одна клавиша может переключаться междуsh
и vim.Главной новой функцией Vim 8.1 является поддержка запуска терминала в окне Vim.
:term
откроет терминал в другом окне внутри Vim.источник
exit
будет выйти из терминала, а затем использовать ,:q
чтобы закрыть окноВ конце концов родная
:terminal
команда была добавлена в vim в 2017 году.Вот выдержка из : терминала readme:
источник
:bn
как обычно. Не нужно убивать терминал, и это не точка невозврата :)Этот вопрос довольно старый, но для тех, кто его нашел, есть новое возможное решение: Neovim содержит полноценный первоклассный эмулятор терминала, который делает именно то, что пытался ConqueTerm. Просто беги
:term <your command here>
.<C-\><C-n>
выйдет из режима term обратно в обычный режим. Если вы похожи на меня и предпочитаете выход из режима выхода, вы можете добавить это в свой nvimrc:И затем, дважды нажав ESC, вы выйдете из режима терминала обратно в нормальный режим, так что вы можете манипулировать буфером, в который записывает все еще работающая команда.
Хотя имейте в виду, что в то время, когда я публикую этот ответ, nvim находится в стадии разработки, может быть добавлен еще один способ выхода из режима терминала. Как Ctrl+\Ctrl+nпереключается в обычный режим практически из любого режима, я не ожидаю, что этот ответ станет неправильным, но имейте в виду, что если он не работает, этот ответ может быть устаревшим.
https://github.com/neovim/neovim
источник
:term
Однако эта функция была добавлена в Vim 8.1, которая на момент публикации была недавно выпущена, поэтому вам может потребоваться обновить ее, чтобы использовать ее.
источник
Я знаю, что прямо не отвечаю на вопрос, но думаю, что это хороший подход. Никто не упомянул tmux (или, по крайней мере, не как отдельный ответ). Tmux - терминальный мультиплексор, похожий на экран. Большинство вещей можно сделать в обоих мультиплексорах, но на самом деле это проще в настройке. Также tmux сейчас развивается более активно, чем screen, и вокруг него довольно большая экосистема, такая как инструменты, помогающие в настройке, ecc.
Также для vim есть еще один плагин: ViMUX , который очень помогает во взаимодействии между обоими инструментами. Вы можете вызывать команды с:
:call VimuxRunCommand("ls")
Эта команда создает небольшое горизонтальное разделение ниже текущей области, в которой находится vim.
Он также может позволить вам запускаться из командной строки, если вы не хотите выполнять всю команду:
<Leader>vp :VimuxPromptCommand<CR>
Поскольку этого не было достаточно, существует как минимум 6 «плагинов для конкретной платформы»:
g:vroom_use_vimux
Вот хороший пример использования: тестирование по требованию с использованием Vimux и Turbux с Spork и Guard
источник
Кто-то уже предложил https://github.com/Shougo/vimshell.vim , но они не упомянули почему. Следовательно, когда я отошел от этого вопроса, я потратил много времени, пытаясь найти другие (гораздо более высокие оценки) варианты.
Shougo / Vimshell является ответом. Вот почему:
Помимо того, что он является эмулятором терминала, VimShell позволяет вам перемещаться по выводу терминала в обычном и визуальном режимах. Таким образом, если команда, которую вы запускаете, приводит к выводу, который вы хотите скопировать и вставить только с помощью клавиатуры ... VimShell покрывает это.
Ни одна из других упомянутых опций, включая команду: Terminal в NeoVim, не делает этого. Неовим: терминал подходит близко, но терпит неудачу, по крайней мере, следующими способами по состоянию на 18.02.2017:
Перемещает курсор в конец буфера, вместо того, чтобы в последний раз держать его в том же месте, что и VimShell. Огромная трата времени.
Не поддерживает
modifiable = 1
см дискуссию по этому вопросу на Github , не может быть использована , так как полезные плагины ВИМ-EasyMotion.Не поддерживает отображение номеров строк, как Vimshell.
Не тратьте время на другие варианты, в том числе Neovim: терминал. Перейти с VimShell.
источник
:terminal
может делать то же самое.:terminal
не может сделать то же самое, что и:VimShell
с точки зрения навигации и редактирования, и фундаментальными способами. См. Объяснение редактирования выше.Возможно, вы захотите взглянуть на
:sh
команду (см.:help sh
В Vim).Различные команды
источник
set shell=/bin/sh
заставит vim использовать более тихую оболочку для своих команд.Нет, ты не можешь:
http://vimdoc.sourceforge.net/htmldoc/tips.html#shell-window
источник
splitvt
ПРИНИМАЙТЕ СОВЕТА - он искажает коды управления цветом и делает егоvim
совершенно непригодным для использования.Единственный способ, которым я знаю, это использование vim-shell , стороннего патча.
источник
Я использую это сейчас, вы можете попробовать. VimShell
источник
Попробуйте vterm , который представляет собой полнофункциональную оболочку внутри vim. Это немного глючит с его историей и понятными функциями, и все еще находится в разработке, но все еще довольно хорошо
источник
Предполагая, что ваша версия vim
+term
сначала поддерживает команду, установите shell для использования vim в одной команде (напримерset=/usr/bin/zsh
), а затем выполните команду+term
(т.е.bo 15vs +term
). вам, возможно, придется выполнить дополнительное маневрирование ваших окон (то есть удалить одно и повернуть), но у вас будет свой терминал.источник
Я признаю, что не совсем отвечаю на ваш вопрос, но для меня лучше всего работать с Vim и терминалами в одном окне - Tmux (что-то вроде «запуска в фоновом режиме», аналогично экрану, хотя это лучше работает с разделителями и вкладками).
Этот пост поможет вам понять, как они работают вместе: «Tmux и Vim - еще лучше вместе» .
Таким образом, мы можем преобразовать Vim в мощную IDE
источник
Разделите экран и выполните команду,
term ++curwin
чтобы запустить терминал в буфере Vim. Следующая команда делает оба и работает для меня:источник