修改emacs前向词/后向行为(类似于vi / vim)

时间:2010-10-14 09:34:25

标签: emacs navigation

在vim中使用与来回导航这个词相同的行为最简单的方法是什么?在vim中按“w”时,它会向前移动一个单词,其中单词由一系列字母,数字和下划线或一系列其他非空白字符组成,用空格分隔(空格,标签,eol)。另一方面,在emacs中,它跳过下一个单词的结尾,并在语法表中按模式定义单词。

例如:在下面一行的开头有一个光标,显示当你执行forward-word(“w”)操作时vim放置光标的位置:

opt1.arg = opt2.arg
^   ^^   ^ ^   ^^  ^

在emacs中它就像:

opt1.arg = opt2.arg
^   ^   ^      ^   ^

这实际上取决于一个人的偏好,但我倾向于更喜欢vim风格,我想知道在emacs中使用相同内容的最简单方法是什么。我想我并不是唯一一个从vim切换到emacs的人,所以也许有人已经有了解决方案,理想情况下也适用于kill-wordbackward-kill-word:)

我知道你可以通过M-fM-b等组合来获得相似的东西,但这不是重点。我也不想开始讨论哪种方法更好 - 在here中讨论了topis。

3 个答案:

答案 0 :(得分:6)

您实际上可以使用'viper-forward-word

(require 'viper)
(global-set-key (kbd "M-f") 'viper-forward-word)
(global-set-key (kbd "M-b") 'viper-backward-word)

答案 1 :(得分:1)

大多数是this的副本,其中包含:

(require 'misc)

然后将您想要的任何键绑定到forward-to-wordbackward-to-word。对于kill,创建一些简单的函数来包装这些函数并杀死它们。

答案 2 :(得分:0)

我不知道为什么jpkotta的答案被删除了,但是又来了:

  

我有一个次要模式,可以更改基于字的命令来操作语法更改(以及CamelCaseSubwords)。对于某些品味来说,它可能有点过于细粒度,但我发现我基本上不再使用单一角色运动了。

     

https://bitbucket.org/jpkotta/syntax-subword

@ mods,我不知道为什么这个答案会被删除,所以如果您选择删除这个答案,我也会感谢您的解释。