Emacs:向前和向后移动到特定字符

22
在 Vim 中,我可以使用 f 向前移动光标到某个字符,使用 F 则是向后移动。那么在 Emacs 中怎么做呢?我知道可以使用 C-z 或者 M-z 删除到某个字符,也可以先删除再粘贴来实现移动。但是 1)有没有更好的方法只进行光标的移动而不是删除呢?2)如何向后移动?

1
虽然ace jump并不完全相同,但你可能想要查看一下。 - Tom
1
@Tom 请查看jump-char,它可以满足你的需求,并且还支持ace-jump-mode集成。 - event_jr
4个回答

15

向前增量搜索是 C-s,向后增量搜索是 C-r。

回应评论:

要从当前位置向后删除到特定字符,您可以使用

C- 标记当前位置,然后使用 C-r 定位搜索字符,最后使用 C-w 删除当前位置和标记之间的内容。

要获取有关在emacs中执行操作的更多帮助,请查看教程。键入 C-h t 将在新缓冲区中打开教程。


谢谢。如何向后删除直到某个字符?比如我有“abcd|efg”,其中“|”表示光标。如何删除“bcd”? - gefei
2
通过在 C-z 前加上负数参数,例如 C-u -1 C-z - Moritz Bunkus
当然,如果您认为这太复杂而难以按下,您可以将其绑定到某个键。 - Tom
@Tom 在emacs讨论按键时,“convoluted”一词总是多余的。 ;) - William Pursell
1
我同意默认设置通常很糟糕,只有一些老派Emacs用户认为它们经过深思熟虑且方便使用。我建议每个人都根据自己的个人喜好无情地重新绑定默认绑定。 - Tom
1
C-<空格> 用于标记当前位置,' 部分是多余的,因为 Emacs 在按下 <RET> 后会将“搜索开始处保存的标记”作为标记。 - user4104817

9

jump-char是专为此任务设计的。

要删除,请使用zap-to-char或在跳转之前通过按下C-spc激活标记,然后按下C-w


实际上不需要激活标记,它可以在不使用 C-spc 的情况下工作。 - event_jr

0

我使用iy-go-to-char,就像在展示它的Emacs Rocks!screencast中一样。

我喜欢它不会突出显示缓冲区中所有出现的字符,不会分散你的注意力,使其成为最快的选项。

我个人使用iy-go-up-to-char版本,让它在目标字符之前停止。

示例快捷键(iy-go-to-char在MELPA上):

(global-set-key (kbd "M-m") 'iy-go-up-to-char) ;; 将光标移动到下一个字符出现的位置。可以立即开始输入。


-3

在编程中,我经常使用以下快捷键:

Ctrl-s进行搜索

使用 Alt-f 向前移动一个单词,或者使用 Ctrl-f 向前移动一个字符,以进行导航

Alt-b向后移动一个单词,或者使用 Ctrl-b 向后移动一个字符。

如需更多参考,请查看Emacs Cheatsheet


那个 Emacs 备忘单链接已经失效了。 - Ricky Nelson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接