2012-10-11 86 views
42

Hay muchas preguntas sobre SO al ejecutar los programas de shell desde vim. Lo que me pregunto es si es posible hacer lo contrario - es decir,Ejecutar el comando vim desde la línea de comandos

$ vim :BundleInstall 

por ejemplo, para permitir que corra BundleInstall como parte de una secuencia de comandos, en lugar de tener que abrir Vim y ejecutarlo manualmente en primera ¿corriendo? es posible?

Respuesta

73

Nota, ahora la sintaxis ha cambiado, y la línea debe decir (según @sheharyar):

vim +PluginInstall +qall 

Para la posteridad, con anterioridad, la línea correcta era:

vim +BundleInstall +qall 

En caso de que cualquier persona que yo esté buscando! Nota: esto está en el Github README para vundle.

+0

Esto es directamente del README vundle aquí: https://github.com/gmarik/vundle – Conner

+1

Sí, encontré que después de obtener esto trabajando sobre la base de la página de manual – jvc26

+0

Sorprendentemente perspicaz. Me encanta cómo ni siquiera tenemos que 'man vim' más y desplazarnos hacia abajo dos páginas gracias a SO. – peth

0

¿El

vim --cmd BundleInstall 

hacer lo que quiera?

+0

Necesita ejecutar el comando después de cargar el complemento. use la opción '-c' – kev

20

creo que esto es lo que necesita:

Debe comprobar vim página hombre:

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

o:

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

Realmente depende de lo que quieras hacer. También, como se describe en el archivo Léame vundle, si inicia vim como esto:

vim +BundleInstall +qall 

Esto instalará todas las opciones de paquetes sin abrir vim. Y sólo para aclarar, desde el 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. 

espero que ayude!

2

Voy a agregar otra respuesta para las personas que buscan una solución más general.

vim +command funciona para ejecutar un comando Vim pero para ejecutar varios comandos Vim desde un shell. En su lugar, inicie Vim en modo Ex y proporcione comandos con un documento Here. Este es un ejemplo de un script que escribí. Busca un patrón en el archivo e inserta algo de texto antes.

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

¿Qué tal algo más complejo?

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

No estoy seguro de si eso es totalmente correcto, pero me sirve. Gracias @ jvc26

+0

No puedo entender si esta es una pregunta nueva (que luego debería formularse por separado) o una nueva respuesta. –

+0

Es solo un ejemplo de cómo usar la solución con comandos de varias palabras como '+ set ff = unix' y con' + wq' en lugar de '+ qall'. En mi caso, necesito actualizar el archivo. Publiqué esto como respuesta solo porque no puedo publicar un comentario (se necesita una reputación de más de 50) – graceman9

+0

* cáncer curado * gracias ... –

Cuestiones relacionadas