Небольшое улучшение ответа Стефана:
(defun jump-to-same-indent (direction)
(interactive "P")
(let ((start-indent (current-indentation)))
(while
(and (not (bobp))
(zerop (forward-line (or direction 1)))
(or (= (current-indentation) 0)
(> (current-indentation) start-indent)))))
(back-to-indentation))
Эта функция принимает аргумент префикса (например, +1/-1), который обозначает количество строк, которые нужно переместить при поиске строки с таким же отступом. Он также пропускает пустые строки. Наконец, можно связать как прямой, так и обратный поиск, используя сочетания клавиш, подобные M-{
и M-}
для абзацев:
(global-set-key [?\C-{] #'(lambda () (interactive) (jump-to-same-indent -1)))
(global-set-key [?\C-}] 'jump-to-same-indent)