Use plug-in único para mais de um tipo de arquivo


10

Eu tenho um plug-in no &runtimepath/ftplugin/c.vimqual define todas as minhas opções preferidas para arquivos c. No entanto, eu também gostaria de usar as mesmas configurações para cpparquivos. Eu poderia simplesmente copiar as configurações, mas isso parece redundante. Existe uma maneira de carregar um ftplugin para mais de um tipo de arquivo?

Respostas:


10

O ftplugin padrão ( /usr/share/vim/vim74/ftplugin/cpp.vimno meu sistema) já deve fazer isso:

" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
  finish
endif

" Behaves just like C
runtime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim

runtimedeve ser relativo ao runtimepath:

Pode haver vários {file}argumentos, separados por espaços. Cada um {file}é pesquisado no primeiro diretório de 'runtimepath', depois no segundo diretório, etc.

Se eu criar um ~/.vim/ftplugin/c.vim, isso também será executado para arquivos C ++ sem fazer nada!

Se você não tiver esse arquivo na sua versão do Vim, poderá criar um novo ~/.vim/ftplugin/cpp.vimarquivo com a runtime!instrução


Ou, se você estiver em um sistema UNIX-y, poderá usar um link simbólico:

$ ln -s ~/.vim/ftplugin/c.vim ~/.vim/ftplugin/cpp.vim

Ah, eu não percebi isso! Boa observação. Eu usaria a solução de tempo de execução se precisasse disso para outros tipos de arquivos.
EvergreenTree

1

Dentro do cpp.vim, coloque:

source <sfile>:h/c.vim

<sfile>expande para o arquivo de origem atualmente e :hsignifica o cabeçalho dele.


Não há nada a se fazer. Como Martin explicou, os plugins C ft são fornecidos automaticamente para os buffers C ++
Luc Hermitte

Mais para outros leitores, por exemplo, make .scss manipulado da mesma forma que .css etc.
run_the_race

Então, a menos que você queira carregar um arquivo muito específico, IMO, :runtime! ftplugin/css*.vim ftplugin/css/*.vimseria uma solução melhor.
Luc Hermitte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.