выберите строку для ее перемещения с помощью emacs
Мне нравится TextMate, который может выбрать строку для ее перемещения простым нажатием клавиши.
Command-shift L (select a line) Control-Command Arrow(up and down) (move the selected line)
Как я могу сделать то же самое с Emacs?
5 ответов
Итак, пользователь, Sanityinc разработан move-text.el
(выписка из basic-edit-toolkit.el-by emakswiki regular, Andy Stewart (lazycat))
посмотреть: перемещение линии / области вверх и вниз в emacs
это делает эту задачу очень хорошо...
M-Up или M-Down для перемещения текущей строки (или целых строк отмеченной области.)
Я добавил его в http://www.emacswiki.org/emacs/MoveText
отредактируйте привязки внизу в соответствии с вашими предпочтениями.
Я просто удаляю строку, а затем возвращаю ее в новое место. C-a C-k C-k (переместить в новое место) C-y
move-line делает это, за исключением выделения, которое должно быть достаточно легко добавить.
стандартная команда C-x C-t привязана к transpose-lines
. Это полезно для транспортировать линии через взаимообмен в немного путей.
наиболее очевидным является то, что обменивается линией, в которой точка находится с предыдущей линией.
С аргументом 0 (т. е. M-0 C-x C-t) он меняет местами линию, в которой есть метка, с линией, в которой есть точка.
bbatsov это прелюдия (своего рода стартовый комплект Emacs) включает в себя эту функциональность (см. этот фрагмент кода):
(defun prelude-move-line-up ()
"Move the current line up."
(interactive)
(transpose-lines 1)
(forward-line -2)
(indent-according-to-mode))
и связывает его с M-S-up и M-s-down.