Копировать / восстановить всю форму Lisp в Slime - PullRequest
6 голосов
/ 11 января 2011

Есть ли способ скопировать / восстановить целую форму в Slime / Emacs?

Например, если у меня есть следующая функция:

(myfunc (lst)
    (myotherfunc lst))

Я бы хотелyank / copy:

(myotherfunc lst)

с помощью комбинации клавиш, когда мой курсор находится в открывающей или закрывающей скобке для этой формы (в точке, где Slime / Emacs выполняет сопоставление скобок).

Ответы [ 4 ]

13 голосов
/ 11 января 2011
  • C-M-SPC (mark-sexp), чтобы поставить отметку в конце sexp, затем скопируйте / yank

  • C-M-f (forward-sexp) и C-M-b (back-sexp) используются для перемещения вперед и назад по сбалансированному выражению

http://www.emacswiki.org/emacs/ParenthesisMatching#toc2

9 голосов
/ 11 января 2011

В моем Emacs функция kill-sexp связана с C-M-k . То есть, предполагая, что точка находится перед открывающим разделителем сбалансированного выражения , одновременно нажмите клавиши Control, Meta и k.

Эта же команда работает в различных других режимах, не относящихся к Лиспу, таких как уничтожение блоков с разделителями в скобках в режиме стиля C, хотя команда kill-sexp может быть не привязана к тем же ключам.

3 голосов
/ 11 января 2011

Незначительный режим emacs ParEdit делает это по умолчанию при обычных убийствах 'C-k'. Я бы порекомендовал его всем пользователям emacs + slime.

0 голосов
/ 16 сентября 2015

Вы можете использовать lispy , а затем вы можете нажать n , который запускается lispy-new-copy для копирования

(myotherfunc lst)
...