Inserir guias no modo INSERIR quando a guia de expansão estiver configurada


12

Eu configurei expandtabno meu .vimrcarquivo para converter tabem vários spacecaracteres. No entanto, alguns arquivos (como Makefile) precisam do tabcaractere inserido.

Existe uma maneira fácil de forçar a inserção tabenquanto estou digitando?

Respostas:


27

Em vez de apenas pressionar Tab, primeiro pressione Ctrl-Ve, em seguida, pressione Tab.

Isso pode ser usado para inserir uma variedade de caracteres especiais. Veja :help i_CTRL-Vpara detalhes.

Ctrl-Vtambém funciona no modo de linha de comando ( :help c-CTRL-V) e até mesmo em alguns outros programas. (por exemplo, bash, vira-lata)

Se você Ctrl-Vmapeou para outra coisa, tente Ctrl-Q. Isso tem o mesmo efeito no Vim que Ctrl-V, mas alguns terminais o usam para controlar o fluxo; nesse caso, o Vim nunca o verá.


5
Ou <c-v>009em caso de Tab quebrado purista chave ou incondicional ASCII :-)
Martin Tournoij

17

Em vez de mudar seu comportamento (que é propenso a erros).
Eu configuraria o vim para se comportar de maneira diferente para esse tipo de arquivo.

Então, na minha edição normal, expanda as guias. Mas especificamente para os makearquivos que eu defino noexpandtabpara que as guias sejam mantidas.

Adicione o seguinte ao seu arquivo ~ / .vimrc:

" Normal action
set expandtab

if has("autocmd")

    " If the filetype is Makefile then we need to use tabs
    " So do not expand tabs into space.
    autocmd FileType make   set noexpandtab

endif

3
Eu respondi a sua pergunta, mas você realmente descobriu qual é o problema subjacente muito melhor do que eu. Bom trabalho.
Rich

Eu acho que as duas respostas são valiosas. Porque às vezes você está logado em algum lugar remoto e não quer mexer com a configuração do vim, mas deseja editar rapidamente um Makefile.
Daniel Schmitz
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.