Emacs中的Vim-like * /# - (下一个/前一个单词)?

时间:2012-04-29 14:53:08

标签: emacs

我从Vim切换到Emacs,现在我为Emacs做了疯狂。
但是在Vim中有一个非常有用的技巧,我不能在Emacs中方便地使用,那就是找到下一个/前一个单词。这些在Vim中非常方便* /#。
最简单的方法是在点上移动到单词的开头,然后是C-s和C-w,使用C-s / C-r查找下一个/前一个单词。
然后我从Mastering Emacs找到了另一个技巧,但仍然是一些小错误。
今天我找到了一个插件 - 在Emacs中模拟vim的vimpulse。我可以使用* /#那里只是喜欢Vim !! 但似乎vimpulse会自动启用Viper。

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

2 个答案:

答案 0 :(得分: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 - ; ,现在 tab shift tab 将在匹配的符号之间移动。

C - '(单引号)会显示一个特别的occur视图 缓冲液中。

对于奖励重构工具,请在您想要的位置标记一个区域(可能是一个类) 重命名符号(变量),然后再次按 C - ; 并仅匹配 在该地区内将进行编辑。

答案 1 :(得分:4)

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

* /#很适合它。