2012-10-11 13 views
42

Istnieje wiele pytań dotyczących uruchamiania programów powłoki z vim. Co Zastanawiam się, czy jest możliwe, aby zrobić odwrotnie - tjUruchom polecenie vim z linii poleceń

$ vim :BundleInstall 

na przykład, pozwala mi uruchomić BundleInstall jako część skryptu, zamiast otworzyć Vima i uruchomić go ręcznie na pierwszy bieganie? czy to możliwe?

Odpowiedz

73

Uwaga, teraz składnia się nie zmieniło, a linia powinna czytać (zgodnie @sheharyar):

vim +PluginInstall +qall 

dla potomnych, wcześniej, prawidłowa linia była:

vim +BundleInstall +qall 

gdyby ktoś inny niż ja szukam! Uwaga: jest to Github README dla vundle.

+0

To jest bezpośrednio z Vundle README tutaj: https://github.com/gmarik/vundle – Conner

+1

Tak - okazało się, że po otrzymaniu działa na podstawie strony man. – jvc26

+0

Niezwykle wnikliwe. Uwielbiam to, że nie musimy nawet "man vim" i przewijamy dwie strony dzięki SO. – peth

0

Czy

vim --cmd BundleInstall 

robić to, co chcesz?

+0

Musisz wykonać polecenie po wczytaniu wtyczki. użyj opcji '-c' – kev

20

myślę, że to jest to, czego potrzebujesz:

Należy sprawdzić vim człowiek stronę:

-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. 

czyli

--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. 

To naprawdę zależy od tego, co chcesz zrobić. Ponadto, jak opisano w pliku readme vundle, jeśli uruchomić vim tak:

vim +BundleInstall +qall 

To zainstaluje wszystkie opcje wiązki bez otwierania vim. I tak dla wyjaśnienia, z 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. 

Nadzieję, że to pomaga!

2

Dodam kolejną odpowiedź dla osób, które szukają bardziej ogólnego rozwiązania.

vim +command działa, aby uruchomić jedno polecenie Vima, ale uruchomić kilka poleceń Vima z powłoki. Zamiast tego uruchom Vima w trybie Ex i podaj komendy z dokumentem Here. To jest przykład ze skryptu, który napisałem. Szuka wzoru w pliku i wstawia przed nim jakiś tekst.

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

Co powiesz na coś bardziej złożonego?

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

Nie jestem pewien, czy to jest całkowicie poprawne, ale działa dla mnie. Dzięki @ jvc26

+0

Nie mogę zrozumieć, czy jest to nowe pytanie (które powinno następnie zostać zadane osobno), czy też nowa odpowiedź. –

+0

To tylko przykład użycia rozwiązania z komendą składającą się z wielu słów, takich jak '+ set ff = unix' i' + wq' zamiast '+ qall'. W moim przypadku muszę zaktualizować plik. Wysłałem to jako odpowiedź tylko dlatego, że nie mogę opublikować komentarza (potrzebna 50+ reputacji) – graceman9

+0

* wyleczony z raka * dzięki ... –

Powiązane problemy