Comment remplacer un caractère par un retour à la ligne dans Emacs?

J'essaie de remplacer un caractère - disons ; - par une nouvelle ligne en utilisant replace-string et / ou replace-regexp dans Emacs.

, j'ai essayé les commandes suivantes:

  • M-x replace-string RET ; RET n

    Cela remplacera ; par 2 caractères: n.

  • M-x replace-regex RET ; RET n

    Il en résulte l'erreur suivante (montrée dans le minibuffer):

    Utilisation non valide de ' ' dans le texte de remplacement.

Quel est le problème avec l'utilisation de replace-string pour cette tâche? Est-il un autre moyen de le faire?

Merci.

238
demandé sur itsjeyd 2009-03-05 02:50:14

5 réponses

M-x replace-string RET ; RET C-q C-j.

  • C-q pour quoted-insert,

  • C-J est une nouvelle ligne.

Cheers!

358
répondu Jonathan Arkell 2014-04-09 09:48:21

Il y a quatre façons que j'ai trouvées de mettre une nouvelle ligne dans le minibuffer.

  1. C-o

  2. C-q C-j

  3. C-q 12 (12 est la valeur octale de saut de ligne)

  4. C-x o dans la fenêtre principale, tuer un retour à la ligne avec , C-k, puis , C-x o retour à l'minibuffer, tirer avec C-y

58
répondu slipmthgoose 2014-04-09 09:53:38

N'oubliez pas que vous pouvez toujours couper et coller dans le minibuffer.

Vous pouvez donc simplement copier un caractère de nouvelle ligne (ou n'importe quelle chaîne) de votre tampon, puis le retirer lorsque vous êtes invité à entrer le texte de remplacement.

22
répondu 2009-03-05 12:02:19

Plus explicitement:

Pour remplacer le caractère point-virgule (;) par un retour à la ligne, procédez comme suit.

  1. Localisez le curseur en haut à gauche du tampon contenant le texte que vous souhaitez modifier
  2. Tapez m - x replace-string et appuyez sur RETURN
  3. , le mini-tampon affichera quelque chose comme ceci: Remplacer la chaîne (par défaut ^ ->):
  4. Saisissez le caractère que vous souhaitez remplacer. Dans ce cas, ; et appuyez sur retour
  5. , le mini-tampon affichera quelque chose comme ce: chaîne ; avec:
  6. exécutez maintenant C-q C-J
  7. Toutes les instances de point-virgule seront remplacées par une nouvelle ligne (de l'emplacement du curseur à la fin du tampon apparaîtra maintenant)

Un peu plus que l'explication originale ne le dit.

7
répondu afc 2012-09-28 06:54:15

Passer en mode texte

M-x text-mode

Mettre en surbrillance le bloc pour indenter

Tiret

C+M \

Revenez à n'importe quel mode..

2
répondu rebelbass 2014-02-18 04:24:48