Wie wäre es, wenn Sie autocmd
Ihrer ~/.vimrc
-Datei eine hinzufügen und eine Zuordnung erstellen:
autocmd FileType python map <buffer> <F9> :w<CR>:exec '!python3' shellescape(@%, 1)<CR>
autocmd FileType python imap <buffer> <F9> <esc>:w<CR>:exec '!python3' shellescape(@%, 1)<CR>
dann können Sie drücken <F9>
, um den aktuellen Puffer mit auszuführenpython
Erläuterung:
autocmd
: Befehl, den Vim automatisch ausführt {event}
(hier: wenn Sie eine Python-Datei öffnen)
[i]map
: Erstellt eine Tastenkombination <F9>
im Einfüge- / Normalmodus
<buffer>
: Wenn mehrere Puffer / Dateien geöffnet sind: Verwenden Sie einfach den aktiven
<esc>
: Einfügemodus verlassen
:w<CR>
: speichert Ihre Datei
!
: führt den folgenden Befehl in Ihrer Shell aus (try :!ls
)
%
: wird durch den Dateinamen Ihres aktiven Puffers ersetzt. Aber da es Dinge wie Leerzeichen und andere "schlechte" Dinge enthalten kann, ist es besser, nicht zu schreiben :python %
, sondern zu verwenden:
shellescape
: Entkomme den Sonderzeichen. Das 1
bedeutet mit einem Backslash
TL; DR: Die erste Zeile funktioniert im normalen Modus. Sobald Sie darauf drücken <F9>
, wird Ihre Datei zuerst gespeichert und anschließend mit Python ausgeführt. Der zweite macht dasselbe, verlässt aber zuerst den Einfügemodus
autocmd FileType python nnoremap <buffer> ....
nnoremap <buffer> <F9> :!python %<cr>
scheint in Vim 7.4.1689 zu funktionieren. Wofür ist die Shellescape?Gehen Sie einfach in den normalen Modus, indem Sie drücken
<esc>
und Folgendes eingeben:quelle
Ich habe dies in meiner .vimrc-Datei:
Wenn ich mit dem Bearbeiten eines Python-Skripts fertig bin, drücke ich einfach
<F5>
. Das Skript wird gespeichert und dann auf einem leeren Bildschirm ausgeführt.quelle
m
Taste plus,
Taste anstelle vonF5
Taste einstellen kann .Insert
Modus ausgeführt wird. Für die Ausführung imNormal
Modus verwenden Sienmap
anstelle vonimap
.Ich bevorzuge die Python-Ausgabe, die in ein neues Vim-Fenster umgeleitet wird (und wenn dieses Fenster geöffnet bleibt, aktualisieren Sie seinen Inhalt, wenn Sie das nächste Mal Python-Code mit dieser Funktion ausführen):
quelle
.vimrc
? Wenn nicht, wie soll ich dieses Skript vim geben? (Noob hier)Aufbauend auf den vorherigen Antworten können Sie den Befehl
:ter
(:terminal
) nützlich finden, wenn Sie den Code sehen möchten, während Sie sich die Ausgabe ansehen .Bei Verwendung
vert
in der zweiten Zeile wird der Code in vertikaler Aufteilung anstelle von horizontal ausgeführt.Das Negative daran ist, dass wenn Sie das Split-Fenster, in dem der Code ausgeführt wurde, nicht schließen, Sie nach mehreren Läufen viele Splits haben (was im ursprünglichen Python-IDLE nicht der Fall ist, in dem dasselbe Ausgabefenster wiederverwendet wird).
(Ich behalte diese Zeilen im Inneren
/home/user/.vimrc
)quelle
Denken Sie daran, dass Sie den zuletzt verwendeten Befehl wiederholen können. Das
@:
ist also alles, was Sie wiederholen müssen, sind diese beiden Zeichen.Oder Sie können die Zeichenfolge
w !python
in einem der Register speichern (wie"a
zum Beispiel) und dann drücken:<C-R>a<CR>
, um den Inhalt des Registersa
in die Befehlszeile einzufügen und auszuführen.Oder Sie können tun , was ich tun und Karte ,
<leader>z
um:!python %<CR>
die aktuelle Datei auszuführen.quelle
Wenn Sie nicht
:exec python file.py
jedes Mal " " gedruckt sehen möchten , verwenden Sie Folgendes:Es hat auch meine Powerline / Vim-Airline-Statusleiste nicht durcheinander gebracht.
quelle
Plugin: jupyter-vim
So können Sie Zeilen (
<leader>E
), visuelle Auswahl (<leader>e
) an einen Lauf sendenjupyter-client
(das Ersetzen vonipython
)Ich bevorzuge es, Editor und Interpreter zu trennen (jeder in seiner Shell). Stellen Sie sich vor, Sie senden einen schlechten Eingabe-Lesebefehl ...
quelle
Für den generischen Gebrauch (führen Sie Python / Haskell / Ruby / C ++ ... von vim basierend auf dem aus
filetype
) gibt es ein nettes Plugin namens vim-quickrun . Es unterstützt standardmäßig viele Programmiersprachen. Es ist auch leicht konfigurierbar, sodass bei Bedarf bevorzugte Verhaltensweisen für jeden Dateityp definiert werden können. Das Github-Repo hat keine ausgefallene Readme-Datei, ist aber mit der Dokumentdatei gut dokumentiert.quelle
Die akzeptierte Antwort funktioniert für mich (unter Linux), aber ich wollte, dass dieser Befehl auch den Puffer vor dem Ausführen speichert, also habe ich ihn leicht geändert:
Das
:w <bar>
speichert den Puffer DANN führt den Code darin aus.quelle
Eine einfache Methode wäre,
:
im normalen Modus zu tippen , dann die Aufwärtspfeiltaste auf der Tastatur zu drücken und die Eingabetaste zu drücken. Dadurch werden die zuletzt in VIM eingegebenen Befehle wiederholt.quelle
Wenn Sie schnell durch Ihre
:w
Befehle zurückspringen möchten , ist es cool, zu tippen:w
und dann den Aufwärtspfeil zu drücken. Es werden nur Befehle durchlaufen, die mit beginnenw
.quelle
Ich habe dies auf meiner .vimrc:
Dadurch wird der aktuelle Puffer gespeichert und der Code nur mit Esc + F9 ausgeführt
quelle
Sie können auch skywind3000 / asyncrun.vim verwenden . Es ähnelt dem, was @FocusedWolf aufgelistet hat.
quelle
Sie können für jede Sprache mit 1 Tastenkombination mit dem Befehl augroup erweitern, zum Beispiel:
quelle
Denken Sie an die Verwendung der Shebang-Linie, damit Sie sie in jeder Sprache verwenden können, nicht nur in Python.
Shebang hinzufügen:
Fügen Sie dies in die erste Zeile Ihres Skripts ein:
oder dies, wenn Sie Python 2 verwenden:
Vim Keymap:
Fügen Sie dies zu Ihrem hinzu
~/.vimrc
:Datei ausführbar machen:
Geben Sie Vim ein:
oder im Terminal:
Erläuterung:
Wenn F7 im normalen Modus gedrückt wird, versucht Vim, die aktuelle Datei als Bash-Skript auszuführen. Dann wird der Bash-Interpreter die Shebang-Zeile sehen und verstehen, dass diese Datei an Python (oder ein anderes Programm, falls erforderlich) übergeben werden sollte.
Außerdem können Sie Ihr Skript vom Terminal aus unter folgendem Namen ausführen:
statt so (das wird auch funktionieren):
quelle
Diese .vimrc-Zuordnung benötigt Conque Shell , repliziert jedoch das Verhalten von Geany (und anderen X-Editoren):
Das Fenster schließt sich beim Verlassen automatisch
:let dummy = conque_term#subprocess('gnome-terminal -e "bash -c \"python ' . expand("%") . '; answer=\\\"z\\\"; while [ $answer != \\\"q\\\" ]; do printf \\\"\nexited with code $?, press (q) to quit: \\\"; read -n 1 answer; done; \" "')
quelle
Setzen Sie Ihren Cursor irgendwo in den Code. Klicken Sie mit der rechten Maustaste und wählen Sie eine der Optionen "Auswählen", um Ihren Code hervorzuheben. Drücken Sie dann Strg: und Sie sehen die neue Eingabeaufforderung '<,>'.
Geben Sie nun! Python ein und prüfen Sie, ob dies funktioniert.
Ich verbringe nur Tage damit, das gleiche Problem herauszufinden !!! Ich habe die Codierung verwendet:
Nachdem ich alle Haare ausgezogen hatte, habe ich es endlich richtig gemacht!
quelle
:% !python
.%
bedeutet nur alle Zeilen.Anstatt die Befehlszuordnung
.vimrc
in Ihre~/.vim/ftplugin/python.vim
Datei einzufügen , fügen Sie die Zuordnung in Ihre Datei (Windows$HOME\vimfiles\ftplugin\python.vim
) ein. Wenn Sie diese Datei oder Verzeichnisse nicht haben, erstellen Sie sie einfach. Auf diese Weise wird der Schlüssel nur zugeordnet, wenn Sie eine.py
Datei oder eine Datei mit öffnenfiletype=python
, da Sie diesen Befehl nur für Python-Skripte ausführen.Für das eigentliche Mapping möchte ich in Vim bearbeiten können, während das Skript ausgeführt wird. Ausgehend von der Antwort von @cazyas habe ich Folgendes in meinem
ftplugin\python.vim
(Windows):Dadurch wird das aktuelle Python-Skript im Hintergrund ausgeführt. Für Linux ändern Sie es einfach wie folgt:
quelle
quelle