Wie kann man Region und / oder Linie nach rechts ausrichten?

10

Wir können Text mit M-x center-regionund zentrieren M-o M-s. Gibt es etwas Ähnliches für die Rechtsausrichtung?

Beispiel vor:

Item 0: value                                                       |
Item 100: value                                                     |
Item 30: value                                                      |

nach:

                                                       Item 0: value|
                                                     Item 100: value|
                                                      Item 30: value|
                                                       fill-column  ^

Was ist der einfachste Weg, um Text nach rechts auszurichten?

Mark Karpov
quelle

Antworten:

13

Gemäß dem manuellen Knoten zum Füllen verwenden einige der Füllfunktionen ein optionales JUSTIFY-Argument, das Sie verwenden können. So können Sie beispielsweise einen Absatz mit der richtigen Begründung füllen (fill-paragraph 'right).

Sie können auch (justify-current-line 'right)für eine einzelne Zeile verwenden.

Wenn Sie diese Optionen häufig verwenden möchten, können Sie sie in Funktionen wie die folgenden einbinden und diese Funktionen dann an die Tasten Ihrer Wahl binden:

(defun right-justify-current-line ()
  "Right-justify this line."
  (interactive)
  (justify-current-line 'right))

(defun right-fill-paragraph ()
  "Fill paragraph with right justification."
  (interactive)
  (fill-paragraph 'right))

Hier ist eine Funktion, für die Sie möglicherweise Ersatz verwenden fill-paragraph. Mit verschiedenen Präfixen können Sie entscheiden, welche Art von Begründung für den Absatz verwendet werden soll, den Sie ausfüllen:

(defun fill-paragraph-dwim (&optional arg)
  "Fills the paragraph as normal with no prefix. With C-u,
right-justify.  With C-u C-u, center-justify.  With C-u C-u C-u,
full-justify."
  (interactive "p")
  (fill-paragraph (cond ((= arg 4)  'right)
                        ((= arg 16) 'center)
                        ((= arg 64) 'full))))

Wenn Sie beim Ausrichten nach rechts nicht füllen möchten , können Sie die folgende Funktion verwenden, die direkt von der center-regionFunktion mit einer einzeiligen Änderung abgeschnitten wird , um sie stattdessen nach rechts auszurichten:

(defun right-region (from to)
  "Right-justify each nonblank line starting in the region."
  (interactive "r")
  (if (> from to)
      (let ((tem to))
    (setq to from from tem)))
  (save-excursion
    (save-restriction
      (narrow-to-region from to)
      (goto-char from)
      (while (not (eobp))
    (or (save-excursion (skip-chars-forward " \t") (eolp))
        ;; (center-line))              ; this was the original code
        (justify-current-line 'right)) ; this is the new code
    (forward-line 1)))))
Dan
quelle