22 votes

Supprimer la "tabulation" élargie en espace dans Vim en une seule frappe ?

J'édite Python avec Vim.

Avec le tab J'obtiens quatre espaces insérés pour l'indentation. Comment puis-je supprimer ces espaces avec une touche "Retour arrière" ( ?) - au lieu de quatre ?

Il doit y avoir une option "set" pour ça...

Voici mon .vimrc :

set autoindent
set ts=4
set sw=4
set et

32voto

TalkLittle Points 2278
set softtabstop=4

27voto

Ryan Eastabrook Points 1374

Vous pouvez utiliser Ctrl+D pour reculer d'un cran. Cela déplace en fait la ligne entière vers la gauche d'un cran de tabulation ; Ctrl+T fait la même chose à droite. Notez que ces touches ne fonctionnent qu'en mode Insertion (utilisez la touche << y >> pour l'équivalent en mode Commande).

5voto

Orwellophile Points 489

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

forme courte : set ts=4 sts=-1 sw=0 et

Explication

Si vous définissez softtabstop (o sts ) à -1 il se comportera automatiquement comme le même que tabstop ( ts ), ce qui vous épargnera quelques tracas si vous changez souvent de tabulation. Réglage de shiftwidth ( sw ) à 0 devrait effectivement rendre la même chose que tabstop également.

En détail

shiftwidth sw

Nombre d'espaces à utiliser pour chaque étape de l'indentation (automatique). Utilisé pour cindent , >> , << etc.
Lorsque l'on met à zéro le tabstop sera utilisée.

tabstop ts

Nombre d'espaces que compte a dans le fichier. Voir aussi :retab et softtabstop option.

softtabstop sts

Nombre d'espaces qu'un Tab compte pour pendant l'édition comme l'insertion d'un Tab ou en utilisant BS . Il s'agit de se sent comme Tab sont insérés, alors qu'en fait un mélange d'espaces et des s sont utilisés. Ceci est utile pour garder le tabs s'installe à son valeur standard, tout en étant capable d'éditer comme s'il était réglé sur sts . Quand sts est négative, la valeur de shiftwidth est utilisé. Cela vous permettra d'économiser si vous changez souvent de tabulateur. Lorsque expandtab n'est pas défini, le nombre d'espaces est minimisé en utilisant Tab s.

expandtab et

En mode Insertion : Utilisez le nombre d'espaces approprié pour insérer un . Les espaces sont utilisés dans les retraits avec la touche > y < commande et quand autoindent est activé. Pour insérer un véritable onglet lorsque expandtab est activé, utilisez Ctrl - V Tab . Voir aussi :retab

2voto

Patrick Klug Points 5320

J'ai écrit GreedyBackspace.vim pour quelqu'un qui voulait quelque chose comme ça. Je ne l'utilise pas personnellement et cela fait un moment que je ne l'ai pas mis à jour. Je n'ai pas reçu de rapports de bogue à son sujet dernièrement, cependant.

1voto

Rook Points 23039

Plusieurs options :

  1. Vous pourriez "retab" tous les espaces blancs afin qu'ils soient remplacés par des tabulations. De cette façon, ils pourraient être facilement supprimés.
  2. Vous pourriez (ce n'est pas testé, donc je ne fais que proposer des idées ici) créer une fonction qui "exécute en mode normal 4 fois la touche retour arrière". Puis l'affecter à quelque chose. Cependant, il n'y a aucun moyen de savoir si cela effacera les espaces ou certains caractères importants, donc c'est potentiellement dangereux.
  3. 4X' supprime les 4 derniers caractères (le grand X, pas le petit, le petit se comporte comme la touche Del).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X