在使用 Emacs 编辑文件时,经常需要快速定位到某一行。比如查看日志、修改代码中的某个函数,或者别人告诉你“第 45 行有个错”,这时候如果一行行滚动去找,效率太低。其实 Emacs 提供了多种方式可以瞬间跳转到指定行。
使用 goto-line 命令
最直接的方法是使用内置的 goto-line 命令。按下 M-g g(也就是先按 Alt+g,再按 g),然后在 minibuffer 中输入目标行号,回车即可跳转。
M-g g 100
这条命令会直接跳到第 100 行。如果你常用这个功能,也可以把它绑定到更顺手的快捷键上。
通过命令行打开时指定行号
有时候你还没打开文件,就已经知道要编辑哪一行。可以在终端中使用 emacsclient 或 emacs 加上 + 参数来实现。
emacs +50 filename.txt
这样 Emacs 启动后就会自动跳转到第 50 行。配合项目管理工具或脚本时特别方便,比如编译报错提示某行有问题,直接带行号打开。
在 Lisp 表达式中跳转
如果你习惯用 Elisp,也可以手动执行跳转函数。按下 M-: 进入 eval-expression,然后输入:
(goto-line 87)
回车后光标就会跳到第 87 行。这种方式适合写成小函数嵌入到自己的配置中。
启用 line-number-mode 后更直观
虽然不影响跳转功能,但开启行号显示会让你更容易确认当前位置。可以在当前缓冲区临时开启:
M-x display-line-numbers-mode
或者在配置文件中全局启用。看到行号清清楚楚地列在左边,找起位置来心里更有底。
结合搜索一起用
有时候“跳到某行”只是手段,真正目的是找内容。比如你知道错误出现在 200 行附近,但不确定具体位置。可以先跳过去,再用 C-s 向前搜索关键词,或者用 C-r 往回找,效率更高。
熟练掌握这些跳转技巧后,处理大文件时不再手忙脚乱。无论是调试代码还是浏览配置,都能几步到位。