Dans Vim, quels sont les paramètres / commandes qui commencent par un préfixe (b :, g :)?

26

J'ai installé ce plugin avec Vundle et j'ai remarqué qu'il a certains paramètres (le README les appelle des variables) comme:

b:javascript_fold

et

g:javascript_conceal

Le README dit que je «peux les ajouter à votre .vimrcpour activer / désactiver leurs fonctionnalités». Mais je ne sais pas comment les régler via :. Ces variables ne sont pas disponibles via setou echo, ni ne sont des commandes ou des fonctions. Comment puis-je les définir / inspecter?

Dmitry Minkovsky
la source

Réponses:

48

Ce sont des variables internes.

Vous les créez et les modifiez avec la :letcommande:

:let g:var_name = 1

Vous les détruisez avec :unlet.

Vous les inspectez avec :echo.

Le préfixe montre la portée 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.

L'ajout de ce type de variable à votre ~/.vimrcva comme ceci:

let g:var_name = 1

Habituellement, seules les variables globales doivent être ajoutées à votre ~/.vimrc, les variables locales du tampon doivent être utilisées dans les plugins de type de fichier.

romainl
la source
2
Pour être complet: sans préfixe: Dans une fonction: local à une fonction; sinon: global
Tom Hale
11

Les variables de configuration ne sont pas des options, elles "émulent" uniquement celles des plugins. Par conséquent, vous n'utilisez pas :set, mais :let(et :echopour répertorier leur valeur actuelle).

Le sceau devant la variable détermine sa portée. g:signifie global; ceux-ci doivent généralement être définis avant le chargement du plugin, c'est-à-dire en plaçant

let g:javascript_conceal = 1

dans votre ~/.vimrc(et redémarrer Vim).

Comme certaines configurations ne s'appliquent qu'à certains types de fichiers , ceux-ci utilisent le b:préfixe. Les définir ne ~/.vimrcferait que les appliquer au premier tampon ouvert, ce qui n'est pas ce que vous voulez. Au lieu de cela, vous devez vous connecter au mécanisme de détection de type de fichier .

Si vous souhaitez uniquement activer une option de configuration pour certains types de fichiers, utilisez :let b:var = valueplutôt et placez les commandes correspondantes dans ~/.vim/after/ftplugin/{filetype}.vim, où {filetype}est le type de fichier réel (par exemple javascript). (Cela nécessite que vous ayez :filetype plugin on; l'utilisation du répertoire after vous permet de remplacer tous les paramètres de type de fichier par défaut effectués par $VIMRUNTIME/ftplugin/{filetype}.vim.)

Alternativement, vous pouvez définir un :autocmd FileType {filetype} setlocal option=valuedirectement dans votre ~/.vimrc, mais cela a tendance à devenir lourd une fois que vous avez de nombreuses personnalisations.

autocmd Filetype javascript let b:javascript_fold = 1
Ingo Karkat
la source