Alguém poderia me explicar em termos simples a maneira mais fácil de alterar o comportamento de indentação do Vim com base no tipo de arquivo? Por exemplo, se eu abrir um arquivo Python, ele deve recuar com 2 espaços, mas se eu abrir um script do Powershell, ele deverá usar 4 espaços.
file
vim
settings
indentation
EBGreen
fonte
fonte
Respostas:
Você pode adicionar
.vim
arquivos a serem executados sempre que o vim alternar para um tipo de arquivo específico.Por exemplo, eu tenho um arquivo
~/.vim/after/ftplugin/html.vim
com este conteúdo:O que faz com que o vim use guias com largura de 2 caracteres para recuar (a
noexpandtab
opção é definida globalmente em outros lugares da minha configuração).Isso é descrito aqui: http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4 , role para baixo até a seção plugins de tipos de arquivos.
fonte
~/.vim/after/ftplugin/html.vim
lugar. Mas, como outros indicaram abaixo, é muito melhor adicionar apenasautocmd FileType html setlocal shiftwidth=2 tabstop=2
ao seu.vimrc
.autocmd FileType javascript setlocal shiftwidth=2 tabstop=2
)filetype plugin on
ao seu vimrc também.Use ftplugins ou comandos automáticos para definir opções.
ftplugin
No
~/.vim/ftplugin/python.vim:
E não se esqueça de ativá-los
~/.vimrc
:(
:h ftplugin
para mais informações)autocommand
Em
~/.vimrc
:Você pode substituir qualquer um dos comandos longos ou configurações 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
esofttabstop
. Muita gente não conhecesofttabstop
.fonte
sw
é curtosoftwidth
,sts
é curtosofttabstop
,et
é curtoexpandtab
,setl
é curtosetlocal
eau
é curtoautocmd
. Você pode usar os formulários longos em vez dos curtos.sw
expande parashiftwidth
e nãosoftwidth
.edite seu
~/.vimrc
e adicione tipos de arquivos diferentes para diferentes recuos, por exemplo, querohtml/rb
recuo por 2 espaços ejs/coffee
arquivos recuo por 4 espaços:consulte: Configurando as preferências de espaço em branco do Vim por tipo de arquivo
fonte
"
:)'
dão erro em todo o vim do meu Linux. (7.3+, 8.0 ...)"
, ou seja, não o feche com outro"
. Não sei por que comentei isso.'
, mas não deixou"
sem direito"
@ @.Coloque os comandos autocmd com base no sufixo do arquivo em seu ~ / .vimrc
Os comandos que você está procurando provavelmente são ts = e sw =
fonte
FileType
?Eu costumo trabalhar com
expandtab
set, mas isso é ruim para makefiles. Eu adicionei recentemente:até o final do meu arquivo .vimrc e reconhece Makefile, makefile e * .mk como makefiles e não expande as guias. Presumivelmente, você pode estender isso.
fonte
Pessoalmente, eu uso essas configurações em .vimrc:
fonte
Isso pode ser conhecido pela maioria de nós, mas mesmo assim (fiquei intrigado na primeira vez): Fazer
:set et
(:set
expandtabs) não altera as guias já existentes no arquivo, é preciso fazer:retab
. Por exemplo:e as guias no arquivo são substituídas por espaços suficientes. Para ter as guias de volta, basta:
fonte
Hoje, você pode tentar o editorconfig , também há um plugin vim para o . Com isso, você pode não apenas alterar o tamanho do recuo no vim, mas em muitos outros editores, manter estilos de codificação consistentes.
Abaixo está um editorconfig simples, como você pode ver, os arquivos python terão 4 espaços para indentação e os arquivos de modelo de pug terão apenas 2.
fonte
Embora você possa configurar a indentação do Vim perfeitamente usando o plug-in de indentação ou manualmente usando as configurações, recomendo usar um script python chamado Vindect que defina automaticamente as configurações relevantes para você quando você abrir um arquivo python. Use esta dica para tornar o uso do Vindect ainda mais eficaz. Quando comecei a editar arquivos python criados por outras pessoas com vários estilos de recuo (tabulação versus espaço e número de espaços), foi incrivelmente frustrante. Mas o Vindect junto com esse arquivo de recuo
Também recomendo:
fonte
Para aqueles que usam
autocmd
, é uma prática recomendada agrupá-los. Se um agrupamento estiver relacionado à detecção de tipo de arquivo, você pode ter algo parecido com isto:Os agrupamentos ajudam a manter o
.vimrc
organização, especialmente quando um tipo de arquivo tem várias regras associadas. No exemplo acima, um atalho de comentário específico para arquivos .c é definido.A chamada inicial para
autocmd!
diz ao vim para excluir qualquer comando automático definido anteriormente no referido agrupamento. Isso impedirá a definição duplicada se.vimrc
for originada novamente. Veja o:help augroup
para mais informações.fonte
Eu uso um utilitário que escrevi em C chamado
autotab
. Ele analisa as primeiras milhares de linhas de um arquivo que você carrega e determina valores para os parâmetros do Vimshiftwidth
,tabstop
eexpandtab
.Isso é compilado usando, por exemplo
gcc -O autotab.c -o autotab
,. As instruções para integração com o Vim estão no cabeçalho do comentário na parte superior.O Autotab é bastante inteligente, mas pode ser confundido de tempos em tempos, em particular por ter sido mantido de maneira inconsistente usando diferentes estilos de indentação.
Se um arquivo evidentemente usar guias, ou uma combinação de guias e espaços, para recuo, a Autotab descobrirá qual tamanho de guia está sendo usado considerando fatores como o alinhamento de elementos internos em linhas sucessivas, como comentários.
Ele funciona para uma variedade de linguagens de programação e perdoa elementos "fora da banda" que não obedecem a incrementos de indentação, como diretivas de pré-processamento C, rótulos de instrução C, sem mencionar as linhas em branco óbvias.
fonte