Ich arbeite an einem kleinen Python-Skript, das häufig ausgeführt werden muss, um Fehler zu beheben und weiterzuentwickeln.
Kann ich den VIM-Bildschirm aufteilen und mein Skript an einem Teil mit einem Tastendruck ausführen?
quelle
Ich arbeite an einem kleinen Python-Skript, das häufig ausgeführt werden muss, um Fehler zu beheben und weiterzuentwickeln.
Kann ich den VIM-Bildschirm aufteilen und mein Skript an einem Teil mit einem Tastendruck ausführen?
Fügen Sie diese Zeile zu Ihrer .vimrc hinzu:
command R !./%
Und dann können Sie einfach ": R" in Vim eingeben, um das Skript auszuführen ( vim-run-current-file )
Vim unterstützt keine eingebettete Shell wie Emacs oder Kate (wenn Sie das meinen). Lesen Sie diese Frage zum Stapelüberlauf .
David Spillet hat recht, du kannst dein vim in gnu screen ausführen:
$ screen vim foo.txt
Aber das gibt Ihnen nur etwas, das an einen Windowmanager in einem Terminal erinnert - SEHR nützlich, wenn es über ssh oder auf einer Box ohne X verwendet wird, aber lokal können Sie genauso gut ein anderes xterm öffnen und zwischen diesen wechseln. *
Wie auch immer, wenn Sie damit leben können, dass Sie die Datei, die Sie bearbeiten, nicht sehen, während Sie sich die Ausgabe ansehen, die sie erzeugt, ist Jack Ms Tipp gut, könnte aber kürzer sein:
:map ;e :w<cr>:!python %<cr>
Aus dem gleichen Grund habe ich dies in meinem ~/.vimrc
:
au BufEnter *
\if match( getline(1) , '^\#!') == 0 |
\ execute("let b:interpreter = getline(1)[2:]") |
\endif
fun! CallInterpreter()
if exists("b:interpreter")
exec ("!".b:interpreter." %")
endif
endfun
map <F5> :call CallInterpreter()<CR>
Dadurch wird jede Datei ausgeführt, die #!
in der ersten Zeile ein shebang ( ) enthält. Die Datei wird mit dem Interpreter ausgeführt, sodass keine Ausführungsberechtigungen erforderlich sind.
* (Der Bildschirm verfügt über einige weitere sehr nützliche Funktionen wie Kopieren und Einfügen aus der Ausgabe, Überwachen von verborgenen Fenstern auf Aktivität / Nichtaktivität, gleichzeitige Nutzung der Sitzung von verschiedenen Terminals aus und Abmelden aller Programme Laufen - es ist ein mächtiges Werkzeug).
:map ;e :w<cr>:!python %<cr>
will Sachen in meinen vim-Puffer schreiben, um zu "bestätigen" (?), dass der Befehl ausgeführt wurde. Wie kann ich den Befehl einfach im Hintergrund ausführen?:map <silent> ...
scheint nicht zu funktionieren.Der am wenigsten ausführliche Weg (für den Ihr Skript ausführbar sein muss) ist wahrscheinlich:
quelle
:!./%
so ändern, dass das Skript im aktuellen Verzeichnis gefunden wurde.!
sieht so aus, als ob der vim anweist, das Folgende als Bash-Befehl auszuführen, damit Sie es tun können!echo "Hello"
. Das%
wird erweitert, um der Name der aktuellen Datei zu sein.Es ist vielleicht kein geteilter Bildschirm, aber das funktioniert für mich ziemlich gut:
Hiermit
;e
schreiben Sie die aktuelle Datei aus und führen sie mit Python aus (es wird davon ausgegangen, dass sich Python auf Ihrem Computer befindetPATH
).quelle
Das Bexec Vim Plugin macht genau das, was Sie wollen. Tastaturkürzel enthalten.
quelle
Es gibt eine ähnliche StackOverflow-Frage .
quelle
Ist das, was ich mit bitte verwendet habe (F5 führt das aktuelle Skript aus).
Um vim in eine leistungsstarke Python-IDE zu verwandeln, empfehle ich dieses Tutorial:
quelle
Fügen Sie dieses kleine Snippet in Ihre .vimrc-Datei ein, um die aktuelle Datei mit einem Tastendruck (ähnlich
F5
) auszuführen und das Ergebnis in einem neuen Pufferspeicher für geteilte Fenster anzuzeigen.:!
ist in Ordnung, aber Sie müssen zu Ihrem Terminal wechseln, um das Ergebnis zu sehen.Sie können dies zwar mit
ctrl-z
vim tun,fg
müssen aber den Kontext häufig wechseln.Die Funktionsweise dieses Snippets besteht darin, zuerst die ausführbare Datei anhand der zu erraten
filetype
und sie dann mit der aktuellen Datei als Argument auszuführen.Als nächstes verwendet eine praktische Dienstprogrammmethode die Ausgabe und legt sie in einem neuen Puffer ab.
Es ist nicht perfekt, aber sehr schnell für gängige Workflows.
Hier ist das unten kopierte Snippet:
quelle
Ich kenne vim nicht direkt, aber Sie können den Bildschirm in der Regel mit dem
screen
Dienstprogramm auf diese Weise teilen . ctrl+ a, S(Beachten Sie , dass eine Kapital S) wird aufgeteilt , um die Anzeige und Sie können zwischen den beiden mit Schalter ctrl+ a, tab(wenn das Fenster leer ist, verwenden Sie ctrl+ a, nzu einem anderen geöffneten Fenster zu verschieben oder ctrl+ a, um ceine neue zu erstellen) .Sie können die Anzeige auch in mehr als zwei Teile aufteilen und die Größe der Teilungen mit Strg-a: Größe ändern. Ich benutze den Bildschirm so oft, und obwohl es nicht die Ein-Tasten-Lösung ist, nach der Sie fragen, kann dies sehr praktisch sein.
quelle