Wie kann ich eine Shell in einem Vim-Fenster öffnen?

110

Ich kann eine Shell mit dem Befehl: shell in Vim öffnen, jedoch keine Datei bearbeiten und gleichzeitig die Shell verwenden.

Gibt es eine Möglichkeit, Vim in vielen Windows (oder Registerkarten) zu teilen und in einem von ihnen eine Shell zu öffnen?

Martín Fixman
quelle
1
Früher gab es einen Shell-Patch für vim, der aber afaik nicht mehr kompiliert wird. Am nächsten an einer echten Shell ist die Verwendung von screen oder tmux. Dies ist das größte, was ich in vim vermisse.
Randy Morris
2
Sieht aus wie ein Duplikat von stackoverflow.com/questions/1236563/…
Brad Cupit

Antworten:

84

Neovim und Vim 8.2unterstützen dies nativ über den :ter[minal]Befehl.

terminal-windowEinzelheiten finden Sie in den Dokumenten.

Prater
quelle
5
Dies sollte die akzeptierte Lösung für vim> = 8.0 sein.
Amath
3
Wie kann ich das Terminal vertikal teilen?
Kiran Kumar Kotari
2
@KiranKumarKotari versuchen vsplit term://bashSie , wenn Sie Neovim verwenden.
Prater
4
Mit vim 8.0 oder höher terminalteilt der Befehl das Fenster und gibt eine Befehlsshell mit einer speziellen Farbe in der Fensterstatusleiste aus. Glatt.
NoelProf
@KiranKumarKotari vert [ical] ter [minal]
MPA95
46

Nun, es hängt von Ihrem Betriebssystem ab - eigentlich habe ich es nicht unter MS Windows getestet - aber Conque ist eines der besten Plugins da draußen.

Eigentlich kann es besser sein, funktioniert aber.

Zsolt Botykai
quelle
4
Wenn Sie Vundle zum Verwalten der Plugins verwenden, können Sie Ihrer .vimrc-Datei das Bundle 'jewes / Conque-Shell' hinzufügen und Folgendes ausführen: BundleInstall, um es zu installieren.
Mingjiang Shi
Eine Sache, auf die Sie achten sollten: Die + Python- oder + Python3-Anforderung für vi kann in einigen Arbeitsumgebungen ein Killer sein.
cfi
Dies ist die aktualisierte URL (mit Screenshots): github.com/wkentaro/conque.vim
Walty Yeung
18

:vspoder :sp- teilt vim in zwei Instanzen auf, aber Sie können nicht verwenden: Shell in nur einer von ihnen.

Warum nicht eine andere Registerkarte des Terminals anzeigen, nicht eine andere Registerkarte von vim? Wenn Ihnen die Idee gefällt, können Sie sie ausprobieren: Ctrl-shift-t.und mit Ctrl - pageupund zwischen ihnen wechselnCtrl - pagedown

Wenn Sie nur ein paar Shell-Befehle benötigen, können Sie mit jedem Shell-Befehl in vim einen beliebigen Befehl ausführen !

Zum Beispiel :!./a.out.

vladv
quelle
1
Und um eine aktuell geöffnete ausführbare Datei auszuführen, können Sie vim:!./%
Pfadmagie
Warum nicht eine andere Registerkarte des Terminals anzeigen - nicht jeder verwendet vim in einem Terminalemulator über einer GUI ... CtrlWas auch immer Ihre Antwort vermutlich Gnome-Terminal oder einen ähnlichen Emulator voraussetzt.
Törzsmókus
8

Sie können tmuxoder screen(zweitens können nur horizontale Teilungen ohne Patch durchgeführt werden) verwenden, um Ihr Terminal zu teilen. Aber ich weiß nicht, wie ich eine Instanz von Vim in beiden Fenstern haben soll.

ZyX
quelle
4
Bildschirm kann vertikale Teilungen durchführen, wenn Sie es aus Git erstellen.
Randy Morris
8

Wenn Sie es noch nicht herausgefunden haben, können Sie das erstaunliche Bildschirm-Plugin verwenden .

Conque ist auch außergewöhnlich, aber ich finde den Bildschirm viel praktischer (er "verschmutzt" beispielsweise Ihren Puffer nicht und Sie können einfach die Befehle senden, die Sie wirklich wollen, nachdem Sie sie in Ihrem Puffer bearbeitet haben).

Eelvex
quelle
6

Ich denke, dies ist eine ziemlich alte Frage, aber jetzt im Jahr 2017. Wir haben Neovim, eine Gabel von Vim, die Terminal-Unterstützung hinzufügt.

Das Aufrufen :termwürde also ein Terminalfenster öffnen. Das Schöne an dieser Lösung im Gegensatz zur Verwendung von tmux (einem Terminal-Multiplexer) ist, dass Sie dieselben Fensterbindungen wie bei Ihrem vimSetup haben. neovim ist kompatibel mit vim, so dass Sie im Grunde Ihre kopieren und einfügen können .vimrcund es wird einfach funktionieren.

Weitere Vorteile sind, dass Sie auf dem geöffneten Terminal in den normalen Modus wechseln und einfach kopieren und bearbeiten können. Es ist auch ziemlich nützlich für Git-Commits, denke ich, da alles in Ihrem Puffer in der automatischen Vervollständigung verwendet werden kann.

Ich werde diese Antwort aktualisieren, da vim auch plant, die Terminalunterstützung freizugeben, wahrscheinlich in vim 8.1. Sie können den Fortschritt hier verfolgen: https://groups.google.com/forum/#!topic/vim_dev/Q9gUWGCeTXM

Sobald es veröffentlicht ist, glaube ich, dass dies ein überlegeneres Setup ist als die Verwendung von tmux.

chriz
quelle
6
Es wurde in Vim 8.0 veröffentlicht, glaube ich
LangeHaare
3

Shougos VimShell , mit dem Dateinamen automatisch vervollständigt werden können, wenn sie mit Neocomplcache verwendet werden

kuroz
quelle
1

Nicht unbedingt das, wonach Sie fragen, aber vielleicht interessiert Sie mein Plugin vim-notebook , mit dem der Benutzer einen Hintergrundprozess am Leben erhalten und einen Teil des aktuellen Dokuments auswerten (und die Ausgabe in das Dokument schreiben) kann. Es ist für Dokumente im Notebook-Stil vorgesehen, die zu bewertende Codeteile enthalten.

Thomas Baruchel
quelle
0

Möglicherweise möchten Sie ein "Bildschirm" -Programm öffnen, den Bildschirm teilen, die Shell auf einem und die Vim auf einem anderen öffnen. Funktioniert bei mir.

mrcybul
quelle
Die -1 wurde abgebrochen, da es keine Erklärung gab. Außerdem habe ich die vim screen plugin Lösung getestet und sie unterscheidet sich nicht wesentlich von der Lösung von mrcybul. @ Mrcybul: Panzer für den Versuch zu helfen. Lesen Sie die anderen Antworten sorgfältig durch und fügen Sie Ihre eigenen nur hinzu, wenn Sie der Meinung sind, dass sie etwas Neues bringen. Geben Sie auch an, warum Ihre Lösung in bestimmten Fällen besser sein kann.
Titou
0

Ich benutze derzeit tmux.

Installation: sudo apt-get install tmux Führen Sie es aus: tmux

Strg + b gefolgt von Strg +%: Es teilt Ihr Terminalfenster in zwei vertikale Hälften.

Strg + "Pfeil links | Pfeil rechts": wechselt zwischen den Klemmen.

Arturo Ruiz Mañas
quelle