2012-10-11 19 views
42

Es gibt viele SO Fragen zum Ausführen von Shell-Programmen von Vim. Was ich frage mich, wenn es möglich ist, das Gegenteil zu tun - alsoFühren Sie vim Befehl von der Befehlszeile aus

$ vim :BundleInstall 

zum Beispiel, mir zu erlauben, BundleInstall als Teil eines Skripts ausführen, anstatt Vim zu öffnen und manuell auf den ersten Lauf Laufen? Ist das möglich?

Antwort

73

Hinweis, jetzt die Syntax hat sich geändert, und die Zeile sollte (Stand @sheharyar):

vim +PluginInstall +qall 

Für die Nachwelt vorher die richtige Linie war:

vim +BundleInstall +qall 

Sollte jemand andere als ich schaue! Hinweis: Dies ist in der Github README für vundle.

+0

Dies ist direkt von der VUNDLE README hier: https://github.com/gmarik/vundle – Conner

+1

Yeah - gefunden, dass nach der Arbeit auf der Grundlage der Manpage – jvc26

+0

erstaunlich aufschlussreich. Ich liebe es, wie wir nicht mehr "Mann Vim" müssen und scrollen dank SO nach unten. – peth

0

Does

vim --cmd BundleInstall 

tun, was Sie wollen?

+0

Sie müssen nach dem Laden Plugin exec Befehl. Verwenden Sie '-c' Option – kev

20

denke ich, dass das ist, was Sie brauchen:

Sie sollten vim Manpage überprüfen:

-c {command} 
    {command} will be executed after the first file has been 
    read. {command} is interpreted as an Ex command. If the 
    {command} contains spaces it must be enclosed in double 
    quotes (this depends on the shell that is used). Example: 
    Vim "+set si" main.c 
    Note: You can use up to 10 "+" or "-c" commands. 

oder:

--cmd {command} 
    Like using "-c", but the command is executed just before 
    processing any vimrc file. You can use up to 10 of these 
    commands, independently from "-c" commands. 

Es hängt wirklich davon ab, was Sie tun möchten. Auch, wie bei der vundle Readme-Datei beschrieben, wenn Sie vim wie folgt starten:

vim +BundleInstall +qall 

Dadurch werden alle Bündel Optionen installieren, ohne vim zu öffnen. Und nur zur Verdeutlichung der vim documentation:

:qall 

    This stands for "quit all". If any of the windows contain changes, Vim will 
    not exit. The cursor will automatically be positioned in a window with 
    changes. You can then either use ":write" to save the changes, or ":quit!" to 
    throw them away. 

Hoffe, es hilft!

2

Ich werde eine weitere Antwort für Leute hinzufügen, die nach einer allgemeineren Lösung suchen.

vim +command funktioniert, um einen Vim-Befehl auszuführen, aber mehrere Vim-Befehle von einer Shell auszuführen. Starten Sie Vim stattdessen im Ex-Modus und geben Sie Befehle mit einem Here-Dokument ein. Dies ist ein Beispiel aus einem Skript, das ich geschrieben habe. Es sucht nach einem Muster in der Datei und fügt etwas Text davor ein.

ex --noplugin +1 "$v_file" <<-END 
      set maxmempattern=8000 
      /^\s*\<endmodule\>/i 

      FIXME \`ifdef XXX_INCLUDE_API 
       \`include "${api_file}" 
      \`endif 

      . 
      w 
      q 
    END 
2

Wie wäre es mit etwas Komplexem?

vim "+set ff=unix" "+wq" node_modules/less-monitor/bin/less-monitor 

Nicht sicher, ob das völlig korrekt ist, aber es funktioniert für mich. Danke @ jvc26

+0

Ich kann nicht verstehen, ob das eine neue Frage ist (die dann separat gestellt werden soll) oder eine neue Antwort. –

+0

Es ist nur ein Beispiel, wie man die Lösung mit Mehrwortbefehl wie '+ set ff = unix' und mit' + wq' anstelle von '+ qall' verwendet. In meinem Fall muss ich die Datei aktualisieren. Ich habe dies als Antwort geschrieben, nur weil ich keinen Kommentar schreiben kann (50+ Reputation benötigt) – graceman9

+0

* Krebs geheilt * danke ... –

Verwandte Themen