Подтвердить что ты не робот

Emacs, как присоединиться к двум линиям в один?

Я новичок в Emacs. У меня есть googled это, но нет хорошего ответа там. Один из них является Ctrl-n Ctrl-a Backspace Это работает, но глупо. Есть ли быстрый и простой способ объединения блока строк в одну строку?

На самом деле, я могу использовать Esc-q для автоматического заполнения абзаца сейчас, но как я могу заставить его вернуться без UNDO?

4b9b3361

Ответ 1

Вы можете определить для этого новую команду, временно регулируя ширину заливки перед использованием команды 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)
)

Очевидно, что это работает только в том случае, если ваш абзац имеет менее 100000 символов.

Ответ 2

Поместите точку в любом месте строки last группы строк, для которой необходимо соединить и вызвать

M-^

пока все линии не будут объединены.

Примечание. Он оставляет одно пространство между всеми теперь соединенными линиями.

Ответ 3

M-x join-line присоединится к двум строкам. Просто привяжите его к удобному нажатию клавиши.

Ответ 4

Просто замените символы новой строки ничем.

Ответ 5

Несколько курсоров в сочетании с M- ^ скроет все выделенные строки в один, удалив все посторонние белые пробелы.

Например, чтобы выбрать весь буфер, вызвать режим нескольких курсоров, свернуть в одну строку, а затем отключить режим нескольких курсоров:

C-x h
M-x mc/edit-lines
M-^
C-g

Ответ 6

Мне нравится способ Sublime text Присоединиться к команде J, поэтому я делаю это следующим образом:

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

Ответ 7

Я использую следующую функцию и привязываю ее к "M-J".

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

Если вы предпочитаете сохранять позицию курсора, вы можете использовать save-excursion.

Ответ 8

Обычное название Emacs для "join" - это "fill". Да, вы можете присоединиться две строки с M-^ - и это удобно - но в целом вы будете хотите присоединиться к линиям n. Для этого см. Команды fill*, например fill-region, fill-paragraph и т.д.

Подробнее см. при выборе вещей, которые затем могут быть заполнены.

Ответ 9

"как я могу заставить его вернуться без 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 symbol
  ;; (i.e. 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 "M-q") 'toggle-fill-paragraph)