46 votes

Ajout de caractères à la fin de chaque ligne dans Emacs

Supposons que j'ai un fichier texte avec le contenu

1
123
12
12345

Si je veux ajouter un " a "en début de chaque ligne, je peux simplement utiliser des chaînes de caractères-rectangle (C-x r t), mais si je veux ajouter un" a " à la fin de chaque ligne, après lequel le fichier doit devenir

1a
123a
12a
12345a

Merci.

65voto

nelhage Points 1660

Vous pouvez utiliser replace-regexp à cette fin, avec l' $ regexp métacaractère qui correspond à la fin de la ligne. Aller au début de la mémoire tampon, puis effectuez l' M-x replace-regexp, et répondez - $ et (votre texte) pour les deux invites.

Ou, en emacs-dire, pour votre exemple de l'ajout d' a:

M-< M-x replace-regexp RET $ RET a RET

21voto

Trey Jackson Points 49816

Emacs macros de clavier sont à votre ami.

C-x ( C-e a C-n C-x )

Qui vient de configure le clavier macro par: à partir du clavier macro (C-x (), aller à la fin de la ligne (C-e), insérer un a, allez à la ligne suivante (C-n), et puis à la fin de l'enregistrement de la macro (C-x )).

Maintenant, vous pouvez soit exécuter (C-x e), et maintenir la touche e pour chaque ligne que vous voulez l'exécuter, ou vous pouvez l'exécuter sur une région avec C-x C-k r.

Si vous faites cela, vous pouvez enregistrer la macro, ou vous pouvez écrire une fonction. Ce serait une de ces fonctions:

(defun add-string-to-end-of-lines-in-region (str b e)
  "prompt for string, add it to end of lines in the region"
  (interactive "sWhat shall we append? \nr")
  (goto-char e)
  (forward-line -1)
  (while (> (point) b)
    (end-of-line)
    (insert str)
    (forward-line -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