выберите строку, чтобы переместить ее с помощью Emacs - PullRequest
6 голосов
/ 04 октября 2010

Мне нравится TextMate, который может выбрать строку, чтобы переместить ее простым нажатием клавиши.

Command-shift L (select a line) 
Control-Command Arrow(up and down) (move the selected line)

Как я могу сделать то же самое с emacs?

Ответы [ 5 ]

7 голосов
/ 05 октября 2010

ТАК пользователь, Sanityinc разработал move-text.el (выдержка из basic-edit-toolkit.el - автор emakswiki регулярно, Энди Стюарт (lazycat))

См .: Переместить строку / область вверх и вниз в emacs

Очень хорошо справляется с этой задачей ...

M-Up или M-Down для перемещения текущей строки (или целых линий отмеченной области).

Я добавил его в http://www.emacswiki.org/emacs/MoveText

Отредактируйте привязки внизу в соответствии с вашими предпочтениями.

6 голосов
/ 04 октября 2010

Я просто удаляю строку, а затем возвращаю ее на новое место. C-a C-k C-k (перейти на новое место) C-y

4 голосов
/ 04 октября 2010

Стандартная команда Cx Ct связана с transpose-lines.Это полезно для транспортировки линий через обмен несколькими способами.

Наиболее очевидным является то, что происходит обмен строк, в которых находится точка, с предыдущей строкой.

С аргументом 0 (т. Е. M-0 Cx Ct), она меняет линию, в которой есть метка, на линию, в которой есть точка.

4 голосов
/ 04 октября 2010

move-line делает это, за исключением выделения, которое должно быть достаточно легко добавить.

0 голосов
/ 15 сентября 2013

прелюдия Ббацова (разновидность начального набора 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 .

...