web-dev-qa-db-fra.com

Supprimer «Onglet» étendu à l'espace dans Vim avec une touche?

Je modifie python code avec Vim.

Avec le tab La clé Je reçois quatre espaces insérés pour l'indentation. Comment puis-je supprimer ces espaces avec un coup d'un "backbspace" (?) - au lieu de quatre?

Il doit y avoir une option "définie" pour ça ...

Voici mon .vimrc:

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

TL; DR: set tabstop=4 softtabstop=-1 shiftwidth=0 expandtab

Formulaire court: set ts=4 sts=-1 sw=0 et

Explication

Si vous définissez softtabstop (ou sts) à -1 Cela se comportera automatiquement de la même manière que tabstop (ts), qui vous évitera des tracas si vous modifiez beaucoup de tabulation. Réglage shiftwidth (sw) à 0 devrait effectivement rendre cela identique à tabstop aussi.

En détail

shiftwidth _ sw

Nombre d'espaces à utiliser pour chaque étape de (auto) indent. Utilisé pour cindent>><<, etc.
[.____] lorsque la valeur tabstop _ sera utilisée.

tabstop _ ts

Nombre d'espaces dans le fichier comptent pour. Voir aussi : Retab commande et softtabstop option.

softtabstop _ sts

Nombre d'espaces qu'un Tab compte pour effectuer des opérations d'édition, comme l'insertion d'un Tab ou en utilisant BS. IT Sent comme Tabs sont insérés, tout en fait un mélange d'espaces et de s sont utilisés. Ceci est utile pour garder le paramètre tabs est défini à sa valeur standard, tout en pouvant éditer comme il est défini sur sts. lorsque sts est négatif, la valeur de shiftwidth est utilisée. Cela vous évitera des tracas si vous changez de tabstops. beaucoup. Lorsque expandtab n'est pas défini, le nombre d'espaces est minimisé en utilisant Tabs.

expandtab _ et

En mode Insérer: utilisez le nombre d'espaces approprié pour insérer un. Les espaces sont utilisés dans les trindages avec le > et < commandes et quand autoindent est activé. Pour insérer un véritable onglet lorsque expandtab est activé, utilisez Ctrl-VTab. Voir aussi : RETAB

5
Orwellophile

Plusieurs options:

  1. Vous pouvez "raboter" tous les espaces blancs afin qu'ils soient remplacés par des onglets. Cette façon, ils pourraient être facilement supprimés.
  2. Vous pourriez (ceci n'est pas testé, alors je propose simplement des idées ici) faire une fonction qui exécute en mode normal 4 fois la clé arrière. Puis mappez-le à quelque chose. Cependant, il n'a aucun moyen de savoir si cela supprimera des espaces ou des personnages importants, c'est donc potentiellement dangereux.
  3. '4x' supprimera les 4 derniers caractères (c'est BIG X, pas petit, petit, petit agira comme la touche Del '.
1
Rook