plugin code best awe vim

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.