Die Geschichte, wie man Python ausführt und die Ergebnisse anzeigt, ohne vim zu schließen

Was du machen willst

  1. Führen Sie Python aus, ohne vim zu schließen
  2. Zeigen Sie das Ausführungsergebnis in einem neuen Puffer an

Was wurde gemacht

vimpy.gif

Ort

Dieser Inhalt wurde in vimrc geschrieben . vimrc ist

 :edit $MYVIMRC

Sie können es mit öffnen. Wenn Sie die Einstellungen nicht geändert haben

:vnew $HOME/_vimrc

Sie können es auch hier öffnen. Sie können die Einstellungen mit : version überprüfen.

vimrc help: h vimrc

Empfehlung: Alle Vim-Konfigurationsdateien sollten im Verzeichnis $ HOME / .vim / abgelegt werden ($ HOME / vimfiles / unter MS-Windows). Dies erleichtert das Kopieren der Konfigurationsdatei auf ein anderes System.

Sie können $ HOME mit: echo $ HOME überprüfen. Wenn Sie vimrc unter $ HOME / vimfiles erstellen, heißt es vimrc, aber unter $ HOME. Wenn Sie es setzen, wird es "_vimrc" genannt.

Was ich getan habe

Naiver Weg

:!python %

Der Ex-Befehl :! Hoge führt cmd hoge aus und weist es<F5>zu.

autocmd BufRead,BufNewFile *.py inoremap <F5> <Esc>:w<CR>:! python %<CR>
autocmd BufRead,BufNewFile *.py nnoremap <F5> :w<CR>:! python %<CR>

Jetzt können Sie die geöffnete Datei ausführen, indem Sie drücken.

Problem

Das Ausführungsergebnis verschwindet durch Drücken von ENTER.

So öffnen Sie einen neuen Puffer

Ich habe es so eingestellt, dass ein neuer Puffer geöffnet wird, um das oben genannte Problem zu lösen. Wenn er jedoch nicht bereits geöffnet ist, wird er jedes Mal multipliziert, wenn ich "" drücke. Daher muss ich Fälle trennen, um dies zu lösen. Weil es lang wurde, habe ich eine Funktion namens "Pyexe ()" erstellt. Zu diesem Zeitpunkt wird, da das zuvor verwendete :! Hoge nur ausgeführt wird, das System (hoge) verwendet, das die Ausgabe als Zeichenfolge erhält.

"Funktion definieren
function Pyexe()
"Vorbereitung der Rückkehr nach Eingabe des Ergebnisses in den Ausgabepuffer
    "Ruft die aktuelle Position des Cursors ab
    :let pos=getpos(".")
    "ID des aktuellen Fensters abrufen
    :let cwinid=win_getid()
    "Ruft den Dateinamen des Puffers des aktuellen Fensters ab
    :let fileName=expand('%')
"Puffer für Ausgabe einstellen
    "Legen Sie den anzuzeigenden Dateinamen fest
    :let outFileName="~pyOut"
"Vorbereiten, um zu überprüfen, ob das Ausgabefenster bereits geöffnet ist
    "Rufen Sie die Puffernummer ab, wenn ein Puffer für die Ausgabe vorhanden ist.Wenn es nicht existiert-1.
    :let bnr=bufnr(outFileName)
    "Fenster-ID des Puffers für die Ausgabe abrufen(Listenformat).Leere Liste, falls nicht vorhanden.
    :let wids=win_findbuf(bnr)
"Wenn ein Puffer für die Ausgabe vorhanden ist, ändern Sie die Fenster-ID in outWindid.Machen Sie, wenn es nicht existiert.
    if bnr == -1 || len(wids)==0
    "Wenn es nicht existiert
        "Ermöglichen, dass der Ausgabepuffer gleichzeitig geschlossen wird, wenn die Python-Datei geschlossen wird
        :autocmd QuitPre <buffer> exe(':bwipeout!') g:bnr
        "Teilen Sie das Fenster, um einen Puffer für die Ausgabe zu erstellen
        :exe 'vertical rightbelow new' outFileName
        "Setzen Sie den Puffertyp auf nofile, da der Benutzer nicht schreibt
        :set buftype=nofile
        "Stellen Sie den Ausgang durch einfaches Drücken von q im normalen Modus ein.
        "<buffer>Die Option sollte nur auf den diesmal erstellten Ausgabepuffer angewendet werden..
        :nmap <buffer> q <C-u>:bwipeout!<CR>
        "Passen Sie die Fenstergröße an
        :vertical resize 70
        "Rufen Sie die Pufferpuffernummer für die Ausgabe ab
        :let bnr=bufnr(outFileName)
    else
    "Wenn da
        "Rufen Sie die Fenster-ID des Ausgabepuffers aus der Liste ab
        :let outWinid=wids[0]
        "Wechseln Sie zum Ausgabepufferfenster
      :call win_gotoid(outWinid)
    endif
"Ausgabe
    "Gehen Sie zum Ende des Ausgabepuffers
    :call setpos(bnr,"$")
    "Rufen Sie cmd auf, um Python auszuführen
    :let @r=system('python '.fileName)
    "In den Ausgabepuffer legen
    :put r
    "Neubildung
    :redraw!
"Zurück zur Startposition
    "Gehen Sie zum Python-Dateifenster
    :call win_gotoid(cwinid)
    "Bewegen Sie den Cursor auf die Startposition
    :call setpos(".",pos)
endfunction

Weisen Sie dies danach nur für Python zu.

"Nur für Python-Dateien<F5>Ermöglichen Sie die Ausführung durch Drücken einer Taste
autocmd BufRead,BufNewFile *.py inoremap <F5> <Esc>:w<CR>:call Pyexe()<CR>
autocmd BufRead,BufNewFile *.py nnoremap <F5> :w<CR>:call Pyexe() <CR>

Recommended Posts

Die Geschichte, wie man Python ausführt und die Ergebnisse anzeigt, ohne vim zu schließen
Die Geschichte von Python ohne Inkrement- und Dekrementoperatoren.
Die Geschichte von Python und die Geschichte von NaN
Der Prozess der Installation von Atom und der Ausführung von Python
Die Geschichte der Manipulation globaler Python-Variablen
Grundlagen zum Ausführen von NoxPlayer in Python
Die Geschichte, deep3d auszuprobieren und zu verlieren
Die Geschichte der Verarbeitung A von Blackjack (Python)
Die Geschichte, dass die Lernkosten von Python niedrig sind
Zusammenfassung der Unterschiede zwischen PHP und Python
Die Antwort von "1/2" unterscheidet sich zwischen Python2 und 3
Angeben des Bereichs von Ruby- und Python-Arrays
Vergleichen Sie die Geschwindigkeit von Python Append und Map
Bildverarbeitung? Die Geschichte, Python für zu starten
Die Geschichte des Lesens von HSPICE-Daten in Python
Berücksichtigung der Stärken und Schwächen von Python
Python - Erläuterung und Zusammenfassung der Verwendung der 24 wichtigsten Pakete
der Zen von Python
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Die Geschichte von FileNotFound im Python open () -Modus = 'w'
Die Geschichte von sys.path.append ()
Referenz und Änderung der rekursiven Python-Obergrenze
Ich habe mir die Versionen von Blender und Python angesehen
Die Geschichte der automatischen Sprachkonvertierung von TypeScript / JavaScript / Python
Die Geschichte der Implementierung des Themas Facebook Messenger Bot mit Python
Visualisieren Sie die Ergebnisse von Entscheidungsbäumen, die mit Python scikit-learn erstellt wurden
Sakura Die Geschichte, wie die Python-Flasche im Internet funktioniert hat
Die Geschichte der Anzeige von Bildern mit OpenCV oder PIL (nur)
Die Geschichte eines Rubinisten, der mit Python :: Dict-Daten mit Pycall kämpft
Der Prozess, Python-Code objektorientiert zu machen und zu verbessern
Der Websocket von toio (nodejs) und python / websocket stellen keine Verbindung her.
Ich möchte die Natur von Python und Pip kennenlernen
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
[Python] Tensorflow 2.0 unterstützte Python 3.8 nicht, daher die Geschichte des Downgrades von Python
Spielen Sie mit dem Passwortmechanismus von GitHub Webhook und Python
Die Geschichte des Baus von Zabbix 4.4
Auf dem Weg zum Ruhestand von Python2
Verwenden Sie die Clustering-Ergebnisse erneut
Über die Funktionen von Python
Quellinstallation und Installation von Python
Die Kraft der Pandas: Python
Die Geschichte, zum ersten Mal seit 5 Jahren wieder an die Front zurückzukehren und Python Django umzugestalten
Ich habe die Geschwindigkeit von Hash mit Topaz, Ruby und Python verglichen
Die Geschichte, dass die Version von Python 3.7.7 nicht an Heroku angepasst wurde
Hinweis: Holen Sie sich das erste und letzte Element von Python OrderedDict zerstörungsfrei
Python: Aktualisieren Sie pyenv ohne nachzudenken und lösen Sie das Phänomen "Wo ist Python?"
Der 14. März ist der Tag des Umfangsverhältnisses. Die Geschichte der Berechnung des Umfangsverhältnisses mit Python
[Einführung in Python] Ich habe die Namenskonventionen von C # und Python verglichen.
[Python] So erhalten Sie den ersten und den letzten Tag des Monats
[Python] Ich habe die Theorie und Implementierung der logistischen Regression gründlich erklärt
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
[Python] Ich habe die Theorie und Implementierung des Entscheidungsbaums gründlich erklärt
Rufen Sie den Wert des Dropdown-Menüs mit Python und Selen ab und legen Sie ihn fest
Konvertieren Sie das Ergebnis von Python Optparse, um es zu diktieren und zu verwenden