Converter funções no vimrc para carregar automaticamente funções?

2

Meu .vimrc é dividido em vários arquivos em um diretório vimrc.d e dentro desses arquivos estão configurações globais, variáveis e funções baseadas em uma certa funcionalidade, como Diff, Color, Folding, etc. Esses arquivos são incluídos via runtime do meu .vimrc na inicialização. Mas, coletivamente, há tantas funções que raramente são usadas nesses arquivos que parece melhor convertê-las em funções de carregamento automático.

Então, aqui estão minhas perguntas:

  1. Tudo é bem empacotado em módulos de funcionalidade (como diff.vim), mas se eu quiser converter as funções para carregar automaticamente funções, isso significa que eu preciso dividir o arquivo vimrc.d em um arquivo que é runtime'd por meu vimrc e um arquivo de autoload que é chamado quando através do mecanismo de autoload?
  2. Ou devo modificar o rtp para incluir o meu vimrc.d e apenas definir as funções como funções do autload, como vimrc.d # diff # functioname? Posso executar esses arquivos a partir do meu vimrc e ainda aproveitar os benefícios do autoload?

Obrigado!

    
por E.Beach 19.07.2012 / 19:42

1 resposta

3
  1. Sim. Embora eu não entenda por que você está usando um diretório vimrc.d e: runtime em seu vimrc ao invés de simplesmente deixar seus arquivos no seu diretório plugin e deixar o Vim fazer o: runtime automaticamente.
  2. Os plug-ins carregados automaticamente são particionados em dois arquivos: um arquivo de código de interface que entra no diretório do plug-in e um arquivo de código de execução que entra no diretório de carregamento automático. O arquivo de código de interface é sempre carregado e deve ser enxuto. Geralmente contém comandos e / ou macros que chamam funções definidas no arquivo de código de execução. O arquivo de código de execução não é carregado até que um dos objetos que ele define (por exemplo, função ou variável) seja acessado e ainda não tenha sido definido. Se você executar os arquivos autoload / execution-code a partir do seu vimrc, você terá derrotado o propósito dos arquivos carregados automaticamente.

Você precisa colocar os arquivos carregados automaticamente em um diretório de carregamento automático que é um subdiretório de um dos componentes do 'runtimepath'. Se você não quiser usar o diretório padrão ~ / .vimrc / autoload (no Unix) ou ~ / vimfiles / autoload (no Windows), você precisará certificar-se de que o diretório pai do diretório autload esteja em 'runtimepath '.

Então, não importa se você:

  • Faça como você esteve e coloque os arquivos de código de interface em seu diretório vimrc.d e execute-os você mesmo a partir do seu vimrc;
  • Adicione seu diretório vimrc.d ao seu 'runtimepath', mova os arquivos de código de interface para um novo subdiretório, vimrc.d / plugin, e deixe o Vim executá-los para você; ou
  • Basta colocar seus arquivos de código de interface no diretório ~ / .vim / plugin ou ~ / vimfiles / plugin padrão e dispensar o vimrc.d e o caminho: runtime em seu vimrc.

Se você realmente quiser manter suas coisas fora dos locais padrão e juntas em um diretório, suponho que você poderia fazer isso (assumindo o Unix por conveniência).

  1. Crie dois novos diretórios, ~ / .vim / vimrc.d / autoload e ~ / .vim / vimrc.d / plugin.
  2. Divida seus scripts existentes nas partes de código de interface e código de execução e coloque-os nesses diretórios, não deixando nenhum arquivo de script em ~ / .vim / vimrc.d.
  3. Remova o: runtime do seu vimrc.
  4. Em seu vimrc, adicione ~ / .vim / vimrc.d ao seu 'runtimepath' assim:

    set rtp^=~/.vim/vimrc.d

Para referência, scripts autoloaded são discutidos em

:help 41.15
:help autoload-functions
    
por 19.07.2012 / 20:41

Tags