texto modo linea insertar inicio cómo con comandos comando busquedas archivo vim

modo - Vim: ¿cómo ejecutar un comando inmediatamente al iniciar vim?



vim inicio (5)

Tengo un complemento (FindFile.vim) que debe ejecutarse :FindFileCache . cada vez que comienzo vim a juntar un caché de archivos para una apertura rápida ... tengo que ejecutar esto cada vez que empiezo vim.

¿Cómo podría escribir un comando que se ejecuta una vez, cada vez que se inicia vim?


Crea un archivo llamado ~/.vim/after/plugin/whatever_name_you_like.vim y llénalo con

FindFileCache .

El orden en que se leen y ejecutan los scripts en los directorios vim se describe en :help ''runtimepath''


El mejor lugar para guardar sus cosas de configuración es en su archivo .vimrc . Sin embargo, es originario demasiado temprano, verifique :h startup :

At startup, Vim checks environment variables and files and sets values accordingly. Vim proceeds in this order: 1. Set the ''shell'' and ''term'' option *SHELL* *COMSPEC* *TERM* 2. Process the arguments 3. Execute Ex commands, from environment variables and/or files *vimrc* *exrc* 4. Load the plugin scripts. *load-plugins* 5. Set ''shellpipe'' and ''shellredir'' 6. Set ''updatecount'' to zero, if "-n" command argument used 7. Set binary options 8. Perform GUI initializations 9. Read the viminfo file 10. Read the quickfix file 11. Open all windows 12. Execute startup commands

Como puede ver, su .vimrc se cargará antes de los complementos. Si lo pones :FindFileCache . en él se producirá un error, ya que ese comando aún no existe. (Existirá una vez que el complemento esté cargado en el paso 4)

Para resolver esto, en lugar de ejecutar el comando directamente, crea un auto-comando. Los autocomandos ejecutan algunos comandos cuando ocurre un evento. En este caso, el evento VimEnter parece apropiado (desde :h VimEnter ):

*VimEnter* VimEnter After doing all the startup stuff, including loading .vimrc files, executing the "-c cmd" arguments, creating all windows and loading the buffers in them.

Entonces, simplemente coloca esta línea en tu .vimrc :

autocmd VimEnter * FindFileCache .


Para obtener incluso más tarde que otras respuestas, pero aún después del inicio, use un temporizador en .vimrc. Por ejemplo, este código en .vimrc espera medio segundo después del inicio antes de establecer una variable.

function DelayedSetVariables(timer) let g:ycm_filetype_blacklist[''ignored''] = 1 endfunction let timer=timer_start(500,''DelayedSetVariables'')

(La variable en el ejemplo es la lista negra del complemento YouCompleteMe. Supongo que el complemento inicia de manera asíncrona otro proceso que crea variables, pero no está listo para cuando vim haya comenzado. La variable no existe cuando intento configúrelo en .vimrc, un archivo posterior o evento VimEnter. Esto es específico de mi sistema Windows de alguna manera, la documentación de YCM dice que .vimrc debería funcionar para establecer opciones.)


Ponga FindFileCache en su .vimrc .

Los comandos de autocompletar son diferentes y no funcionarán para su escenario.


También está la bandera -c de vim. Hago esto en mi configuración de tmuxp para que vim comience con una división vertical:

vim -c "vnew"