Sei que muitas pessoas armazenam seu .vimrc no GitHub para facilitar o trabalho em novas máquinas, e isso faz todo o sentido para mim. Incluir plugins, no entanto, é problemático, porque os plugins que eu uso já são repositórios git. Como se cria um repo que rastreia o .vimrc e os plugins que possam estar instalados?
vimrc
plugin-system
Tom
fonte
fonte
Respostas:
Como lidar com repositórios dentro de repositórios tem sido uma questão constante no git. Os submódulos do Git são uma maneira de lidar com a situação, às custas de adicionar um pouco mais de complexidade para acompanhar. O site git tem uma introdução aos submódulos .
A idéia básica é manter uma referência a outro repositório git associado a um caminho no seu repositório. Essas referências são armazenadas em um arquivo
.gitmodules
na raiz do seu repositório (que é gerenciado pelo git, então deixe em paz). Parte da complexidade entra em cena ao clonar um repositório que possui submódulos: você devegit submodule init
criar explicitamente o.gitmodules
arquivo e, em seguida,git submodule update
clonar os submódulos.Aqui está uma explicação de como vou adicionar um novo plug-in vim ao meu repositório dotfiles (eu tenho o
~/.vim/
alias deste repositório.vim/
) usando um submodulo:Após o
submodule add
, agit status
mostraria que você modificou (ou criou) o.gitmodules
arquivo, com algo como isto:Também deve aparecer
.vim/bundle/vim-elixir
como um novo arquivo. O Git trata esse caminho especialmente agora: é um diretório normal no seu sistema de arquivos (então o vim o carrega normalmente), masgit diff
o tratará como um commit específico em seu repositório. Ao olhar para diffs ou logs para esse caminho (por exemplogit log -1 -u .vim/bundle/vim-elixir
), o git mostrará como uma string de uma linha como esta:A atualização para a versão mais recente dos corresponde plug-in para entrar em repositório do sub-módulo e check-out um novo commit, e depois cometer que ao seu repositório:
fonte
Você não precisa armazenar plugins no seu VCS; você também pode usar um gerenciador de pacotes Vim. Desde ontem, eu uso o vim-plug :
Você pode definir plugins no seu vimrc da seguinte forma:
Em seguida, reinicie o Vim e instale plugins com:
Ou você pode adicionar esse trecho da FAQ ao seu arquivo vimrc antes da
plug#begin()
chamada:Isso colocará os plugins
~/.vim/plugged
. Você não precisa manter este arquivo no seu VCS . Se você deseja usar este vimrc em outra máquina, basta ligar:PlugInstall
para essa máquina.Para remover um plug-in, remova-o do arquivo vimrc e execute:
Observe que o vim-plug não suporta a instalação de scripts no site de scripts do Vim, mas esses scripts são espelhados no GitHub , portanto não há necessidade de fazê-lo.
Existem também algumas vantagens adicionais, como atualização mais fácil do plug-in e carregamento sob demanda para obter melhor desempenho. Você também não corre o risco de violar os termos de licença dos plug-ins que está distribuindo com seus arquivos vimrc.
Veja também:
fonte
Eu armazeno meu vimrc no github e os plugins como sub-módulos do meu repositório.
No arquivo readme.md, coloquei um liner que puxa o repositório e executa o script de instalação, desta forma, posso copiar uma linha em um editor e configurar tudo. Faz um pouco mais do que apenas o vim (mas não muito).
https://github.com/Loki-Astari/UnixConfig
Para usá-lo:
PS. Dispostos a seguir qualquer conselho (como fiz isso há muito tempo e não o tocamos desde então).
Nota: Minha parte favorita é que ele também configura o git e o usa para vim como a ferramenta diff do git. Vimdiff é a melhor ferramenta de comparação.
fonte
Se você gostaria de ficar com o Pathogen, uma maneira poderia ser usar os submódulos do Git . Quando você adiciona um submódulo, o git o reconhece como de outro repositório e deixa seu conteúdo em paz (a menos que tenha sido alterado, nesse caso, ele aparecerá com conteúdo não rastreado quando você o fizer
git status
). Se todos os seus plugins baseados no Github estiverem ativadosbundle/
, adicioná-los como submódulos é uma tarefa bastante simples e com um bom shell:Você pode ver como os submódulos aparecem no meu repositório vimrc .
Se você adicionar um arquivo a um submódulo ou fizer algumas alterações que não afetem o repositório,
git status
ainda reclamará que o submódulo tenha alterações não confirmadas ou arquivos não rastreados. Você pode fazer o git ignorar essas alterações adicionandoignore = dirty
à configuração do submódulo no.gitmodules
arquivo. Por exemplo:Um benefício dos submódulos é que a revisão do submódulo é adicionada ao repositório git, para que um
git init
automaticamente cuide de verificar essa revisão específica. Você pode jogar isso fora e dizer ao git para ignorar os submódulos depois de adicioná-los, adicionandoignore = all
sua configuração no.gitmodules
arquivo. Por exemplo:Por fim, um comando para atualizar todos eles!
Palavra de cautela: sou novo nos submódulos. Não tenho muita certeza de como eles se comportam.
fonte
Você pode simplesmente adicionar esta linha ao seu
.gitignore
para ignorar todos os seus plugins e não comprometê-los:Além disso, você disse que é problemático incluir o código do plug-in porque eles já são repositórios do github. Eu acho que você quer dizer que não deseja duplicar o código, mas ouvi dizer que você deve seguir em frente e duplicar o código que é uma dependência, para que você possa sempre voltar a um ponto específico do seu código e saber que vai funcionar. Aqui estão alguns artigos de James Shore que falam sobre isso: http://www.letscodejavascript.com/v3/blog/2014/12/the_reliable_build , http://www.letscodejavascript.com/v3/blog/2014/03/ the_npm_debacle . Ele está falando sobre código de programação e npm (em oposição ao vim), mas acho que o argumento ainda se aplica: você deseja um ambiente confiável para codificar ou escrever.
fonte