2009-10-07 5 views
21

Est-il possible de retirer un bloc entier de code Python dans Vim?Comment supprimer un bloc entier dans Vim?

Que ce soit un def, for, if, etc. bloc ...

+1

"Appartient à superuser.com", peut-être? Je ne suis pas sûr ... –

+7

Je ne suis pas d'accord, il s'agit de l'utilisation d'un outil logiciel dans un processus de développement spécifique (codage Python), voir http://meta.stackexchange.com/questions/12373/quand- types-de-programmation-questions-connexes-sont-appropriés/12378 # 12378 –

Répondre

20

Vous pouvez tirer sur un paragraphe avec y}. Cela ne supprimera pas toutes les méthodes si vous avez une ligne vide cependant.

+5

Vous pouvez utiliser Ctrl-v et y} pour voir quelles lignes seront tirées. Vous pouvez appuyer sur} pour couvrir votre bloc. – noomz

4

Il existe un script add-on vim python_fn.vim qui a comme une de ses fonctions une liaison de touche pour sélectionner visuellement un bloc de code Python en utilisant ]v. Vous pouvez ensuite le tirer avec y comme d'habitude.

3

Je n'utilise généralement que le mode bloc visuel. Shift-V, déplacez, et 'y'ank le bloc en surbrillance. Il n'y a que tant de raccourcis que je peux garder en mémoire à la fois :)

+2

C'est ce que je fais habituellement aussi, je ne pense pas que c'est la meilleure façon, mais c'est assez facile à faire avec une cellule cérébrale :) –

+0

La sélection visuelle est également très utile pour indenter/dédier des blocs en utilisant> et –

3
  1. Entrez sélection de ligne visuelle en appuyant sur « V »
  2. Lorsque vous avez terminé la sélection des y »pres de bloc
  3. coller quelque part avec « p 'ou « P »
3

vous pouvez combiner une recherche avec Yank, donc si votre fonction se termine par return retval vous pouvez taper y/return retval

6

Si vous voulez tirer sur tout sauf le { utilise yi{ (ou yi}). Si vous souhaitez inclure les accolades, utilisez ya{ (ou ya}).

Les modificateurs i et a signifient dans et tous.

Yank un mot, peu importe où dans le mot que vous êtes: yiw

Pour coller le contenu des parenthèses: yi); si vous voulez les inclure, utilisez ya(

Vous pouvez faire la même chose pour " ou ' avec yi", ya" ou yi' et ya'.

Bien sûr, vous n'êtes pas limité à yanking. Vous pouvez supprimer un mot avec diw ou changer avec ciw, etc ... etc ...

+3

pour un langage C. Je pense que la question était spécifique à Python. – bluehavana

+2

Il y a aussi 'p' pour enlever le paragraphe courant (c'est-à-dire tout ce qui est séparé par des lignes vides au-dessus d'un paragraphe ci-dessous). 'yip' supprime tout le paragraphe, et' yap' supprime tout le paragraphe + la ligne vide suivante. Ceci est utile si votre curseur est déjà quelque part dans le paragraphe que vous voulez supprimer. –

1

J'ai fait un plugin nommé spacebox qui fait une sélection visuelle de toutes les lignes avec le même ou plus indentation que la ligne courante.

avec un espace Python étant la façon dont il est, vous pouvez placer votre curseur sur la ligne ci-dessous def ou if, et lancez la commande :SpaceBox pour sélectionner « bloc ».

6

L'excellente suite de modules complémentaires Python-mode inclut certains key commands pour naviguer dans les classes, les méthodes et les blocs fonctionnels.

  • Pour tirer sur un procédé: yunM (méthode interne: yiM)

  • Pour tirer sur une classe: yunC

Il y a d'autres mouvements à portée de main, comme le déplacement de la fonction à la fonction (]]). Voir le complete list of keys pour plus.

0

Il suffit de plier la classe à l'aide de za, puis d'utiliser le mode visuel (V) pour sélectionner la classe repliée. De cette façon, vous ne devez pas trop faire défiler. Ensuite, il suffit de tirer avec y. Lorsque vous avez terminé, dépliez la classe avec za à nouveau.

0
  1. Dans le fichier .py, appuyez sur Esc
  2. Appuyez sur shift V pour passer en mode de ligne visuelle
  3. Sélectionnez avec et les touches fléchées
  4. Appuyez sur d pour supprimer les lignes sélectionnées
  5. Aller à la ligne vous souhaitez placer les lignes et appuyez sur p pour coller des lignes après une ligne ou appuyez sur shift P pour les coller avant une ligne

Espérons que ça aide.

Questions connexes