domingo, 12 de abril de 2009

Alterando os defaults de um filetype plugin

Quando você começa a editar um arquivo de um certo tipo, por exemplo C ou um
shell script, você usa as mesmas opções e mapeamentos.
Pode ser que você esteja satisfeito com esses defaults, pois eles são mantidos
no mínimo.

Suponha que você quer que, para arquivos C, a opção 'softtabstop' seja e que
tenha um mapeamento para inserir comentários de três linhas.
Você faz isso somente com dois passos:

1. Crie seu próprio diretório runtime (se não já existir). No Unix isto é
'~/.vim'. Neste diretório crie o diretório 'ftplugin':
mkdir ~/.vim
mkdir ~/.vim/ftplugin
Se não estiver no Unix, verifique o valor da opção 'runtimepath' para ver aonde
o Vim buscara pelo diretório 'ftplugin':
:set runtimepath
Você normalmente usuaria o primeiro nome de diretório (antes da primeira
vírgula). Você poderia inserir no início um nome de diretório para a opção
'runtimepath' no seu arquivo 'vimrc' caso não goste do valor default.

2. Crie o arquivo '~/.vim/ftplugin/c.vim', com os conteúdos:
setlocal softtabstop=4
noremap <buffer> <LocalLeader>co/**************<CR><CR>/<Esc>
Agora tente editar um arquivo C. Você notará que a opção 'softtabstop' está com
o valor 4. Mas quando você editar outro arquivo ela volta para zero.

Isto é porque o comando ':setlocal' foi usado. Isto define o valor de
'softtabstop' somente localmente no buffer.

Tão logo você edite outro buffer, ele será definido com o valor definido para
aquele buffer. Para um novo buffer ele terá o valor default ou o valor do último
comando ':set'.

Por outro, o mapeamento para '\c' desaparecerá quando editando outro buffer.
O comando ':map <buffer>' cria um mapeamento que é local ao buffer corrente.

Isto funciona com qualquer comando de mapeamento: :'map'!, :'vmap', etc.
O <LocalLeader> no mapeamento é substituído com o valor de 'maplocalleader'.

Você pode achar exemplos de filetype plugins neste diretório:
$VIMRUNTIME/ftplugin/

0 comentários:

Postar um comentário