Como eu especifico as configurações do Vim para todos os arquivos no diretório atual?
A solução ideal seria se o Vim pesquisasse e lesse um .vimrc no diretório atual antes de pesquisar ~ / .vimrc, e aplicasse as configurações lá para toda a árvore.
Eu vi um plugin , mas isso significa que as configurações aplicadas não são transparentes, pois exigem que o plugin seja instalado. Em contraste, uma modeline é transparente, pois independentemente do vimrc de um usuário ou invocação específica do vim, as configurações da modeline serão aplicadas a esse arquivo.
Coisas que eu tentei são
- colocar um .vimrc no diretório de trabalho
:so vimrc
no modeline.
Suponho que ambos não funcionam por motivos de segurança. Não preciso de todo o poder de um vimrc; estar vinculado a configurações aceitáveis por um modeline seria suficiente. Meu objetivo é tornar mais fácil para os vimmers adotarem padrões de codificação em um projeto.
Respostas:
Eu sou um defensor da forma de plugins . Por várias razões:
BTW, a solução do sth pode ser usada para criar um único arquivo de configuração. Isso é muito semelhante à abordagem do plug-in, exceto que o .vimrc precisa ser parasitado por opções não globais e não suporta arquivos de configuração múltiplos / compartilhados facilmente.
fonte
Você pode colocar algo assim em
$VIM/vimrc
fonte
Eu sugiro fortemente não usar
set exrc
Mesmo com
set secure
, sob * nix, vim ainda executará autocommands, shell, et al, se você possuir o arquivo. Então, se por acaso você editar um arquivo nesse tarball, enviei um.vimrc
contendo:você provavelmente vai se divertir menos do que eu.
fonte
Essa pergunta é antiga, mas parece uma preocupação bastante natural e persistente.
Minha solução é bem simples. Coloco um
.vimrc
arquivo no diretório raiz dos meus projetos. A primeira linha do.vimrc
arquivo geralmente origina~/.vimrc
e, em seguida, adiciona a configuração específica que desejo. Eu aliastvim='vim -u .vimrc'
e usotvim
em meus diretórios de projetos pessoais. "tvim" para "vim confiável", o que significa que se eu executá-lo em um diretório com um.vimrc
arquivo e algo der errado, não poderei culpar ninguém além de mim mesmo, já que disse explicitamente que confiava nele. Além disso, mantenho um grupo deles armazenado para que às vezes possa simplesmente criar um softlink para aquele que desejo para um tipo específico de projeto.fonte
source $HOME/.vimrc
no meu local.vimrc
, o Vim reclama que não consegue encontrar meus plug-ins instalados em todo o sistema (patógeno, neste caso; oexecute pathogen#infect()
comando sobre meu$HOME/.vimrc
falha comUnknown function ...
). Como posso consertar isso?Colocar um .vimrc no diretório de trabalho na verdade é suportado, apenas desabilitado por padrão. Consulte
:h 'exrc'
e:h startup
para obter detalhes, a configuração'exrc'
permitirá a leitura.vimrc
do diretório atual.Também é recomendado ao
:set secure
usar isso. Isso bloqueia:autocmd
, executa o shell e grava comandos.vimrc
no diretório atual.Outra coisa que pode valer a pena é configurar uma sessão (
:h session
) com uma visualização e configurações padrão para o projeto.Dito isso, eu provavelmente escolheria a opção de plug-in detalhada por Luc Hermitte.
fonte
Para minimizar os riscos de segurança com QUALQUER recurso de "execução automática" para QUALQUER COISA hoje em dia, posso aconselhar você a utilizar os recursos existentes do vim em vez de plug-ins (bagagem de portabilidade)?
Por exemplo.
O arquivo vimrc da minha pasta local é denominado "_gvimrc" (propositalmente). Isso reduz a esperança de pessoas como Phen se divertirem às nossas custas. :-)
No meu arquivo $ VIM / .vimrc, inseri:
no fim.
Eu uso "filereadable ()" sobre "fileexists ()", pois o último tem algumas peculiaridades quando torturado com a abertura de vários (10+) arquivos simultaneamente (não tenho certeza do porquê).
Claro, você pode fornecer seu próprio nome de arquivo exclusivo para ofuscar ainda mais os criadores de problemas em potencial. Tal como "_mygvimrc", "_gobbledygook", etc. Você só precisa definir um nome padronizado e fornecê-lo de acordo com o $ VIM / .vimrc. Contar com o vi / vim interno para isso elimina problemas de portabilidade. MAS, NÃO o nomeie .vimrc (ou _vimrc) para evitar sourcing recursivo caso você esteja editando o arquivo $ VIM / .vimrc com o vim posteriormente.
Uso isso desde o Windoze 98SE, através do Windork XP Pro, e agora Windorkier 7 (5+ anos já). Vou marcar uma lista de arquivos .txt no Explorer e, em seguida, usar "Editar com vários Vim", resultando em várias janelas do vim abrindo simultaneamente. Para o meu trabalho, faço isso várias vezes ao dia, diariamente. Todos os arquivos foram tratados com o que eu defini em meu _gvimrc local.
fonte
Supondo que as pessoas não estão adicionando arquivos a cada poucos dias, você provavelmente pode adicionar uma linha de modelo na parte superior de cada arquivo. Na verdade, se o seu sistema de controle de versão permitir, você provavelmente poderá aplicar uma regra que diz que cada arquivo deve ter uma linha de modelo quando for verificado.
fonte
Eu concordo com a abordagem do plugin por motivos de segurança.
Existe um plugin muito bom que ainda não foi mencionado. Ele permite que você use um
.lvimrc
em seus diretórios de projeto.Experimente "localvimrc":
http://www.vim.org/scripts/script.php?script_id=441
https://github.com/embear/vim-localvimrc
fonte
Use "editorconfig"
Se os tipos de padrões de codificação que você gostaria de impor estão relacionados ao estilo de indentação, tamanho da guia, formato de arquivo e conjunto de caracteres, você pode querer dar uma olhada em "editorconfig" , que é um padrão de editor cruzado para especificar este tipo de configurações em um projeto específico e faça com que todos os editores sigam essa configuração.
A especificação "editorconfig" permite que os projetos solicitem configurações diferentes dependendo das extensões de arquivo ou nomes dentro do projeto. (Assim, você pode ter Makefiles usando TABs, seus scripts Python usando 4 espaços e seus scripts shell usando 2 espaços para indentação.)
Você precisa de um plug-in para usar "editorconfig" no Vim. O site oficial fornece um, mas pessoalmente eu recomendo sgur / vim-editorconfig , que é escrito em Vimscript puro, então você não precisa se preocupar muito com dependências externas.
Uma vez que "editorconfig" visa a compatibilidade entre editores, é bastante limitado no que faz, então se você quiser espaços em branco consistentes, formato de arquivo (DOS vs. Unix) e codificação (Unicode utf-8, etc.), então "editorconfig " é para você.
fonte
Experimente vim-localrc
https://github.com/thinca/vim-localrc/blob/master/doc/localrc.txt
fonte
Eu olhei para os plug-ins que existiam e realmente não gostei de nenhum deles, então escrevi uma função simples que pega carona no vim-fugitive . A vantagem disso é que ele sabe que a raiz do projeto é sempre a raiz do repositório e, além disso, posso fazer o hash do arquivo para manter uma tabela confiável. Basta colocar o seguinte em seu
.vimrc
arquivo.Se a
!
opção estiver definida naviminfo
configuração, oSAFE_VIMRC
dicionário será preservado entre as execuções (observe o^
para preceder a opção para não atrapalhar an
opção).fonte