Como obtenho o Vim para carregar automaticamente a configuração .vimrc do diretório atual?

3

Eu tenho alguns projetos que precisam de comandos diferentes para rodar, construir e testar, então eu coloquei um arquivo .vimrc em cada um dos diretórios do projeto que definem mapeamentos para alguns botões F. Nos arquivos de ajuda do vim, ele diz:

'exrc' 'ex'             boolean (default off)
                        global
                        {not in Vi}
        Enables the reading of .vimrc, .exrc and .gvimrc in the current
        directory.

Portanto, eu tenho essa opção ativada, mas quando eu :cd em um diretório, o arquivo .vimrc não é carregado. Se eu escrever :so .\.vimrc , ele carrega bem. Por que não está sendo carregado automaticamente?

Estou usando o gVim 7.3 x64 para Windows.

    
por Hubro 11.01.2013 / 14:32

4 respostas

5

Se 'exrc' for definido, o diretório atual será pesquisado por um arquivo chamado _vimrc , .vimrc ou _exrc na inicialização . Isso não é feito toda vez que você :cd para um novo diretório. Veja

:help .vimrc
    
por 11.01.2013 / 17:25
2

Aqui está algo que você pode tentar:

autocmd BufEnter{,other event} {full path to file} {do blah}

E você colocaria isso em um grupo de comandos automático:

augroup {name you want here}
    autocmd!
    autocmd BufEnter{,other event} {full path to file} source {full path to vimrc file}
    autocmd BufEnter{,other event} {full path to file} {define mapping here}
    autocmd BufEnter{,other event} {full path to file} {do blah}
    autocmd BufEnter{,other event} {full path to file} {do blah}
augroup END

Assim, você colocaria suas configurações aqui, dessa forma, se estiver em um buffer específico, esses mapeamentos serão carregados.

Eu também recomendo fazer alguns eventos BufLeave a fim de desfazer esses mapeamentos quando você não estiver nesses buffers, se quiser.

isso funcionaria para as suas necessidades? Eu não tenho certeza exatamente do que você precisa, então eu simplesmente fiz um modelo para você. :)

Como mostrei, você pode fazer isso de várias maneiras, e decidir qual é melhor para suas necessidades. Desculpe eu não estou realmente resolvendo o problema subjacente de que a configuração não está funcionando embora. : (

    
por 11.01.2013 / 15:12
1

Apenas para registro, o que acabei fazendo foi criar um atalho para cada um dos meus projetos e carregar um arquivo de configuração específico do projeto como um arquivo de sessão usando -S session.vim .

    
por 11.01.2013 / 19:34
0

Na minha opinião, essa é a melhor variante:

if getcwd() =~ '^\(/my/safe/dir1/\|/my/safe/dir2/\)'
  set secure exrc
endif

Origem de: link mas sintaxe fixa

    
por 10.01.2016 / 22:56

Tags