Cómo insertar caracteres de tabulación cuando la opción expandtab está activada en Vim

352

Cuando estoy en modo de inserción y tengo la expandtabopción activada, al presionar Tab ↹se inserta el número de espacios configurado.

Pero ocasionalmente quiero insertar un carácter de tabulación real.

Sabes como hacer esto?

devemouse
fuente

Respuestas:

516

Se puede usar <CTRL-V><Tab>en "modo de inserción". En el modo de inserción, <CTRL-V>inserta una copia literal de su próximo personaje.

Si necesita hacer esto a menudo, @ Dee`Kej sugirió (en los comentarios) la configuración Shift+ Tabpara insertar una pestaña real con esta asignación:

:inoremap <S-Tab> <C-V><Tab>

Además, como señaló @feedbackloop, en Windows es posible que deba presionar en <CTRL-Q>lugar de <CTRL-V>.

Michael Anderson
fuente
33
Y luego use .para repetir el último comando si desea insertar varias pestañas.
Xavier T.
10
Tuve algunos problemas al usar esta combinación porque estaba en modo Comando. Asegúrese de ejecutar este comando en modo EDITAR.
mgfernan
11
Modo INSERTAR, técnicamente.
mkmurray
2
Nota: Si está usando gVim en Windows, es probable que necesite usar CTRL+ en su Qlugar; consulte stackoverflow.com/questions/6951672/…
feedbackloop el
8
Solo tengo un acceso directo simple para este caso y parece estar funcionando (sin romper nada más): inoremap <S-Tab> <C-V><Tab>- Puede ponerlo en su ~/.vimrcarchivo.
Dee'Kej
34

Puede deshabilitar la opción expandtab desde Vim como se muestra a continuación:

:set expandtab!

o

:set noet

PD: y configúralo de nuevo cuando termines de insertar la pestaña, con "set expandtab" o "set et"

PD: Si tiene un conjunto de pestañas equivalente a 4 espacios en .vimrc (softtabstop), también puede configurarlo en 8 espacios para poder insertar una pestaña presionando la tecla de tabulación una vez en lugar de dos veces (configurar softtabstop = 8 )

Jahanzeb Farooq
fuente
En resumen: set ety set noetpara cambiar taby spacesegún sea necesario.
Eric Wang
Ctrl + V provocó el pegado y no tuve tiempo de ajustar las combinaciones de teclas. Esto ayudó
Shirish Hirekodi
2

De la documentación en expandtab:

Para insertar una pestaña real cuando expandtabestá activado, useCTRL-V<Tab> . Ver también :retabe ins-expandtab .
Esta opción se restablece cuando paste se establece la opción y se restaura cuando se restablece la pasteopción.

Entonces, si tiene una asignación para alternar la pasteopción, por ejemplo

set pastetoggle=<F2>

También podrías hacer <F2>Tab<F2>.

Eugene Yarmash
fuente