Como posso recuar automaticamente em novas linhas?

15

Trabalho em projetos com diferentes níveis de indentação. Em muitos desses projetos, devido à maneira como os arquivos são tipicamente estruturados, a maioria das linhas é recuada em pelo menos dois níveis (como métodos em arquivos Java).

Isso significa que a criação de uma nova linha quando estiver em uma linha

public void something () {

Traria meu cursor para a próxima linha, recuado automaticamente, como

public void something () {
    [cursor]

Embora eu possa pressionar a tecla tab algumas vezes em uma nova linha para alinhar, existe uma maneira melhor de fazer isso (possível automaticamente)?

Kevin Brown
fonte

Respostas:

11

Isso pode ser feito usando uma combinação da autoindentopção e do filetypeplugin.

A autoindentopção copiará seu recuo atual ao criar uma nova linha. Portanto, se o seu nível de indentação atual for 4 quando você iniciar a nova linha, o cursor será movido para o mesmo nível de indentação na próxima linha.

No seu ~/.vimrcarquivo, você colocaria

set autoindent

Você também pode usar o filetypeplug - in para determinar automaticamente o próximo nível de indentação com base no tipo de arquivo.

Você pode ativar isso rapidamente, com

:filetype indent on

Ou, em seu ~/.vimrcarquivo, você colocaria

filetype plugin indent on

O que determinará automaticamente o recuo com base no tipo de arquivo.

Kevin Brown
fonte
6

Use :set cindent( :set cinpara abreviar) ou :set smartindent( :set sipara abreviar). Se sua linha terminar em uma chave de abertura e você pressionar Enter, a linha a seguir será automaticamente recuada um nível adicional. (Isso é melhor que :set autoindent, que apenas recua a próxima linha no mesmo nível.) cindentÉ mais adaptado às linguagens do tipo C, enquanto smartindenté mais versátil para uso com outras linguagens de programação.

A quantidade e tipo de recuo é controlada por :set shiftwidth=…, :set tabstop=…e :set expandtab.

200_success
fonte
'smartindent'está obsoleta, então essa não é a melhor escolha. Foi substituído por 'cindent'e 'cinoptions'para idiomas do tipo C. No entanto, em geral, o recuo do tipo de arquivo é o caminho a seguir, com 'autoindent'um fallback.
jamessan
@jamessan smartindentnão está obsoleto, mas cindentvale a pena notar. Eu atualizei a resposta. (Obrigado!)
200_success 4/02
Eu também recomendo que você uma olhada no editorconfig.org . Há, naturalmente, um plugin para vim (e muitos outros editores) e é uma ótima maneira de manter seus padrões editor em seus VCS
do Cyber Oliveira
0

Na parte inferior do arquivo, estou usando:

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Por exemplo Dockerfile:

FROM centos-7
RUN ...
CMD ...

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Se você deseja manter apenas o recuo, use # vim: st ai si

Eduardo Cuomo
fonte