vim não recarrega vimrc com patógeno

1

Praticamente o título. Quando edito meu arquivo vimrc e ele tem a linha

call pathogen#infect()

as alterações não entram em vigor até eu reiniciar o vim. Isso se aplica mesmo se eu não tiver a pasta bundle em ~/.vim e se essa linha estiver no final ou no início do arquivo vimrc . Eu acho que isso não deveria ser o caso, então o que está acontecendo?

Edite para limpar as coisas:

Estou tentando recarregar o arquivo .vimrc usando :source $MYVIMRC , o que é bem-sucedido quando tento isso sem a linha pathogen .

Editar: alguns detalhes

Esta é uma versão recém-instalada do Linux, e o problema apareceu nas minhas várias tentativas de comandos :noremap e :iabbreviate . Comandos que alteram a aparência (por exemplo, set number parecem funcionar)

Editar: mais alguns detalhes

Aqui está um exemplo de algo que não funciona com o meu arquivo .vimrc

:set number! " To indicate that I do reload the file

" replacing gamma with \gamma, was here when opened gvim
:autocmd FileType tex :iabbrev <buffer> gamma \gamma
" replacing lambda with \lambda added after launching gvim
:autocmd FileType tex :iabbrev <buffer> lambda \lambda

call pathogen#infect()

Adicionar o arquivo lambda e, em seguida, executar source ~/.vimrc com um arquivo tex aberto no segundo plano resultou sem efeito ao digitar lambda . Eu tive que reiniciar o gvim.

    
por Yotam 02.08.2015 / 22:59

2 respostas

2

Seu problema imediato

O lado direito de um autocommand é executado quando o evento projetado é acionado.

No seu caso, o evento FileType é acionado quando o Vim determina o tipo de arquivo de um buffer, algo que geralmente acontece quando um novo buffer é criado.

Como seu arquivo já está carregado quando você executa :source ~/.vimrc , nenhum de seus comandos personalizados é executado. Para que eles se apliquem ao buffer atual, você precisará forçar um recarregamento com :edit .

O problema mais amplo

Adicionar FileType autocommands ao seu vimrc não é realmente uma boa ideia, porque o Vim faz todo o trabalho para você! Quando ele decide que o buffer atual tem um tex FileType, o Vim imediatamente tenta originar cada arquivo tex.vim que pode encontrar nos seguintes diretórios, na ordem :

1. ~/.vim/ftplugin/
2. $VIMRUNTIME/ftplugin/
3. ~/.vim/after/ftplugin/

Como o Vim tenta obter esses arquivos de qualquer maneira, não é necessário adicionar uma segunda (e terceira e quarta ...) verificação no seu vimrc . Um desses arquivos é onde você deve colocar suas configurações e mapeamentos personalizados.

O primeiro, ~/.vim/ftplugin/tex.vim , é originado antes do ftplugin global e, portanto, pode ser substituído. Este arquivo não é um lugar seguro para suas configurações.

Alterar o ftplugin global, $VIMRUNTIME/ftplugin/tex.vim , é um grande não-não (não sobrevive a uma atualização, não pode ser garantido que funcione, pode precisar de privilégios administrativos, etc.).

Isso nos deixa com o último, ~/.vim/after/ftplugin/tex.vim , o lugar ideal para seus tex mappings personalizados:

iabbrev <buffer> gamma \gamma
iabbrev <buffer> lambda \lambda
    
por 03.08.2015 / 23:38
1

Não sei como seu problema está relacionado ao patógeno, mas você deve verificar os seguintes pontos:

  1. Se você pretende recarregar seu vimrc, você deve usar grupos autocmd, como explicado em :help autocmd-groups . No formulário atual, seu evento FileType ficará rapidamente confuso - tente recarregar seu vimrc algumas vezes e, em seguida, execute :au FileType tex .

  2. Observe que você não está criando diretamente as abreviações, mas criando comandos automáticos que, por sua vez, criarão abreviações. Apenas atualizar o vimrc não é suficiente, é necessário que os autocommands sejam executados para atualizar seus mapeamentos / abreviações. Você provavelmente não vê a atualização porque o evento Filetype é geralmente acionado uma vez para um determinado buffer. Você pode verificar isso incluindo um comando echom no autocommand (a propósito, o : no início de várias linhas no seu vimrc não tem sentido; se você realmente gostar deles, deve incluí-lo no call pathogen... to ser consistente). Você poderia tentar excluir o buffer :bd e abri-lo novamente, ou simplesmente definir o tipo de arquivo novamente ( :set ft=tex ).

  3. Quando você pretende alterar o comportamento de um tipo de arquivo específico, evite sobrecarregar o vimrc criando um arquivo no diretório after, conforme explicado em :h after-directory . Para o seu exemplo, crie o arquivo ~ / .vim / after / ftplugin / tex.vim contendo os mapeamentos / abreviações específicos.

por 03.08.2015 / 21:41

Tags