Como alterar plugins específicos de idioma no vim?

0

Estou escrevendo um programa SML e estou tentando alterar o tamanho dos recuos. Se eu adicionar o seguinte ao meu arquivo .vimrc

set tabstop=8
set shiftwidth=8
set expandtab

Isso não está refletido nos meus arquivos reais. Eu sei disso porque quando eu abro um arquivo .sml e digito :set ele revela que shiftwidth=2

Acredito que o vim está usando um sml plugin porque meu arquivo .vimrc (semelhante ao padrão) tem o seguinte:

if has("autocmd")

  " Enable file type detection.
  " Use the default filetype settings, so that mail gets 'tw' set to 72,
  " 'cindent' is on in C files, etc.
  " Also load indent files, to automatically do language-dependent indenting.
  filetype plugin indent on

Primeiro, O que significa if ("autocmd")? E segundo Como posso ajustar o tamanho de recuo padrão para arquivos .sml? Onde posso estar capaz de encontrar este plugin (se este é realmente o problema? Eu ainda quero manter o resto dos recursos do plugin SML.

    
por Nosrettap 26.01.2013 / 05:41

2 respostas

2

autocmd s são comandos especiais acionados em eventos específicos ou em tipos de arquivos específicos. Eles costumam ser usados para definir opções ou definir mapeamentos que fazem sentido em um idioma, mas não em outros.

Como autocmd s é amplamente usado para itens específicos de tipos de arquivos, if has("autocmd") é uma maneira de testar se o recurso autocmd está disponível e que podemos ir mais longe sem muito risco.

O local correto para armazenar configurações específicas de tipo de arquivo é ~/.vim/after/ftplugin/<filetype>.vim , portanto, você deve gravar suas configurações em:

~/.vim/after/ftplugin/sml.vim

Este arquivo é originado por Vim após o ftplugin padrão para que você possa, por exemplo, alterar apenas o valor de tabstop e manter as outras configurações.

No entanto, olhando para o meu próprio tempo de execução do Vim ( /usr/share/vim/vim73 ), parece que não há ftplugin para sml . Isso significa que ~/.vim/ftplugin/sml.vim seria uma escolha igualmente certa de localização. Escolha o que você gosta.

Nesse arquivo, basta adicionar as linhas de que você precisa:

setlocal tabstop=8
setlocal shiftwidth=8
setlocal expandtab

e você está definido.

    
por 26.01.2013 / 11:12
0

Digitar :help autocmd dirá o que o autocmd faz. Isso essencialmente significa que o vim pode executar comandos automaticamente em determinados eventos.

Você pode digitar :echo $VIMRUNTIME para ver onde o vim está armazenando seus plugins do sistema. Provavelmente haverá um diretório de sintaxe, indent e ftplugin com arquivos que serão carregados automaticamente quando um tipo de arquivo correspondente for carregado.

Como alternativa, esses arquivos estarão nos mesmos diretórios abaixo do seu diretório ~ / .vim

    
por 26.01.2013 / 11:17