it-swarm-es.com

¿Eliminar la "pestaña" de espacio expandido en Vim con una pulsación de tecla?

Edito Python código con Vim.

Con el tab clave Me insertan cuatro espacios para la sangría. ¿Cómo puedo eliminar esos espacios con un trazo de "Retroceso" (?), En lugar de cuatro?

Tiene que haber alguna opción "configurada" para eso ...

Aquí está mi .vimrc:

set autoindent
set ts=4
set sw=4
set et
19
Evgeny

Puedes usar Ctrl+D para hacer una copia de seguridad de una tabulación. En realidad, esto mueve toda la línea hacia la izquierda una tabulación; Ctrl+T hace lo mismo a la derecha. Tenga en cuenta que estas pulsaciones de teclas solo funcionan en el modo Insertar (utilice << y >> para el equivalente en modo Comando).

24
Greg Hewgill
set softtabstop=4
30
sf17k

tl; dr: set tabstop=4 softtabstop=-1 shiftwidth=0 expandtab

forma corta: set ts=4 sts=-1 sw=0 et

Explicación

Si establece softtabstop (o sts) en -1 se comportará automáticamente de la misma manera que tabstop (ts), lo que le ahorrará algunos problemas si cambia mucho de tabulación. Configurando shiftwidth (sw) en 0 debería efectivamente hacer que sea lo mismo que tabstop también.

En detalle

shiftwidthsw

Número de espacios a utilizar para cada paso de sangría (automática). Usado para cindent>><<etc.
Cuando sea cero, se usará el valor tabstop.

tabstopts

Número de espacios que cuenta en el archivo. Consulte también el comando : retab y la opción softtabstop.

softtabstopsts

Número de espacios que un Tab cuenta mientras se realizan operaciones de edición, como insertar un Tab o usando BS. ¡se siente como Tabse están insertando s, mientras que en realidad se usa una combinación de espacios y s. Esto es útil para mantener el ajuste de tabs en su valor estándar, mientras se puede editar como si estuviera configurado en sts. Cuando sts es negativo, se usa el valor de shiftwidth. Esto le ahorrará algunos problemas si cambia las pestañas mucho. Cuando no se establece expandtab, el número de espacios se minimiza utilizando Tabs.

expandtabet

En modo Insertar: use el número apropiado de espacios para insertar un. Los espacios se utilizan en sangrías con el >< comandos y cuando autoindent está activado. Para insertar una pestaña real cuando expandtab está activado, use Ctrl-VTab. Véase también : retab

5
Orwellophile

Escribí GreedyBackspace.vim para alguien que quería algo como esto. No lo uso personalmente, así que ha pasado un tiempo desde que lo actualicé. Sin embargo, últimamente no he recibido ningún informe de errores.

2
Heptite

Varias opciones:

  1. Puede "volver a asignar" todos los espacios en blanco para que se sustituyan por tabulaciones. De esa forma, podrían eliminarse fácilmente.
  2. Podrías (esto no está probado, así que solo estoy proponiendo ideas aquí) hacer una función que se 'ejecute en modo normal 4 veces la tecla de retroceso. Luego, asignelo a algo. Sin embargo, no tiene forma de saber si eliminará espacios o algunos caracteres importantes, por lo que esto es potencialmente inseguro.
  3. '4X' eliminará los últimos 4 caracteres (que es una X grande, no una pequeña, la pequeña actuará como la tecla Supr).
1
Rook

la forma más fácil es <<, repita con un .

0
vimmer