Ich weiß , ich kann :!
oder :r!
externen Befehl auszuführen und gegebenenfalls seine Ausgabe in Text einfügen. Ich kann sogar performen :!sh
und ich werde eine Shell erzeugen , die so lange lebt, bis ich sie verlasse - aber während die Shell aktiv ist, schläft Vim und ist nicht erreichbar. Ich muss die Shell verlassen und eine neue erzeugen, wenn ich für einen Moment zu Vim zurückkehren möchte - nicht sehr nützlich.
Ich kann Shell auf dem entgegengesetzten Ende zuzugreifen, durch Vim Aussetzung mit ^Zund verwalten die Vim Job durch bg
, fg
und jobs
. Dies ist sinnvoller, aber auf lange Sicht sehr umständlich. Ich kann es verwenden, Screen
wenn es verfügbar ist (oft nicht), oder mehrere Fenster meines Fenstermanagers öffnen (und ssh, um von jedem der beiden nacheinander auf den Host zu zielen, um sowohl vim als auch shell auf dem Remote-Host zu haben, was wiederum umständlich ist.)
Es wäre am saubersten, wenn Vim mir erlauben würde, eine Shell-Sitzung zu öffnen und sie beispielsweise in einem ihrer (internen) Fenster zu speichern oder zu ihr und zurück zu wechseln. Ist so etwas möglich?
:split
, während Sie die Datei im anderen Fenster behalten? ... Das klingt für mich wie ein Job für tmux oder Bildschirm ...Antworten:
Es gibt einige vim-Plugins, die dies ermöglichen. Ich benutze Conque ( Github ).
Nachdem Sie es in Ihr Plugins-Verzeichnis gestellt haben, müssen Sie nur noch Folgendes tun:
Und Sie werden eine interaktive Bash-Shell in vim haben. Sie können dann Ihre regulären vim-Gesten verwenden, um alles andere zu tun, was Sie im Fenster tun möchten.
Auch das andere Plugin ist Vimshell .
quelle
:help shell-window
. (Kurze Antwort: Nein.)Mit VIM glaube ich, dass die Plugins, die dafür zur Verfügung stehen, nicht besonders gut sind, obwohl IMO vimshell am nächsten kommt. Sie müssen jedoch verstehen, dass es sich um ein zweiteiliges Problem handelt.
Meiner Meinung nach gibt es zwei Ansätze, die in dieser Hinsicht viel besser funktionieren.
Ich sollte hinzufügen, dass es sehr wahrscheinlich ist, dass NeoVIM diesen Aspekt ändert, da eines der Hauptziele darin besteht, Jobs asynchron ausführen zu können. Aber bis dahin ist dies das Beste, was wir meiner Meinung nach bekommen können.
quelle
In können
:help shell-window
wir über das Ausführen von Shell-Befehlen in einem Fenster lesen:Es gibt jedoch nur wenige Lösungen, die Sie verwenden können:
Verwendung,
screen
die speziell für diese Art von Dingen entwickelt wurde, zB:Weitere Informationen finden Sie unter : GNU Screen Survival Guide bei stackoverflow SE
Oder: GNU Screen Splitting , Bildschirm-Kurzanleitung für weitere Details.
VIM-Shell - ein Patch von Drittanbietern
vterm - Terminalemulator in vim.
Vimux - Interagieren Sie ganz einfach mit tmux von vim aus.
andere schon erwähnt: Conque
Siehe auch: Wie starte ich ein Terminal in vim? bei Stapelüberlauf
quelle