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?

ztik
fonte

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á.

Rico
fonte
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
Martin York
fonte
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