Emacs, как присоединиться к двум линиям в один?
Я новичок в Emacs. У меня есть googled это, но нет хорошего ответа там. Один из них является
Ctrl-n Ctrl-a Backspace
Это работает, но глупо. Есть ли быстрый и простой способ объединения блока строк в одну строку?
На самом деле, я могу использовать Esc-q для автоматического заполнения абзаца сейчас, но как я могу заставить его вернуться без UNDO?
Ответы
Ответ 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)