5

我从 Vim 切换到 Emacs,现在我对 Emacs 非常着迷。
但是在 Vim 中有一个非常非常有用的技巧,我不能在 Emacs 中方便地使用,那就是找到下一个/上一个单词。在 Vim 中使用 */# 非常方便。
最简单的方法是移动到点的单词的开头,然后是 Cs 和 Cw,使用 Cs/Cr 查找下一个/上一个单词。 然后我从Mastering Emacs
中 找到了另一个技巧,但仍然是一些小错误。 今天我找到了一个插件——vimpulse,它在 Emacs 中模拟 vim。我可以像 Vim 一样使用 */# !!但似乎 vimpulse 会自动启用 Viper。

那么,还有其他方法可以实现这个要求吗?或者,如果我使用 vimpulse,我可以自动禁用 Viper 吗?

4

2 回答 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-;再次按下,只有该区域内的匹配项将被编辑。

于 2012-04-29T15:11:24.243 回答
4

尝试邪恶:https ://gitorious.org/evil/pages/Home

*/# 很好用。

于 2012-04-29T15:15:03.833 回答