417 Stimmen

Wie kann ich ein Terminal innerhalb von Vim laufen lassen?

Ich bin an Emacs gewöhnt, aber ich probiere Vim aus, um zu sehen, welches Programm mir besser gefällt.

Eine Sache, die ich an Emacs mag, ist die Möglichkeit, ein Terminal innerhalb von Emacs laufen zu lassen. Ist dies innerhalb von Vim möglich? Ich weiß, dass man Befehle von Vim aus ausführen kann, aber ich würde gerne in der Lage sein, ein Terminal innerhalb einer Registerkarte laufen zu lassen.

237voto

David Claridge Punkte 5929

Ich bin mir nicht sicher, was Sie genau erreichen wollen (ich habe Emacs nie benutzt), aber Sie können Befehle in Vim ausführen, indem Sie tippen:

:! somecommand [ENTER]

Und wenn Sie mehrere Befehle eintippen oder eine Weile in einer Shell herumspielen wollen, können Sie das immer tun:

:! bash (or your favourite shell) [ENTER]

Sobald der Befehl oder die Shell beendet ist, haben Sie die Möglichkeit, die Taste Enter um zu Ihrem Editorfenster zurückzukehren

Vim ist absichtlich leichtgewichtig und nicht in der Lage, nicht-editorische Dinge zu tun, genauso wie das Ausführen einer vollwertigen Shell innerhalb eines Vim-Fensters/Registerkarte, aber wie oben erwähnt gibt es Addons von Drittanbietern wie vim-shell, die Ihnen erlauben, diese Art von Dingen zu tun.

Wenn ich zwischen Vim und meiner Shell (Bash) umschalten möchte, drücke ich normalerweise einfach CTRL + Z um den Vim-Prozess anzuhalten, in meiner Shell herumzuspielen und dann 'fg' zu tippen, wenn ich zu Vim zurückkehren will - so bleiben mein Editor und meine Shell schön getrennt.

234voto

Kyle Simek Punkte 9458

Veraltet von August 2011

Überprüfen Sie Conque-Muschel (auch auf GitHub ). Lässt Sie jedes interaktive Programm innerhalb von vim laufen, nicht nur eine Shell.

223voto

Greg Hewgill Punkte 882617

Aktualisierte Antwort (11 Jahre später...):

  • Ich würde die Verwendung von tmux anstelle von screen wie in der ursprünglichen Antwort unten vorgeschlagen, wenn Sie diese Lösung verwenden möchten.
  • Vim 8.1 hat jetzt ein eingebautes Terminal, das mit dem Befehl :term Befehl. Dies bietet eine viel vollständigere Integration mit dem Rest der Vim-Funktionen.

Ich würde auf jeden Fall empfehlen screen für etwas wie dieses. Vim ist ein Texteditor, keine Shell.

Ich würde verwenden Ctrl+AS um das aktuelle Fenster horizontal zu teilen, oder in Ubuntu's screen und anderen gepatchten Versionen, können Sie Ctrl+A| (Rohr) vertikal zu spalten. Verwenden Sie dann Ctrl+ATab (oder gleichwertig auf einigen Systemen, Ctrl+ACtrl+I was vielleicht einfacher zu tippen ist), um zwischen den Fenstern zu wechseln. Es gibt weitere Befehle, um die Größe und Anordnung der Fenster zu ändern.

Oder eine weniger fortschrittliche Verwendung von screen ist es, mehrere Fenster im Vollbildmodus zu öffnen und zwischen ihnen hin- und herzuschalten. Das ist es, was ich normalerweise tue, ich verwende die Funktion des geteilten Bildschirms nur gelegentlich.

Le site GNU Screen Survival Guide Frage enthält eine Reihe guter Tipps, wenn Sie mit der Verwendung nicht vertraut sind.

195voto

ptrin Punkte 1968

Der Weg, wie ich das umgehen kann, ist folgender:

  • Vim unterbrechen mit Ctrl + Z ,
  • im Terminal spielen,
  • dann kehren Sie genau dorthin zurück, wo Sie mit Vim aufgehört haben, indem Sie einfach den Befehl fg .

164voto

dannyadam Punkte 3595

Wenn dies in Ihrer Version von Vim aktiviert ist, kann ein Terminal mit dem Befehl :term Befehl.

Vim 8 wurde die Unterstützung von Terminalfenstern hinzugefügt. Es ist eine optionale Funktion, die aktiviert werden kann, wenn Vim mit der +terminal-Funktion kompiliert wird. Falls Ihre Version von Vim Terminal-Unterstützung hat, :echo has('terminal') wird eine "1" ausgegeben.

Eingabe von :term werden Sie in Terminal-Job Modus, in dem Sie das Terminal wie erwartet verwenden können.

Unter Terminal-Job Modus, drücken Sie Ctrl-W N ou Ctrl-\ Ctrl-N schaltet den Modus auf Terminal-Normal die es erlaubt, den Cursor zu bewegen und Befehle auszuführen, ähnlich wie bei Vim Normal Modus. Zum Zurückschalten auf Terminal-Job Modus, drücken Sie i .

Andere Antworten erwähnen ähnliche Funktionen in Neovim.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X