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?

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


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 )


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.