2009-03-22 9 views
14

Mögliche Duplizieren:
How to run a terminal inside of vim?Wie macht man ein VIM-Fenster voll am Terminal?

kann ich mein Setup Arbeitsplatz gut mit Split und vsplit und offen ... aber ich würde wie einfach eine der Splits als Terminal verwenden Fenster. Ich weiß, eine zusätzliche Xterm zu öffnen und es strategisch möglicherweise in der Lage sein, dies zu erreichen aber oft bin ich Telneted in ein einziges Fenster und meine Hände beginnen zu weh von alt Tabbing zwischen Terminals.

Update: Die beste Sache, die ich auf der Grundlage der folgenden Vorschläge kam, war Bildschirm zu verwenden und tatsächlich vim eines seiner Fenster zu besetzen.

+0

Ich denke, Sie sollten ConqueTerm auszuprobieren. https://github.com/rson/vim-conque Screen ist großartig, aber ConqueTerm ist wirklich gut umgesetzt. (meiner Meinung nach) –

Antwort

13

Betrachten Sie Vim und eine Shell zusammen in GNU Screen laufen. Die hat Informationen zur Integration von Vim und Screen. Der Bildschirm unterstützt die Aufteilung in "Fenster" ähnlich wie bei Vim. Ein Beispiel für eine noch engere Vim + Screen-Integration finden Sie unter here.

Einen Vim-Buffer direkt an eine externe interaktive Kommandozeilen-App gebunden zu haben ist eine Eigenschaft, die viele schon lange wollten, aber anscheinend ist es ein bisschen schwierig zu machen, weil Vim implementiert ist und die Vim-Entwickler zögern um dies zu ändern (aus wohl guten Gründen).

Aber es gab ein paar Erfolgsgeschichten. Insbesondere die Lisp-Community hat versucht, Emacs 'SLIME (eine interaktive Lisp-Eingabeaufforderung) in Vim zu reproduzieren. Beispiele siehe VimClojure und Limp. Eine davon könnte wahrscheinlich geändert werden, um eine Shell auszuführen, aber es würde etwas Arbeit erfordern.

-3

Sie müssen auf das verzichten Ich habe Angst - keine Möglichkeit, es in vim zu tun.

+0

absolut unwahr :-) –

+0

Jede der 5 anderen Antworten sind alle sinnvolle Lösungen. – respectTheCode

3

Wenn Sie in vim sind, können Sie mit dem Befehl ": sh" zu einer Untershell zurückkehren und dann mit "exit" zu vim zurückkehren. Oder du kannst einfach vim anhalten und mit control-Z zur ursprünglichen Shell zurückkehren, von der du es gestartet hast, und dann zurück zu vim mit "fg" (Vordergrund) gehen.

Oder es gibt ein "vim-shell" Add-on, das Sie installieren können.

2

Erweiterung auf Brian Carper's answer, könnten Sie dies werfen in Ihre ~/.screenrc:

startup_message off 
# Launch 2 screens on startup 
split 
# Have bash login so $PATH will be updated 
screen -t Vim bash -l -c 'vim' 0 
focus 
screen -t canvas bash -l 
# switch focus back to vim 
focus up 

Dann, wenn Sie screen eingeben, haben Sie ein Vim-Fenster oben und ein Bash-Fenster auf der Unterseite. Sie können zwischen Bildschirmfenstern mit <C-a><Tab> wechseln.

8

Der Patch vimshell klingt nach dem, wonach Sie suchen.

+0

Ich habe es versucht, aber nicht zu groß. Es unterstützt keine Non-Ncurses-Pakete. –

+0

Der Link ist jetzt inaktiv, es wird auf eine Indexseite auf derselben Domain umgeleitet. – SidOfc

14

Ich benutze: http://code.google.com/p/conque/wiki/Usage

Sie geben können: split neu und das: ConqueTerm bash. Und Sie haben ein funktionierendes Terminalfenster. :)

+0

Das war die genaue Lösung, mit der ich endlich zufrieden war. Ich habe versucht, die Bildschirmlösung, die Vimshell-Lösung; aber meine letzte persönliche Vorliebe ist ConqueTerm. –

2
+1

Das ist nützlich! Eine Sache, die ich nicht weiß, wie zu tun ist (Blick auf Ihren Screenshot Sie tun es aber mit Python anstelle von Ruby) ist, dass ich meine Testsuite mit einem vorhandenen Dienstprogramm ausführen möchte, wenn ich eine Datei speichern. Es funktioniert, aber wenn ich nicht in INSERT MODE in diesem Fenster bin, wird es nicht das STDOUT des Dienstprogramms in den Puffer schreiben, also muss ich jedes Mal in dieses Fenster gehen und 'i' drücken, um zu sehen, welche Spezifikationen fehlgeschlagen sind . Weißt du, wie man das Fenster dazu bringen kann, immer das STDOUT des Dienstprogramms in den Puffer zu schreiben, auch wenn es sich nicht im INSERT MODE befindet? Prost! –

+1

Ich habe gerade 'let g: ConqueTerm_ReadUnfocused = 1' gefunden, was genau das tut. Leider gibt es aufgrund bestimmter Einschränkungen bei der Skripterstellung mit VIM keine Möglichkeit, mit dem Fenster in einem nicht fokussierten Zustand zu scrollen. Schade. : / –

Verwandte Themen