En Vim, ¿cuáles son las configuraciones / comandos que comienzan con un prefijo (b :, g :)?

26

Instalé este complemento con Vundle y noté que tiene algunas configuraciones (el archivo README las llama variables) como:

b:javascript_fold

y

g:javascript_conceal

El archivo README dice que "puedo agregarlos a su .vimrcpara habilitar / deshabilitar sus funciones". Pero no estoy seguro de cómo configurarlos :. Estas variables no están disponibles a través de seto echo, ni son comandos o funciones. ¿Cómo puedo configurar / inspeccionar estos?

Dmitry Minkovsky
fuente

Respuestas:

48

Estas son variables internas.

Los crea y modifica con el :letcomando:

:let g:var_name = 1

Los destruyes con :unlet.

Los inspeccionas con :echo.

El prefijo muestra el alcance de la variable; de :help internal-variables:

buffer-variable    b:    Local to the current buffer.
window-variable    w:    Local to the current window.
tabpage-variable   t:    Local to the current tab page.
global-variable    g:    Global.
local-variable     l:    Local to a function.
script-variable    s:    Local to a |:source|'ed Vim script.
function-argument  a:    Function argument (only inside a function).
vim-variable       v:    Global, predefined by Vim.

Agregar ese tipo de variable a su ~/.vimrcva así:

let g:var_name = 1

Por lo general, solo se deben agregar variables globales a su ~/.vimrc, las variables locales de búfer se deben usar en complementos de tipo de archivo.

romainl
fuente
2
Para completar: sin prefijo: En una función: local a una función; de lo contrario: global
Tom Hale
11

Las variables de configuración no son opciones, solo "emulan" las de los complementos. Por lo tanto, no usa :set, pero :let(y :echopara enumerar su valor actual).

El sigilo delante de la variable determina su alcance. g:significa global; normalmente deben configurarse antes de cargar el complemento, es decir, colocando

let g:javascript_conceal = 1

en su ~/.vimrc(y reiniciando Vim).

Como alguna configuración se aplica solo a ciertos tipos de archivos , estos usan el b:prefijo. Establecerlos ~/.vimrcsolo los aplicaría al primer búfer abierto, que no es lo que desea. En su lugar, debe conectarse al mecanismo de detección de tipo de archivo .

Si solo desea habilitar una opción de configuración para ciertos tipos de archivo, use :let b:var = valueen su lugar y coloque los comandos correspondientes en ~/.vim/after/ftplugin/{filetype}.vim, donde {filetype}está el tipo de archivo real (por ejemplo javascript). (Esto requiere que lo tenga :filetype plugin on; el uso del directorio after le permite anular cualquier configuración de tipo de archivo predeterminada realizada por $VIMRUNTIME/ftplugin/{filetype}.vim).

Alternativamente, puede definir un :autocmd FileType {filetype} setlocal option=valuedirectamente en su ~/.vimrc, pero esto tiende a ser difícil de manejar una vez que tenga muchas personalizaciones.

autocmd Filetype javascript let b:javascript_fold = 1
Ingo Karkat
fuente