Insertar pestañas en modo INSERTAR cuando expandtab está configurado

12

He configurado expandtaben mi .vimrcarchivo para convertir taba varios spacecaracteres. Sin embargo, algunos archivos (como Makefile) necesitan el tabcarácter real insertado.

¿Hay alguna manera fácil de forzar la inserción tabmientras escribo?

ztik
fuente

Respuestas:

27

En lugar de simplemente presionar Tab, primero presione Ctrl-Vy luego presione Tab.

Esto se puede usar para insertar una variedad de caracteres especiales. Ver :help i_CTRL-Vpara más detalles.

Ctrl-VTambién funciona en modo de línea de comandos ( :help c-CTRL-V), e incluso en algunos otros programas por completo. (por ejemplo, bash, mutt.)

Si te has Ctrl-Vasignado a otra cosa, inténtalo Ctrl-Q. Esto tiene el mismo efecto en Vim Ctrl-V, pero algunos terminales lo usan para controlar el flujo, en cuyo caso Vim nunca lo verá.

Rico
fuente
55
O <c-v>009en caso de una tecla Tab rota o un purista ASCII hardcore :-)
Martin Tournoij
17

En lugar de cambiar su comportamiento (que es propenso a errores).
Configuraría vim para que se comporte de manera diferente para este tipo de archivo.

Entonces, en mi edición normal, amplío las pestañas. Pero específicamente para los makearchivos configuro el noexpandtabpara que las pestañas se conserven.

Agregue lo siguiente a su archivo ~ / .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
fuente
3
Respondí su pregunta, pero en realidad has descubierto cuál es el problema subyacente mucho mejor que yo. Buen trabajo.
Rico
Creo que ambas respuestas son valiosas. Porque a veces estás conectado en algún lugar remoto y no quieres meterte con la configuración de vim, pero solo quieres editar rápidamente un Makefile.
Daniel Schmitz