Como faço para o vi - Vim nunca usar abas (converter espaços em abas, péssimo!), Faz com que a tecla tab == 4 espaços e indente automaticamente o código após blocos de chaves como o Emacs ?
Além disso, como faço para salvar essas configurações para nunca mais precisar inseri-las?
Eu já vi outras questões relacionadas a isso, mas sempre parece estar um pouco fora do que eu quero.
vim
whitespace
indentation
vi
auto-indent
mmcdole
fonte
fonte
Respostas:
Como foi apontado em algumas respostas abaixo, o método preferido agora é NÃO usar o smartindent, mas use o seguinte (no seu .vimrc ):
No seu arquivo .vimrc :Os arquivos de ajuda demoram um pouco para se acostumar, mas quanto mais você lê, melhor o Vim fica:
Melhor ainda, você pode incorporar essas configurações na sua fonte para portabilidade:
Para ver suas configurações atuais:
Como graywh aponta nos comentários, smartindent foi substituído por cindent, que "funciona de maneira mais inteligente", embora ainda principalmente para idiomas com sintaxe do tipo C:
fonte
Relacionado, se você abrir um arquivo que use guias e espaços, supondo que você tenha
Você pode substituir todas as guias por espaços no arquivo inteiro por
fonte
A melhor maneira de obter indentação específica de tipo de arquivo é usar
filetype plugin indent on
no seu vimrc. Em seguida, você pode especificar itens comoset sw=4 sts=4 et
.vim / ftplugin / c.vim, por exemplo, sem precisar torná-los globais para todos os arquivos que estão sendo editados e outras sintaxes que não sejam do tipo C também serão recuadas corretamente (mesmo lisps) .fonte
Para ter guias de 4 espaços na maioria dos arquivos, caractere de tabulação real de 8 em Makefiles e recuo automático em vários arquivos, incluindo C / C ++, coloque isso no seu
~/.vimrc
arquivo:fonte
else
? Parece-me que as últimas linhas substituir o específico do makefile em todos os casosEm muitos sistemas Linux, como o Ubuntu, o
.vimrc
arquivo não existe por padrão, portanto, é recomendável que você o crie primeiro.Não use o
.viminfo
arquivo que existe no diretório inicial. É usado para uma finalidade diferente.Etapa 1: acesse o diretório inicial
cd ~
Etapa 2: criar o arquivo
vim .vimrc
Etapa 3: adicione a configuração declarada acima
Etapa 3: salve o arquivo pressionando Shift+ ZZ.
fonte
Shift + ZZ
ele criará o arquivo .swp. usewq
.Ctrl-Z
é outra história ...)vim -n <file>
. Um arquivo de troca não é algo gerado em tempo de economia; isso acabaria com seu objetivo, já que os arquivos de troca se tornam úteis na recuperação de sessões de edição encerradas abruptamente.A maneira recomendada é usar a indentação baseada em tipo de arquivo e usar apenas smartindent e cindent se isso não for suficiente.
Adicione o seguinte ao seu .vimrc
Espero que ajude como uma resposta diferente.
fonte
edite seu ~ / .vimrc
adicione as seguintes linhas:
fonte
No wiki do VIM :
fonte
O recuo automático é baseado no modo de sintaxe atual. Sei que, se você estiver editando o Foo.java, insira um
{
e pressione os Enterrecuos na linha a seguir.Quanto às guias, existem duas configurações. No Vim, digite dois pontos e, em seguida, "defina tabstop = 4", que definirá as guias para serem exibidas como quatro espaços. Pressione dois pontos novamente e digite "set expandtab", que inserirá espaços para as guias.
Você pode colocar essas configurações em um arquivo .vimrc (ou _vimrc no Windows) em seu diretório pessoal, para digitá-las apenas uma vez.
fonte
Primeiramente, não use a Tabchave no Vim para recuo manual. O Vim possui um par de comandos no modo de inserção para aumentar ou diminuir manualmente a quantidade de indentação. Esses comandos são Ctrl-Te Ctrl-D. Esses comandos observam os valores de
tabstop
,shiftwidth
eexpandtab
, e mantêm a mistura correta de espaços e guias (número máximo de guias seguido por qualquer número necessário de espaços).Em segundo lugar, essas teclas de indentação manual não precisam ser muito usadas de qualquer maneira se você usar a indentação automática.
Se, em Ctrl-Tvez de Tabincomodá-lo, você pode remapear:
Você também pode remapear Shift-Tabpara Ctrl-Dexecutar o deindent:
Aqui ^ T e ^ D são caracteres de controle literais que podem ser inseridos como Ctrl-VCtrl-T.
Com esse mapeamento, você ainda pode digitar literal Tab no buffer usando Ctrl-VTab. Observe que, se você fizer isso, mesmo se
:set expandtab
estiver ativado, receberá um caractere de tabulação não expandido.Um efeito semelhante ao
<Tab>
mapa é obtido usando:set smarttab
, o que também faz com que o backspace na frente de uma linha se comporte de maneira inteligente.No
smarttab
modo, quando Tabusado não no início de uma linha, ele não tem significado especial. Isso é diferente do meu mapeamento acimaTab para Ctrl-T, porque um Ctrl-Tusado em qualquer lugar de uma linha (no modo de inserção) aumentará o recuo dessa linha.Outros mapeamentos úteis podem ser:
Agora podemos fazer coisas como selecionar algumas linhas e pressionar Tab para recuá-las. Ou pressione Tabduas vezes em uma linha (no modo de comando) para aumentar seu recuo.
Se você usar os comandos adequados de gestão de recuo, em seguida, tudo é controlado por três parâmetros:
shiftwidth
,tabstop
eexpandtab
.O
shiftwidth
parâmetro controla o tamanho do recuo; se você quiser quatro recuos de espaço, use:set shiftwidth=4
ou a abreviação:set sw=4
.Se apenas isso for feito, o recuo será criado usando uma mistura de espaços e tabulações, porque
noexpandtab
é o padrão. Use:set expandtab
. Isso faz com que os caracteres de tabulação digitados no buffer sejam expandidos para espaços e para o recuo gerenciado pelo Vim use apenas espaços.Quando
expandtab
está ativado e se você gerencia seu recuo através de todos os mecanismos adequados do Vim, o valor detabstop
torna-se irrelevante. Ele controla como as guias aparecem se ocorrerem no arquivo. Se você tiverset tabstop=8 expandtab
e depois introduzir uma guia rígida no arquivo Ctrl-VTab, ela produzirá um alinhamento para a próxima posição da guia baseada em 8 colunas, como de costume.fonte
<C-t>
pode usar essa sintaxe em vez de literais. Por fim, o mapeamento<Tab>
no modo normal também será mapeado<C-i>
(eles são o mesmo personagem), por isso não recomendo (você perde uma parte bacana da funcionalidade do vim