Bash-Befehl beim Schreiben einer Datei mit einer bestimmten Erweiterung ausführen?

7

Ich möchte einen Bash-Befehl ausführen, um eine .lessDatei zu schreiben , zu speichern und die entsprechende .cssDatei mit demselben Namen und im selben Verzeichnis zu generieren . Ich habe den Befehl bash, der die .cssDatei generiert .

Ich bin nicht an Vimscript gewöhnt, außer mit Vim zu arbeiten und einige Dinge in meinem zu ändern .vimrc, daher bin ich mir nicht sicher, wie ich das zum Laufen bringen kann.

Etwas zusammenfassen:

  • Wie führe ich einen Bash-Befehl aus :w?
  • Wie erhalte ich das aktuelle Dateiverzeichnis (Vimscript oder Bash)?
  • Wie erhalte ich den aktuellen Dateinamen (Vimscript oder Bash)?
oddRaven
quelle
Tun Sie das nicht in Vim, sondern verwenden Sie stattdessen einen Beobachter wie Grunt / Brunch / Gulp.
Romainl
Siehe auch
muru

Antworten:

11

Sie können Autobefehle verwenden, um Dinge automatisch auszuführen, wenn bestimmte Ereignisse auftreten. In Ihrem Fall könnten Sie dies tun:

autocmd BufWritePost *.less !less <afile>

Dieser automatische Befehl wird jedes Mal ausgeführt, wenn ein Puffer mit einem Namen geschrieben wird, der auf endet .less. Der Befehl, der ausgeführt wird, ist ein Bash-Befehl und <afile>der Name der Datei, die geschrieben wird. Im Wesentlichen !können Sie mit dem Befehl Bash-Befehle in vim ausführen.

Relevante Hilfethemen:

  • :help :autocmd
  • :help BufWritePost
  • :help :!
  • :help <afile>

HINWEIS

Vim aktualisiert den Bildschirm nicht automatisch, wenn ein Bash-Befehl ausgeführt wird. Informationen dazu finden Sie in der folgenden Antwort: Unterdrücken Sie die Ausgabe eines vim-Autokommandanten

Immergrüner Baum
quelle