92 votes

Emacs : comment effacer du texte sans kill ring ?

J'aimerais supprimer du texte pour pouvoir en retirer d'autres. au lieu de de celui-ci. Comment faire ? C-w coupe le texte sélectionné pour tuer l'anneau et je me retrouve sans le texte que je voulais arracher.

Est-il possible d'extraire le texte directement ? au lieu de d'un texte sans même appuyer sur les boutons pour le tuer ?

0 votes

2 votes

Pour la première question, vous pouvez utiliser la touche d'effacement arrière du clavier et pour la deuxième question, vous pouvez marquer le texte.

0 votes

N'est-ce pas simplement C-x r k après avoir défini votre bloc ?

58voto

ashawley Points 1848

I type M-x delete-region assez souvent, mais vous pouvez le lier à une clé.

Avec Supprimer le mode de sélection dans les versions plus récentes d'Emacs, il n'est pas nécessaire de taper une commande, il suffit de commencer à taper :

Par défaut, l'insertion de texte se fait normalement, même si la marque est active - par exemple, en tapant a, on insère le caractère "a", puis on désactive la marque. Le mode Supprimer la sélection, un mode mineur, modifie ce comportement : si vous activez ce mode, l'insertion de texte alors que la marque est active entraîne l'effacement préalable du texte dans la région. De même, les commandes qui ne suppriment normalement qu'un seul caractère, telles que C-d o DEL supprimera l'ensemble de la région. Pour activer ou désactiver le mode Suppression de la sélection, tapez M-x delete-selection-mode.

41 votes

De plus, avec la dernière version d'Emacs, vous n'avez même pas besoin de lier delete-region à une clé, car c'est désormais ce que fait Backspace. Le retour arrière supprime la région sélectionnée au lieu de la tuer, c'est-à-dire qu'il efface le texte sélectionné sans le sauvegarder ni le pousser vers le kill ring. Ceci est dû au fait que la valeur de delete-active-region es t à moins que vous ne l'adaptiez à une autre valeur.

40voto

Eugene Morozov Points 4417

Vous pouvez utiliser M-y après C-y pour insérer l'élément précédent de la bague d'abattage, ou utilisez la touche browse-kill-ring l'emballage.

Pour la deuxième question, voir DeleteSelectionMode .

21voto

Haakon Løtveit Points 159

J'ai eu le même problème. La chose la plus proche que j'ai trouvée jusqu'à présent est de faire une petite fonction qui est essentiellement :

(defun ruthlessly-kill-line ()
  "Deletes a line, but does not put it in the kill-ring. (kinda)"
  (interactive)
  (move-beginning-of-line 1)
  (kill-line 1)
  (setq kill-ring (cdr kill-ring)))

2 votes

Pourquoi ne pas se contenter de (delete-region (line-beginning-position) (line-end-position)) ?

0 votes

La fonction mentionnée semblait intéressante, mais elle n'a pas fonctionné pour moi en général. En particulier, j'ai constaté qu'elle faisait pointer le pointeur d'arrachage à l'autre extrémité de l'anneau d'abattage, qui en général (en fait presque toujours ?) n'est pas l'élément suivant de la liste ! (J'essaie toujours de trouver une fonction qui fonctionne de manière fiable par délégation à `kill-line'... peut-être que je vais simplement recourir à delete-region comme d'autres l'ont fait...)

5voto

Evgeny Points 51

M-x eval-expression (setq kill-ring (cdr kill-ring)) - supprime le dernier élément du kill-ring

0 votes

Bizarrement, il ne le fait que pour la session en cours. En dehors d'emacs, il n'est pas retiré de l'anneau kill !

4voto

danielpoe Points 2858

Pour votre deuxième question, alternativement à DeleteSelectionMode vous pouvez activer Mode AUC qui offre en outre un mode de sélection du rectangle activé par C-Return. Le mode CUA fait partie d'emacs depuis la version 22.1.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X