Estou com um problema no Vim e acho que pode estar no meu vimrc
arquivo (ou foi informado que poderia ser o meu vimrc
arquivo).
Como verifico isso? Se for o meu vimrc
arquivo, como sei exatamente onde está o problema?
Estou com um problema no Vim e acho que pode estar no meu vimrc
arquivo (ou foi informado que poderia ser o meu vimrc
arquivo).
Como verifico isso? Se for o meu vimrc
arquivo, como sei exatamente onde está o problema?
Respostas:
A primeira coisa que você quer fazer é iniciar o Vim com as configurações padrão:
vim -u NONE -U NONE -N
Os -u NONE
impede Vim de carregar o seu vimrc, -U NONE
impede Vim de carregar o seu gvimrc, e -N
diz ao Vim para usar nenhum modo compatível (isto não é necessário, mas a maioria dos usuários Vim não são usados para o modo "compatível"). Observe que NONE
é necessário estar em letras maiúsculas.
No Windows, você pode adicionar esses sinalizadores criando um novo atalho 1 .
Se o problema persistir, você saberá que não é algo no seu vimrc.
Se o problema desaparecer, agora você é causado por algo no seu arquivo vimrc.
Viva! Vá e faça sua pergunta. Certifique-se de mencionar que você tentou iniciar o Vim sem um arquivo vimrc!
Se você ainda não o fez, provavelmente deseja salvar uma cópia de backup do seu arquivo vimrc primeiro.
A próxima coisa que você provavelmente quer fazer é desativar todos os plugins primeiro; plugins podem alterar bastante no Vim. Se isso resolver o problema, tente descobrir
qual plug-in reativando-o um por um. Depois de descobrir qual plugin exatamente causa o problema, você pode tentar corrigi-lo lendo a documentação deste plugin e / ou fazendo uma pergunta marcada com plugin-<name>
.
Se é não um plugin, e você não tem qualquer ideia do que está causando o problema, então é um procedimento de tentativa e erro. Comente uma ou mais linhas no seu vimrc, inicie o Vim, verifique se o problema ocorre e repita este procedimento até que o problema pare de ocorrer. A maneira mais rápida de fazer isso é:
No final, você deve ter uma única opção ou uma combinação de algumas opções que causam o seu problema. Você pode descobrir mais sobre qualquer opção no Vim usando:
:help 'option_name'
As aspas são importantes aqui, geralmente funcionam sem elas, mas às vezes você acaba na página errada se as omitir.
Se você ainda estiver confuso depois de ler a página de ajuda, sabe onde fazer uma pergunta ;-)
Se você deseja isolar um único plugin, talvez faça uma pergunta sobre ele, você deseja carregar o mínimo possível, mas ainda carrega o plugin; você pode fazer isso facilmente com o recurso de pacotes do Vim. Isso requer o Vim 8 ou uma versão razoavelmente recente do Neovim.
Crie um novo diretório vazio; usaremos o ~/plugin
caminho neste exemplo. Agora coloque o plugin no pack/plugins/start/$name
diretório regular . Por exemplo:
git clone https://github.com/fatih/vim-go.git ~/plugin/pack/plugins/start/vim-go
Crie um test-vimrc
arquivo com o seguinte conteúdo; isso garantirá que o Vim carregue plugins do ~/plugin
diretório e não do ~/.vim
diretório:
set nocompatible
set packpath=~/plugin,/usr/share/vim/vimfiles,/usr/share/vim/vim80,/usr/share/vim/vimfiles/after,~/plugin/after
packloadall!
syntax on
filetype plugin indent on
Inicie o Vim com:
vim -U NONE -u ~/test-vimrc
Agora você tem um vimrc mínimo com apenas este único plugin.
Notas de rodapé
1 Por exemplo: em 64 bits do Windows, o atalho seria algo parecido com isto: "C:\Program Files (x86)\Vim\vim74\vim.exe" -u NONE -U NONE -N
. Para criá-lo, clique com o botão direito do mouse em File Explorer onde deseja o atalho, selecione Novo -> Atalho e cole o texto do atalho. Pode ser necessário alterar o caminho do Vim se o seu Vim estiver instalado em outro local.
-U NONE
se tiver -u NONE
.
Existe o -D
parâmetro Vim especialmente para depuração, que entrará no modo de depuração após executar o primeiro comando a partir de um script.
Por exemplo, para executar o Vim no modo de depuração sem nenhum plug-in, execute como:
vim --noplugin -D
Digite n
/ next
para analisar a próxima linha e continue pressionando Enter.
E cont
ou q
para voltar à vim
interface.
Se você estiver usando uma versão da GUI, insira um gui
comando no vimrc para iniciar a depuração logo após esse comando.
Pressione Ctrl+ dpara obter a lista de comandos disponíveis
Consulte Mais informação:
:help debug-scripts
Como já mencionado, primeiro tente vim -u NONE -U NONE -N
garantir que seu vanilla vim esteja funcionando bem.
Em seguida, inicie o vim normalmente e verifique
:messages
de dentro do vim após o problema, que mostrará todos os avisos e erros.
Por fim, inicie o vim com o seguinte comando
vim -V9logfile.log
que criará um arquivo de log chamado logfile.log
, -V9
é o nível de log e tenta reproduzir seu problema.
Mais uma dica: por mais que pareça um homem das cavernas, gosto de adicionar: echom "message" ao meu .vimrc para ver o que está sendo executado e o que não é.
Por exemplo
if executable('ag')
:echom "AG FOUND"
...
endif
Isso me ajuda a ver rapidamente se o bloco if está sendo executado, etc. A mensagem será impressa no console na próxima vez que você iniciar o vim.
echom
outro comando interessante é :messages
fazer eco do log completo das mensagens. Às vezes, pode ser útil olhar para eles após a inicialização.
Uma coisa que eu encontrei ajuda é manter uma coleção de variáveis que alternam partes do seu, .vimrc
para que você possa desabilitar ou habilitar partes dele sem precisar comentar nada. Ele também tem o agradável efeito colateral de forçá-lo a pensar na organização do seu .vimrc
.
" feature toggles in vimrc
let g:vimrc_feat_pathogen = 1
let g:vimrc_feat_core_minimal = 1
let g:vimrc_feat_matchit = 1
let g:vimrc_feat_options = 1
let g:vimrc_feat_colors_and_highlight = 1
let g:vimrc_feat_key_rebinding_arpeggio = 1
let g:vimrc_feat_key_rebinding = 1
let g:vimrc_feat_autocommand_group = 1
let g:vimrc_feat_custom_definitions = 1
let g:vimrc_feat_load_opam = 1
Aqui está um exemplo de uma seção protegida por um if
:
if g:vimrc_feat_core_minimal
set nocompatible
filetype plugin indent on
syntax on
endif
Meu tempo de carregamento do vimrc foi muito lento, em torno de 400ms, e eu o reduzi para 20ms apenas removendo esta linha:
silent !mkdir ~/.config/nvim/backups > /dev/null 2>&1
Verifique se você não tem chamadas para comandos externos como esse.
Aqui está um procedimento muito simples para você começar.
:source %
ou:so $MYVIMRC