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.

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

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"

15

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

:! sh %

10

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


2

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

map <F5> :!%

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

!./%
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.