一些几乎可以满足您要求的建议:
在 lisp 代码中,您可以使用 sexp 移动命令来做您想做的事情。要从中间的某处到达表达式的开头,请使用backward-up-list
,它绑定到M-C-u
。在您的示例中,这会将您带到左括号。要向后移动列表中的单个元素,请使用backward-sexp
, 绑定到M-C-b
; forward-sexp
向另一个方向移动,并且必然M-C-f
。M-C-n
从一个 sexp 的开头,您可以使用;跳到下一个。与M-C-p
.
这些命令实际上都没有查看您所在的物理线路,因此它们会在多条线路上返回或前进。
其他选项包括Ace Jump 模式,这是一种非常巧妙的方式,可以快速导航到屏幕上任何可见单词的开头。这可能会消除您使用特定于行的命令的需要。为了在一行内快速移动,我通常使用M-f
andM-b
来跳过单词。在点击或时按住M
键足够快,以至于我在大多数情况下默认使用它。b
f
编辑:
忘记了另一个不错的命令 - back-to-indentation
,绑定到M-m
. 这将使您回到一行中的第一个非空白字符。您可以建议它在第一次调用时正常运行,然后在第二次调用时备份到行首:
(defadvice back-to-indentation (around back-to-back)
(if (eq last-command this-command)
(beginning-of-line)
ad-do-it))
(ad-activate 'back-to-indentation)