Greifen Sie auf das Terminal zu, während Sie sich auf Vim befinden


40

Gibt es eine Möglichkeit, während der Verwendung von Vim auf das Terminal zuzugreifen ?

Ich möchte kein anderes Terminal öffnen oder speichern und das aktuelle Terminal verlassen.


Neuen Tab öffnen? (Strg + Umschalt + T)
Wilf

2
Wie oft mache ich das :) Ich mache das nicht gerne D:
Mohammad Reza Rezwani

1
Haben Sie versucht, einen Terminal-Window-Manager wie tmux zu verwenden?
jrg

Antworten:


67

Sie können das SIGTSTP-Signal senden. Sie tun dies durch Drücken von ctrl+ z. Vim wird im Hintergrund angehalten und Sie können das Terminal verwenden. Geben Sie fgdas Terminal ein, um mit vim fortzufahren.

Bonus-Tipp: Dies funktioniert auf fast allen Terminalanwendungen. Verwenden Sie bgdiese Option , damit die Anwendung im Hintergrund weiter ausgeführt werden kann.


21
Oder einfach %statt fg. Oder %1, %2usw., wenn Sie viele Hintergrundjobs haben. jobsBefehl listet sie auf. (Angenommen bash, die Muschel.)
Ruslan

4
Ich stimme für die ^ z (und später fg) -Methode, da diese in fast allen Shell-Prozessen verwendet werden kann - es ist keine vim-Sache, es ist ein How-to-Use-Shell-Trick, der in anderen Kontexten unglaublich nützlich ist.
dman

35

Geben Sie in vim einfach Folgendes ein:

:!sh

:!Startet einen externen Prozess - in diesem Fall eine shandere Shell. Die Steuerung kehrt zu vim zurück, sobald Sie die Shell verlassen. Wenn Sie die Shell gleichzeitig mit vim verwenden möchten, fügen Sie &am Ende des Befehls sh Folgendes hinzu:

:!sh&

9
Oder einfach benutzen :shell.
Wchargin

2
Dies ist die beste Antwort für die meisten Zwecke.
Frank Conry

Das ist schön, aber wie http-serversieht es aus, wenn der Befehl einen Server ausführt und Protokolle ausgibt, die ich anzeigen möchte? Ich möchte in der Lage sein, auf meine Dateien umzuschalten, Änderungen vorzunehmen und dann zu den Protokollen zurückzukehren.
Costa

21

Sie können den :shellBefehl (oder die Kurzform :sh) verwenden. Von :help :shell:

Dieser Befehl startet eine Shell. Wenn die Shell beendet wird (nach dem Befehl "exit"), kehren Sie zu Vim zurück. Der Name für den Shell-Befehl stammt aus der Option 'shell'.

Standardmäßig erhalten Sie unter Ubuntu Bash. Geben Sie exitzu vim zurückzukehren , wenn Sie fertig sind.


8

Seit der letzten Version können Sie nun Folgendes tun:

:terminal

Dies wurde ursprünglich in Vim 8.0.693 hinzugefügt , aber mit vielen Fehlern. Siehe :help terminal:

WARNING: THIS IS ONLY PARTLY IMPLEMENTED, ANYTHING CAN STILL CHANGE

The terminal feature is optional, use this to check if your Vim has it: 
        echo has('terminal')
If the result is "1" you have it.   

[...]

The terminal feature requires the +multi_byte, +job and +channel features.

==============================================================================
1. Basic use                                            terminal-use

This feature is for running a terminal emulator in a Vim window.  A job can be
started connected to the terminal emulator. For example, to run a shell: 
     :term bash

Or to run a debugger: 
     :term gdb vim

The job runs asynchronously from Vim, the window will be updated to show
output from the job, also  while editing in any other window.

7

Als Ergänzung zu allen Antworten.

Sie können das ConqueTerm-Plugin installieren

Dieses Plugin bietet die Möglichkeit, interaktive Programme in vim-Puffern auszuführen.

Nach der Installation können Sie diese 2 Zeilen zu Ihren hinzufügen .vimrc:

:nnoremap <S-w> :q!<CR>
:nnoremap <S-t> :ConqueTermSplit bash<CR>

Und Sie können bashdurch Drücken von Shift+ ausführen Tund die aktuelle Registerkarte Conque durch Drücken von Shift+ schließenW

Es ist perfekt, wenn Sie schnell öffnen / schließen müssen bash.

Hier ist gif das zeigt, wie es aussieht


Kannst du bitte erwägen, die Beiträge zu aktualisieren? Die von Ihnen erwähnten Links scheinen veraltet zu sein
ggulgulia

4

Eine andere Option mit screen oder byobu ist das Öffnen einer Registerkarte in diesen Programmen. Mit diesen Programmen ist es relativ einfach, eine Terminal-Session-CQ-Shell geöffnet zu halten und mit der Tastatur zwischen diesen Bildschirmen zu wechseln.


1

Mit der neuen Version von vim 8.1 brauchen Sie nur noch :terminalund voila! (dies ist eingebaut)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.