Question

J'ai lu à plusieurs endroits que les fonctions rectangle dans emacs sont très utiles.J'ai lu un peu à leur sujet et je n'arrive pas à comprendre pourquoi.Je veux dire, quand vous voulez tuer un paragraphe, vous marquez la première ligne/colonne puis la dernière, et c'est en fait un rectangle, n'est-ce pas ?Mais vous pouvez toujours utiliser le kill normal...

Alors, quel genre de transformations feriez-vous avec eux ?

Était-ce utile?

La solution

Si vous avez des données dans des colonnes dans un fichier texte avec M-x delete-rectangle ou M-x kill-rectangle vous pouvez supprimer une seule colonne de données.De la même manière, M-x yank-rectangle va coller dans une colonne de texte.

Par exemple, prenons le texte suivant :

1. alligator    alphorn
2. baboon       bugle
3. crocodile    cornet
4. dog          didgeridoo
5. elephant     euphonium 
6. fish         flugelhorn   
7. gopher       guitar

Choisissez entre le a de l'alligator et le g de la guitare.Le début et la fin de la sélection délimitent deux coins opposés du rectangle.Entrer M-x kill-rectangle et vous avez immédiatement :

1. alphorn
2. bugle
3. cornet
4. didgeridoo
5. euphonium 
6. flugelhorn
7. guitar

Ensuite, mettez la marque à la fin de la ligne supérieure, ajoutez quelques espaces si nécessaire et entrez M-x yank-rectangle et ta-da !Vous avez réorganisé les colonnes :

1. alphorn      alligator    
2. bugle        baboon       
3. cornet       crocodile    
4. didgeridoo   dog          
5. euphonium    elephant     
6. flugelhorn   fish         
7. guitar       gopher       

Autres conseils

J'aime utiliser le rectangle à 2 fins principales, insérer le même texte sur chaque ligne ou supprimer une colonne de texte (similaire à la réponse de Dave Webb).

Il existe 2 raccourcis utiles pour ceux-ci, C-x r k va tuer un rectangle, et C-x r t à insérer (il existe d'autres commandes rectangle avec un C-x r préfixe, mais ce sont ceux que j'utilise).

Supposons donc que vous souhaitiez prendre du code et le formater afin de pouvoir le publier dans une publication Stack Overflow...vous devez préfixer avec 4 espaces.Alors, allez au début de la première ligne, C-SPC marquer, puis allez au début de la dernière ligne et C-x r t <SPC> <SPC> <SPC> <SPC> <RET>, Et voila!Ensuite, vous pouvez simplement le copier et le coller dans Stack Overflow.J'ai rencontré des situations plus complexes où cela est utile, où vous avez en fait du texte que vous souhaitez insérer sur chaque ligne à un endroit particulier.

Donc dans une autre situation comme celle de Dave Webb, si vous voulez tuer un rectangle, utilisez C-x r k mais parce que c'est beaucoup plus rapide ;-)

Aussi, selon mon carte de référence que j'ai imprimé au début, vous pouvez procéder comme suit :

  • C-x r r:copier dans un registre
  • C-x r y:tirez sur un rectangle
  • C-x r o:ouvrez un rectangle en décalant le texte vers la droite (quoi que cela signifie...)
  • C-x r c:videz un rectangle (je suppose que cela signifie le remplacer par des espaces, mais il faudrait l'essayer pour voir)
  • C-x r t:préfixe avec texte (comme décrit ci-dessus)
  • C-x r k:tuer (comme décrit ci-dessus)

Dans emacs24+, il existe également une fonction pour numéroter les lignes :

(rectangle-number-lines START END START-AT &optional FORMAT)

Insert numbers in front of the region-rectangle.

START-AT, if non-nil, should be a number from which to begin
counting.  FORMAT, if non-nil, should be a format string to pass
to `format' along with the line count.  When called interactively
with a prefix argument, prompt for START-AT and FORMAT.

Il est lié à C-x r N par défaut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top