我最近开始使用emacs来编写我的程序代码。我想知道是否有一个“命令”可以直接从行首到达第 n 个字符而不使用任何技巧(如重复 n 次 C-f
)。我简要地浏览了emacs手册,但没有找到任何东西。
3 回答
对于 n == 12
C-u12C-f
或者
C-1C-2C-f
我简要地浏览了emacs手册,但没有找到任何东西。
C-hrC-s repeat
(评论太长了)
您评论说您不想使用命令组合,但是... Emacs 的一个特点是通过组合功能很容易“扩展”它。您经常重复某些任务并希望将其自动化?编写一个函数来解决您的问题并将其绑定到一个键。或者录制一个宏并重播(如果需要,可以将其绑定到一个键)。
现在到第n个字符,我这样做的方式取决于我所追求的......
通常,如果我想转到“缩进”,那么我会使用绑定到Ca的便捷函数(我可能从 SO 上的某个人那里得到),该函数在行首或缩进之间循环:
(defun beginning-of-line-or-indentation () "move to beginning of line, or indentation" (interactive) (if (bolp) (back-to-indentation) (beginning-of-line)))
现在,如果我想转到特定字符,通常我会使用isearch-forward(默认绑定到Cs),然后输入我想要的内容。我一直在使用它,它可以节省大量时间。我看到很多关于人们使用 Emacs(或其他东西)并将光标“一直”移动到一个可以通过执行 Cs 然后输入一两个字符就可以到达的位置的视频,这总是让我大吃一惊。它当然可以跨多行工作,您可以通过调用isearch-backward 向后搜索(默认绑定到Cr)。
否则,通用参数(Cu)很好,但如果您不在行首,它就不起作用。
如果由于某种原因这是您需要经常做的事情,那么编写一个调用行首的函数然后向前移动您想要的字符数是微不足道的......现在当然这是 Emacs,所以这个函数可能已经存在 : )