Como você encontra onde uma variável foi atribuída pela última vez?

11

Estou tentando definir g:netrw_list_hidee não parece funcionar. Não importa o que eu defina no meu, .vimrcele sempre tem o valor ,^\.\.\=/\=$. Somente se eu originar meu vimrcarquivo novamente, ele conterá o valor correto.

Como depuro isso? Eu acho que existe algum plugin que está definindo essa variável? Possivelmente após o meu vimrcser carregado, então eu quero ver onde ele está sendo definido.

Cezar
fonte
2
:vim netrw_list_hide **/*
romainl
3
atualmente não é realmente possível além de inspecionar a fonte manualmente. Eu criei este PR que permitiria isso.
Christian Brabandt
O comando detalhado não ajudará neste caso?
SibiCoder

Respostas:

11

Você pode capturar um log completo de uma sessão do Vim vim -V20vimlog. Após sair do Vim, examine (pesquise grep) o vimlogarquivo de log :let g:netrw_list_hide.

Ingo Karkat
fonte
14

Se você estava procurando o último ponto em que uma opção foi definida (em vez de uma variável), você pode usar o :verbosecomando:

:4verbose set is?
  incsearch
        Last set from ~/.vim/vimrc

Mas atualmente não há comando equivalente para variáveis.

Você pode inspecionar o código, ou usar a pesquisa na fonte, possivelmente usando :vimgrep, :vim netrw_list_hide **/*(como mencionado nos comentários).

Outra alternativa é usar a 'verbose'opção para repetir tudo o que é executado depois que você define a variável. Como será uma grande saída ecoada na tela, você precisará salvá- la (em um registro, por exemplo):

" in your .vimrc, after you set the variable
redir @b
set verbose=15

Após o término da inicialização, restaure o detalhado para o valor padrão e pare o redirecionamento:

:set vbs&
:redir end

Pode ser necessário pressionar Ctrl-C algumas vezes, dependendo dos autocmds / plugins que você está usando.

Em seguida, você pode colar o conteúdo do registro usando "bpe analisando o " log de inicialização ".

mMontu
fonte