Par Emacs, comment joindre deux lignes en une seule?

Je suis nouveau sur Emacs. J’ai googlé ceci mais pas de bonne réponse là-bas. L’un d’eux est Ctrl-n Ctrl-a Retour arrière Cela fonctionne mais est stupide. Existe-t-il un moyen simple et rapide de joindre un bloc de lignes en une seule ligne?

En fait, je peux utiliser Esc-q pour remplir automatiquement un paragraphe maintenant, mais comment pourrais-je le faire revenir sans UNDO?

Vous pouvez définir une nouvelle commande pour cela, en ajustant temporairement la largeur de remplissage avant d’utiliser la commande Esc-q:

;; -- define a new command to join multiple lines together -- (defun join-lines () (interactive) (setq fill-column 100000) (fill-paragraph nil) (setq fill-column 78) ) 

Évidemment, cela ne fonctionne que si votre paragraphe contient moins de 100 000 caractères.

Placez le point n’importe où sur la dernière ligne du groupe de lignes à joindre et appelez

 M-^ 

jusqu’à ce que toutes les lignes soient fusionnées.

Remarque: il laisse un espace entre toutes les lignes désormais jointes.

Mx join-line va joindre deux lignes. Liez-le simplement à une frappe de touche pratique.

Il suffit de remplacer les nouvelles lignes avec rien.

Plusieurs curseurs combinés avec M- ^ réduiront toutes les lignes sélectionnées en une seule avec tous les espaces blancs superflus supprimés.

Par exemple, pour sélectionner un tampon entier, appeler le mode à plusieurs curseurs, réduire en une seule ligne, puis désactiver le mode à plusieurs curseurs:

 Cx h Mx mc/edit-lines M-^ Cg 

J’aime la manière Sublime text Joindre la ligne avec la commande J pour que je le fasse de cette façon:

 (defun join-lines (arg) (interactive "p") (end-of-line) (delete-char 1) (delete-horizontal-space) (insert " ")) 

J’utilise la fonction suivante et la lie à «M-J».

 (defun concat-lines () (interactive) (next-line) (join-line) (delete-horizontal-space)) 

Si vous préférez conserver la position du curseur, vous pouvez utiliser save-excursion .

Le nom conventionnel d’Emacs pour “join” est “fill”. Oui, vous pouvez joindre deux lignes avec M-^ – et c’est pratique – mais plus généralement, vous voudrez joindre n lignes. Pour cela, voir les commandes fill* , telles que fill-region , fill-paragraph , etc.

Voir cela pour plus d’informations sur la sélection des choses qui peuvent ensuite être remplies.

“Comment pourrais-je le faire revenir sans UNDO?”:

 (defun toggle-fill-paragraph () ;; Based on http://xahlee.org/emacs/modernization_fill-paragraph.html "Fill or unfill the current paragraph, depending upon the current line length. When there is a text selection, act on the region. See `fill-paragraph' and `fill-region'." (interactive) ;; We set a property 'currently-filled-p on this command's symbol ;; (ie on 'toggle-fill-paragraph), thus avoiding the need to ;; create a variable for remembering the current fill state. (save-excursion (let* ((deactivate-mark nil) (line-length (- (line-end-position) (line-beginning-position))) (currently-filled (if (eq last-command this-command) (get this-command 'currently-filled-p) (< line-length fill-column))) (fill-column (if currently-filled most-positive-fixnum fill-column))) (if (region-active-p) (fill-region (region-beginning) (region-end)) (fill-paragraph)) (put this-command 'currently-filled-p (not currently-filled))))) (global-set-key (kbd "Mq") 'toggle-fill-paragraph) 

De EmacsWiki: Unfill Paragraph

  ;;; Stefan Monnier . It is the opposite of fill-paragraph (defun unfill-paragraph (&optional region) "Takes a multi-line paragraph and makes it into a single line of text." (interactive (progn (barf-if-buffer-read-only) '(t))) (let ((fill-column (point-max)) ;; This would override `fill-column' if it's an integer. (emacs-lisp-docssortingng-fill-column t)) (fill-paragraph nil region))) 

Le moyen le plus simple jamais:

  1. Sélectionnez le paragraphe / les lignes par Mh ou C-SPC
  2. Appuyez sur Mq
  3. Soyez témoin des Emagics (Emacs Magic) !!