Vim: aktuelle Datei ausführen?

74

Wenn ich eine Datei mit einer Shebang-Zeile (z. B. #!/bin/bash) in Vim geöffnet habe und die Datei Ausführungsberechtigungen hat (dh chmod +x), weiß ich, dass ich diese eingeben kann, um sie auszuführen, ohne den Editor zu verlassen:

:! %:p
  • : für den Befehlsmodus
  • ! um einen Shell-Befehl auszuführen
  • % um auf die Datei im aktuellen Puffer zu verweisen
  • :p um den vollständigen Pfad der aktuellen Datei zu verwenden

Gibt es eine kürzere Abkürzung für diese häufige Aufgabe?

zB gibt es eine ZZVerknüpfung für :wqusw.

Robottinosino
quelle

Antworten:

75
:!%:p

ist ohne Leerzeichen kürzer.

Wenn Sie eine noch kürzere Verknüpfung wünschen, können Sie eine benutzerdefinierte Zuordnung erstellen:

nnoremap <F9> :!%:p

oder die "Mnemonik":

nnoremap <leader>r :!%:p
romainl
quelle
20
Verwenden Sie nnoremap <F9> :!%: p <Eingabe>, um die Belastung durch jedes Drücken der Eingabetaste zu verringern.
Hkyi
5
Verwenden Sie, nnoremap <F9> :!%:p<Enter><Enter>um auch Press ENTER or type command to continuenach der Skriptausführung zu überspringen
Benutzer
nnoremap <F9> :!%:p<Enter><Enter>führt den Code aus und kehrt sofort zu vim zurück. Verwenden Sie die einzelne Eingabetaste nnoremap <F9> :!%:p<Enter>, um den Ausgabebildschirm
beizubehalten
Übernnoremap . Beachten Sie auch, dass dies Dateinamen mit Leerzeichen nicht richtig behandelt. Siehe diese Antwort unten.
user202729
Ich mag es, für jede Ausführung ein neues Terminal zu haben, damit ich keine Ausgaben von früheren Läufen bekomme, die mit dem aktuellen verwechselt werden. Um dies zu tun, können Sie verwendennnoremap <F9> :!clear && %:p<Enter>
roganartu
16

Keine der vorherigen Antworten funktioniert, wenn Ihr Dateiname / Verzeichnispfad Leerzeichen enthält. Einfache Lösung.

:!"%:p"
nullUser
quelle
15

Wenn Sie keine Berechtigungen festgelegt haben, können Sie Folgendes ausführen:

:! sh %
James Dunmore
quelle
10

Nachdem Sie das einmal ausgeführt haben, wird es durch einen Kurzfilm :!!wiederholt.

Ingo Karkat
quelle
2

Sie können Ihrer .vimrc eine Schlüsselzuordnung hinzufügen

map <F5> :!%
jpmuc
quelle
1

Geben Sie beim Starten von vi den Dateipfad explizit an, wie folgt: "vi ./blablabla"

vi ./yourscript.pl

Danach starten Sie jederzeit mit nur :!%

Die andere Variante besteht darin, den Befehl vi wie folgt aufzurufen

!./%
armagedescu
quelle