Como executo um comando vim específico ao abrir um arquivo com uma determinada extensão?

9

Quero que todos os meus arquivos que terminem em .textenham comprimento de linha 80. Portanto, sempre que abro um .texarquivo no vim, digito :set tw=79. O que eu colocaria no meu .vimrc para automatizar isso?

E se eu queria trabalhar com uma lista específica de tipos de arquivos, digamos, .md, .txt, e .tex?

JeremyKun
fonte

Respostas:

10

Em vez de verificar a extensão e definir a largura do texto adequadamente, você pode simplesmente criar um tex.vimarquivo (o nome deve corresponder ao tipo de arquivo) no .vim/ftplugin/Windows ou para o Windows $HOME/vimfiles/ftplugin/e definir a largura do texto. Isso ajudará você a manter seu .vimrc limpo.

Seu .vim/ftplugin/tex.vimarquivo seria semelhante a:

setlocal textwidth=79

Como o 8bittree disse nos comentários, você também precisa habilitar filetype pluginsno seu vimrc (eu não sei por que alguém não o habilitaria):

filetype plugin on

Leia isto para obter mais informações: http://vim.wikia.com/wiki/Keep_your_vimrc_file_clean

ap0
fonte
2
Você também vai querer certificar-se de plugins filetype estão ativados no seu .vimrccom filetype plugin on.
8bittree
8

Em ~/.vimrcvocê pode adicionar a seguinte linha:

au BufReadPost,BufNewFile *.md,*.txt,*.tex setlocal tw=79

Para comandos extras, separe-os por |.

Isso definirá suas configurações logo após a leitura do arquivo ou a abertura de um novo arquivo no buffer para extensões específicas.

kenorb
fonte
2
setpode realizar qualquer número de configurações. Algo como set tw=79 nowrap formatoptions+=jvai funcionar. Não há necessidade de um |(a menos que você quiser chamar um comando diferente, é claro) ;-)
Martin Tournoij