一些几乎可以满足您要求的建议:
在 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-fandM-b来跳过单词。在点击或时按住M键足够快,以至于我在大多数情况下默认使用它。bf
编辑:
忘记了另一个不错的命令 - 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)