No Vim, quais são as configurações / comandos que começam com um prefixo (b :, g :)?

23

Eu instalei este plugin com o Vundle e notei que ele tem algumas configurações (o README as chama de variáveis) como:

b:javascript_fold

e

g:javascript_conceal

O README diz que eu "pode adicioná-los ao seu .vimrc para ativar / desativar seus recursos". Mas não tenho certeza de como configurá-las via : . Essas variáveis não estão disponíveis através de set ou echo , nem são comandos ou funções. Como posso definir / inspecionar isso?

    
por Dmitry Minkovsky 24.03.2014 / 16:37

2 respostas

42

Estas são variáveis internas.

Você cria e modifica-os com o comando :let :

:let g:var_name = 1

Você os destrói com :unlet .

Você os inspeciona com :echo .

O prefixo mostra o escopo da variável; 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.

Adicionar esse tipo de variável ao seu ~/.vimrc é assim:

let g:var_name = 1

Normalmente, apenas variáveis globais devem ser adicionadas ao seu ~/.vimrc , variáveis locais do buffer devem ser usadas em plugins de tipo de arquivo.

    
por 24.03.2014 / 16:57
9

Variáveis de configuração não são opções, elas apenas "emulam" aquelas para plugins. Portanto, você não usa :set , mas :let (e :echo para listar seu valor atual).

O sigilo na frente da variável determina seu escopo. g: significa global; aqueles geralmente precisam ser configurados antes do plugin ser carregado, ou seja, colocando

let g:javascript_conceal = 1

no seu ~/.vimrc (e reiniciando o Vim).

Como algumas configurações se aplicam somente a determinados tipos de arquivos , estes usam o prefixo b: . Configurá-los em ~/.vimrc apenas os aplicaria ao primeiro buffer aberto, o que não é o que você deseja. Em vez disso, você precisa se conectar ao mecanismo detecção de tipo de arquivo .

Se você quiser ativar apenas uma opção de configuração para determinados tipos de arquivos, use :let b:var = value e coloque os comandos correspondentes em ~/.vim/after/ftplugin/{filetype}.vim , em que {filetype} é o tipo de arquivo real (por exemplo, javascript ). (Isso requer que você tenha :filetype plugin on ; o uso do diretório after permite que você substitua qualquer configuração de tipo de arquivo padrão feita por $VIMRUNTIME/ftplugin/{filetype}.vim .)

Como alternativa, você pode definir um :autocmd FileType {filetype} setlocal option=value diretamente no seu ~/.vimrc , mas isso tende a se tornar pesado quando você tem muitas personalizações.

autocmd Filetype javascript let b:javascript_fold = 1
    
por 24.03.2014 / 16:59

Tags