Jak mogę otworzyć powłokę w oknie Vima?


112

Mogę otworzyć powłokę za pomocą polecenia: shell w Vimie, jednak nie mogę edytować pliku i jednocześnie używać powłoki.

Czy istnieje sposób na podzielenie Vima na wiele okien (lub zakładek) i otwarcie powłoki w jednym z nich?


1
Kiedyś istniała łatka powłoki dla vima, ale już się nie kompiluje afaik. Najbliżej prawdziwej powłoki jest użycie ekranu lub tmux. To największa rzecz, której mi brakuje w vimie.
Randy Morris

Odpowiedzi:


85

Neovim i Vim 8.2obsługują to natywnie za pomocą :ter[minal]polecenia.

Szczegółowe informacje można znaleźć terminal-windoww dokumentacji.


5
To powinno być akceptowane rozwiązanie dla vim> = 8.0.
amath

3
Jak podzielić terminal w pionie?
Kiran Kumar Kotari

2
@KiranKumarKotari spróbuj, vsplit term://bashjeśli używasz Neovim.
prater

4
w wersji 8.0 lub nowszej terminalpolecenie dzieli okno i nadaje powłoce poleceń ze specjalnym kolorem na pasku stanu okna. Przysiek.
NoelProf

@KiranKumarKotari vert [ical] ter [minal]
MPA95

46

To zależy od twojego systemu operacyjnego - właściwie nie testowałem tego na MS Windows - ale Conque jest jedną z najlepszych wtyczek.

Właściwie może być lepiej, ale działa.


4
Jeśli używasz Vundle do zarządzania wtyczkami, możesz dodać Bundle 'jewes / Conque-Shell' do swojego pliku .vimrc i uruchomić: BundleInstall, aby go zainstalować.
Mingjiang Shi

Jedna rzecz, na którą należy zwrócić uwagę: wymaganie + python lub + python3 dla vi może być zabójcze w niektórych środowiskach roboczych.
cfi

To jest zaktualizowany adres URL (ze zrzutami ekranu): github.com/wkentaro/conque.vim
Yeung

18

:vsplub :sp- dzieli vima na dwie instancje, ale nie możesz użyć: shell tylko w jednej z nich.

Dlaczego nie wyświetlić kolejnej zakładki terminala, a nie innej zakładki vim. Jeśli podoba Ci się ten pomysł, możesz go wypróbować: Ctrl-shift-t.i poruszać się między nimi za pomocą Ctrl - pageupiCtrl - pagedown

Jeśli potrzebujesz tylko kilku poleceń powłoki, możesz wykonać dowolne polecenie powłoki w vimie za pomocą !

Na przykład :!./a.out.


1
Aby uruchomić aktualnie otwarty plik wykonywalny, możesz użyć vimmagii ścieżki w następujący sposób::!./%
cprn

Dlaczego nie wyświetlić kolejnej zakładki terminala - nie wszyscy używają vima w emulatorze terminala nad GUI… Od - Ctrlcokolwiek sądzę, twoja odpowiedź zakłada gnome-terminal lub podobny emulator.
törzsmókus

8

Możesz użyć tmuxlub screen(drugi jest w stanie zrobić tylko podziały poziome bez łaty), aby podzielić terminal. Ale nie znam sposobu, aby mieć jedną instancję Vima w obu panelach.


4
screen może robić pionowe podziały, jeśli zbudujesz go z git.
Randy Morris

8

Jeśli jeszcze się nie dowiedziałeś, możesz skorzystać z niesamowitej wtyczki ekranu .

Conque jest również wyjątkowy, ale uważam, że ekran jest znacznie bardziej praktyczny (nie "zaśmieca" na przykład twojego bufora i możesz po prostu wysłać polecenia, które naprawdę chcesz po edycji w buforze)


6

Wydaje mi się, że to dość stare pytanie, ale teraz w 2017 roku. Mamy neovim, który jest rozwidleniem vima, który dodaje obsługę terminala.

Więc wywołanie :termotworzyłoby okno terminala. Piękno tego rozwiązania w przeciwieństwie do korzystania z tmux (multipleksera terminala) polega na tym, że będziesz mieć takie same powiązania okien, jak twoja vimkonfiguracja. neovim jest kompatybilny z vimem, więc możesz po prostu skopiować i wkleić swój .vimrci po prostu zadziała.

Więcej zalet jest to, że możesz przełączyć się do trybu normalnego na otwartym terminalu i możesz wykonywać podstawowe kopiowanie i edycję. Wydaje mi się, że jest to również przydatne dla zatwierdzeń git, ponieważ wszystko w twoim buforze może być użyte w autouzupełnianiu.

Zaktualizuję tę odpowiedź, ponieważ vim również planuje udostępnić obsługę terminala, prawdopodobnie w vimie 8.1. Postęp możesz śledzić tutaj: https://groups.google.com/forum/#!topic/vim_dev/Q9gUWGCeTXM

Po wydaniu uważam, że jest to lepsza konfiguracja niż używanie tmux.


6
Został wydany w Vim 8.0, jak sądzę
LangeHaare

3

Shougo's VimShell , który może automatycznie uzupełniać nazwy plików, jeśli jest używany z neocomplcache


1

Nie jest to absolutnie to, o co prosisz, ale możesz być zainteresowany moją wtyczką vim-notebook, która pozwala użytkownikowi utrzymać proces w tle i sprawić, by oceniał część bieżącego dokumentu (i zapisywał wynik w dokumencie). Jest przeznaczony do użytku w dokumentach w stylu notatnika, zawierających fragmenty kodu do oceny.


0

Możesz chcieć otworzyć program "ekranowy", podzielić ekran, otworzyć powłokę na jednym i vim na drugim. Pracuje dla mnie.


Anulowano -1, ponieważ nie było wyjaśnienia. Poza tym przetestowałem rozwiązanie wtyczki vim screen i nie różni się ono zbytnio od rozwiązania mrcybul. @mrcybul: czołgi za próby pomocy. Aby uniknąć negatywnego głosu, przeczytaj uważnie pozostałe odpowiedzi i dodaj własne tylko wtedy, gdy uważasz, że przynosi to coś nowego. Uwzględnij również, dlaczego Twoje rozwiązanie może być lepsze w niektórych przypadkach.
Titou

0

Obecnie używam tmux.

Instalacja: sudo apt-get install tmux Uruchom to: tmux

Ctrl + b, a następnie Ctr +%: dzieli okno terminala na dwie pionowe połowy.

Ctrl + "strzałka w lewo | strzałka w prawo": przenosi między terminalami.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.