Pergunta

Alguém poderia me explicar em termos simples, a maneira mais fácil para alterar o comportamento de recuo do Vim com base no tipo de arquivo? Por exemplo, se eu abrir um arquivo Python deve recuar com 2 lugares, mas se eu abrir um script PowerShell ele deve usar 4 espaços.

Foi útil?

Solução

Você pode adicionar arquivos .vim a ser executado sempre que vim muda para um tipo de arquivo particular.

Por exemplo, eu tenho um ~/.vim/after/ftplugin/html.vim arquivo com este conteúdo:

setlocal shiftwidth=2
setlocal tabstop=2

que faz com que o vim para separadores de uso com uma largura de 2 caracteres para o recuo (a opção noexpandtab é definido globalmente em outros lugares na minha configuração).

Esta é descrito aqui: http://vimdoc.sourceforge.net/htmldoc/usr_05 .html # 05.4 , vá até a seção sobre plugins filetype.

Outras dicas

Use ftplugins ou autocomandos para definir opções.

ftplugin

Em ~/.vim/ftplugin/python.vim:

setlocal shiftwidth=2 softtabstop=2 expandtab

E não se esqueça de ligá-los em ~/.vimrc:

filetype plugin indent on

(:h ftplugin para mais informações)

autocommand

Em ~/.vimrc:

autocmd FileType python setlocal shiftwidth=2 softtabstop=2 expandtab

Você pode substituir qualquer um dos comandos ou configurações de comprimento com suas versões curtas:
autocmd : au
setlocal : setl
shiftwidth : sw
tabstop : ts
softtabstop : sts
expandtab : et

Eu também sugeriria aprender a diferença entre tabstop e softtabstop. Muitas pessoas não sabem sobre softtabstop.

editar o seu ~/.vimrc, e adicionar diferentes tipos de arquivos para diferentes travessões, por exemplo. Quero travessão html/rb por 2 espaços, e os arquivos js/coffee recuar para 4 espaços:

" by default, the indent is 2 spaces. 
set shiftwidth=2
set softtabstop=2
set tabstop=2

" for html/rb files, 2 spaces
autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab

" for js/coffee/jade files, 4 spaces
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype coffeescript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype jade setlocal ts=4 sw=4 sts=0 expandtab

referem-se a: Definir Vim espaços em branco preferências por filetype

comandos autocmd Coloque baseados no sufixo do arquivo em seu ~ / .vimrc

autocmd BufRead,BufNewFile   *.c,*.h,*.java set noic cin noexpandtab
autocmd BufRead,BufNewFile   *.pl syntax on

Os comandos que você está procurando são provavelmente ts = e sw =

Eu costumo trabalhar com o conjunto expandtab, mas isso é ruim para makefiles. Recentemente acrescentou:

:autocmd FileType make set noexpandtab

até o final do meu arquivo .vimrc e reconhece Makefile, makefile, e * .mk como makefiles e não se expande abas. Presumivelmente, você pode estender isso.

Estou sempre espantado com as pessoas que mudam o tamanho das guias para diferentes tipos de arquivos. Que diabos você faz quando você olha para um arquivo usando menos?

Pessoalmente, eu uso essas configurações no .vimrc:

autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab

Isso pode ser conhecido pela maioria de nós, mas de qualquer maneira (eu estava intrigado a minha primeira vez): Fazendo :set et (expandtabs :set) não altera os guias já existentes no arquivo, se tem a fazer :retab. Por exemplo:

:set et
:retab

e as guias no arquivo são substituídas por espaços suficientes. Para ter guias de volta simplesmente fazer:

:set noet
:retab

Hoje, você poderia tentar editorconfig , há também uma vim plug-in para ele. Com isso, você é mudar não só o tamanho recuo capaz no vim, mas em muitos outros editores, manter estilos de codificação consistentes.

Abaixo está uma editorconfig simples, como você pode ver, os arquivos python terá 4 espaços de recuo, e arquivos de modelo pug só terá 2.

# 4 space indentation for python files
[*.py]
indent_style = space
indent_size = 4

# 2 space indentation for pug templates
[*.pug]
indent_size = 2

Enquanto você pode configurar recuo do Vim apenas multa usando o plugin travessão ou manualmente usando as configurações, eu recomendo usar um script python chamado Vindect que ajusta automaticamente as configurações relevantes para você quando você abre um arquivo python. Use esta dica para tornar o uso Vindect ainda mais eficaz. Quando eu comecei a edição de arquivos python criados por outros com vários estilos de recuo (tab vs espaço e número de espaços), foi incrivelmente frustrante. Mas Vindect juntamente com esse arquivo travessão

Também recomendamos:

Eu uso um utilitário que eu escrevi em C chamado autotab . Analisa as primeiras mil linhas de um arquivo que você carregar e determina valores para os parâmetros Vim shiftwidth, tabstop e expandtab.

Esta é compilado usando, por exemplo, gcc -O autotab.c -o autotab. Instruções para a integração com Vim estão no cabeçalho comentário no topo.

AutoTab é bastante inteligente, mas pode ficar confuso ao longo do tempo, em particular por que foram inconsistente mantido usando diferentes estilos de recuo.

Se um arquivo usa evidentemente guias, ou uma combinação de tabulações e espaços, por recuo, AutoTab vai descobrir o tamanho da guia está sendo usado por considerar fatores como o alinhamento dos elementos internos através das linhas sucessivas, como comentários.

Ele trabalha para uma variedade de linguagens de programação, e é perdoando para "fora da banda" elementos que fazem incrementos de recuo não obedecem, como C pré-processamento de directivas, C rótulos de instrução, para não mencionar as linhas em branco óbvias.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top