code - vim intellisense
Vim: fuente basada en una cadena (2)
Parece que no puedo encontrar una respuesta a esto en cualquiera de los numerosos tutoriales de scripting de Vim en línea. Lo que quiero hacer es construir un nombre de archivo de un script a partir de variables de entorno y luego buscarlo en su origen. Y quiero hacerlo en Vim.
Si tuviera que hacerlo en una concha, haría algo como esto:
source ${HOME}/.vim/myscript_${FOO}.vim
¿Cómo lo hago en Vim?
Puedes construir una cadena y luego usar el comando de ejecución:
exec "source " . $HOME . "/.vim/myscript_" . l:foo . ".vim"
(El l:foo
aquí es un ejemplo del uso de una variable local desde dentro de una función).
Editar:
Pero de hecho exec
es una exageración en este caso específico. Como muestra rampion aquí , la tarea de OP se puede hacer directamente con:
source $HOME/.vim/myscript_$FOO.vim
Aunque vim no nos permite ajustar los nombres de las variables de forma ordenada en ${...}
como podríamos hacer en el shell, en este caso, tenemos la suerte de que HOME
sea terminado por el /
y FOO
por el .
En general, se necesitaría exec
si quisiera seguir una de las variables por un carácter que no termina. Por ejemplo:
exec "source " . $BAR . "_script.vim"
insertaría la variable BAR
, mientras que lo siguiente intentaría encontrar una variable llamada BAR_script
:
source $BAR_script.vim " Possibly not what you wanted!
Solo :source
funciona para mi:
% export MYPATH=''a/b/c''
% mkdir -p $MYPATH
% export MYFILE=''temp.vim''
% cat > $MYPATH/$MYFILE
echo ''hello world''
^D
% vim
:source $MYPATH/$MYFILE
hello world
Sin embargo, si desea que algunos scripts vim se obtengan de forma automática, simplemente póngalos en su directorio ~/.vim/plugin/
y se cargarán para usted, sin tener que hacerlo manualmente.
Desde :help expand-environment-var
(que obtuve al hacer :help environment
y tabulación hasta el primer resultado probable)
*:set_env* *expand-env* *expand-environment-var* Environment variables in specific string options will be expanded. If the environment variable exists the ''$'' and the following environment variable name is replaced with its value. If it does not exist the ''$'' and the name are not modified. Any non-id character (not a letter, digit or ''_'') may follow the environment variable name. That character and what follows is appended to the value of the environment variable. Examples: > :set term=$TERM.new :set path=/usr/$INCLUDE,$HOME/include,. When adding or removing a string from an option with ":set opt-=val" or ":set opt+=val" the expansion is done before the adding or removing.
Tiendo a encontrar la ayuda incorporada de vim más útil que cualquier otra cosa, pero me lleva un tiempo saber qué buscar.