3

Очень часто я зацикливаюсь на поиске конца циклов, методов и классов и в конечном итоге просеиваю весь код, который отнимает много времени и разочаровывает. Я бы предпочел пропустить, чтобы перейти к следующей строке с таким же отступом.

Есть ли в emacs какой-либо ярлык для этого?

2 ответа2

4

Небольшое улучшение ответа Стефана:

(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)
2

Я не знаю ни одного, но что-то вроде

(defun jump-to-next-same-indent ()
  (interactive)
  (let ((start-indent (current-indentation)))
    (while
      (and (not (bobp))
           (zerop (forward-line 1))
           (> (current-indentation) start-indent))))
  (back-to-indentation))

должен работать, который вы могли бы связать, например, с Mp с

(global-set-key [?\M-p] #'jump-to-next-same-indent)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .