Як я можу відкрити оболонку всередині вікна Vim?


112

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

Чи є спосіб розділити Vim на багато Windows (або вкладки) і відкрити оболонку в одній з них?


1
Раніше там був виправлення оболонки для vim, але він більше не компілюється afaik. Найближчим до справжньої оболонки ви будете використовувати екран або tmux. Це найбільше, що я сумую в vim.
Ренді Морріс

2
Виглядає як дублікат stackoverflow.com/questions/1236563 / ...
Бред Cupit

Відповіді:


85

Neovim і Vim 8.2підтримують це спочатку за допомогою :ter[minal]команди.

Детальніше дивіться terminal-windowв документах.


5
Це має бути прийнятим рішенням для vim> = 8.0.
amath

3
Як розділити термінал вертикально?
Кіран Кумар Котарі

2
@KiranKumarKotari спробуйте, vsplit term://bashякщо ви використовуєте Neovim.
пратер

4
з vim 8.0 або пізнішої версії terminalкоманда розбиває вікно і надає командній оболонці спеціального кольору на панелі стану вікна. Гладкий.
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 на два екземпляри, але ви не можете використовувати: оболонку лише в одному з них.

Чому б не відобразити іншу вкладку терміналу, а не іншу вкладку 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
екран може робити вертикальні розколи, якщо ви будуєте його з git.
Ренді Морріс

8

Якщо ви ще цього не дізналися, ви можете використовувати дивовижний плагін екрану .

Conque також винятковий, але мені здається, що екран набагато практичніший (наприклад, він не "засмічує" ваш буфер, і ви можете просто надсилати команди, які вам дуже потрібні після редагування їх у своєму буфері)


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: танки для спроб допомогти. Щоб вас не сприйняли, уважно прочитайте інші відповіді та додайте свої, лише якщо ви вважаєте, що це приносить щось нове. Вкажіть також, чому ваше рішення може бути кращим у певних випадках.
Тіту

0

Зараз я використовую tmux.

Установка: sudo apt-get install tmux Виконати: tmux

Ctrl + b, а потім Ctr +%: він розділяє вікно вашого терміналу на дві вертикальні половинки.

Ctrl + "стрілка вліво | стрілка вправо": переміщається між терміналами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.