2010-07-16 20 views
4

J'utilise Vim pour le développement Python. Parfois, après une expression dans une clause if: (supposons | est curseur).Retour arrière, si les caractères du curseur au début de la ligne sont des tabulations/espaces, revenir à un niveau de retrait

if test: 
    pass 
    | 

... J'appuyez sur Entrée, et que vous voulez aller au niveau de if indentation. Je sais que je peux revenir en mode commande et appuyer simplement sur <, mais je voudrais savoir si c'est possible, quand Vim sait que tous les caractères derrière le curseur sont des tabulations ou des espaces, pour revenir en arrière d'un niveau d'indentation en arrière. est enfoncé (ou la valeur shiftwidth).

Répondre

7

Set softtabstop égal à shiftwidth et allumer expandtab:

:set expandtab shiftwidth=4 softtabstop=4 

Maintenant, lorsque vous appuyez sur Backspace, Vim supprimera automatiquement le bon nombre de places pour reculer d'un niveau de retrait.

Plusieurs paramètres contrôlent le comportement des onglets, des espaces et des indentations, et ils peuvent interagir de manière non évidente. Je recommande cet épisode Vimcast pour un aperçu très clair:

http://vimcasts.org/episodes/tabs-and-spaces/

+0

+1 pour mentionner les vimcasts impressionnants. –

+2

+1, ça marche. Juste une autre chose: j'avais déjà toutes ces commandes dans mon vimrc, mais pas appelé en même temps que vous avez suggéré. Y a-t-il quelque chose que je ne connais pas dans cette situation? –

+0

Pourquoi ces commandes fonctionnent-elles lorsqu'elles sont utilisées ensemble et non lorsqu'elles sont utilisées séparément? – crisron