Emacs中是否有类似Vim的*/#-(下一个/上一个光标处单词)功能?

5
我曾经从Vim转到Emacs,现在非常热爱Emacs。 但是在使用Emacs时,有一个非常有用的技巧在方便上不如Vim,那就是查找光标下的单词。在Vim中,使用*/#非常方便。 最简单的方法是移动到光标下的单词开头,然后C-s和C-w,使用C-s/C-r查找前/后的单词。 接着我在Mastering Emacs上发现了另一个技巧,但仍存在一些小错误。 今天我发现了一个插件-vimpulse,它模拟了Vim在Emacs中的使用方式。我可以像在Vim中一样使用*/#!! 但似乎vimpulse会自动启用Viper。 那么,还有没有其他方法实现这个需求?或者说,如果我使用vimpulse,可以自动禁用Viper吗?
2个回答

7

首先,答案

嗯,通常情况下,我们可以在Emacs中做得更好。我使用的包是highlight-symbols

具体来说,我使用F3键的变化来绑定它的一系列命令:

;;;;;;;;;;;;;;;;;;;;;;
;; highlight-symbol ;;
;;;;;;;;;;;;;;;;;;;;;;

(require 'highlight-symbol)

(global-set-key [f3] 'highlight-symbol-next)
(global-set-key [(shift f3)] 'highlight-symbol-prev)
(global-set-key [(control f3)] 'highlight-symbol-at-point)
(global-set-key [(control meta f3)] 'highlight-symbol-query-replace)

上一个/下一个符号很好用。但当阅读算法时,我发现突出显示一些关键变量最有帮助。

符号与单词的区别

符号与单词之间的区别对于编程非常有用。我不确定其他编辑器是否提供此区别。

另一种选择

我发现另一个相关的工具在编程中非常有用,它是iedit

这是我如何加载它的:

(autoload 'iedit-mode "iedit")
(global-set-key [(control \;)] 'iedit-mode)
(define-key isearch-mode-map  [(control \;)] 'iedit-mode)

为了实现您想要的操作,请进入符号并按下C-;,现在tabshift tab将在匹配的符号之间移动。
按下C-'(单引号)将向您显示缓冲区的临时occur视图。
作为额外的重构工具,标记您想要重命名符号(变量)的区域(可能是一个类),然后再次按下C-;,只有该区域内的匹配项才会被编辑。

太棒了!我更喜欢highlight-symbol,它可以用不同的颜色同时突出显示不同的符号。就像mark.vim一样做到了这一点。顺便说一句,颜色很漂亮;)谢谢你的帮助。 - hbin

4

太棒了!当打开一个缓冲区时,我如何自动切换到<E>状态? - hbin

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