在vim中,如何进行自定义单词边界运动?

时间:2012-03-02 21:47:56

标签: search vim word motion boundary

据我了解,w通过将文本分成3组来识别单词边界:

1)iskeyword设置中指定的字符(字母,数字和下划线)

2)其他不可打印的字符(符号)

3)空格字符

每次按下w,它都会转到下一组1或组2.我想自定义它,只会转到下一组1,跳过“符号字”。

这几乎有用:

nnoremap w /\k\+<CR>

使用iskeyword字符类\k。但它很难看,因为它模拟我进行搜索,这会改变我的突出显示,使我的搜索历史变得混乱,谁知道还有什么。是否可以像w命令一样“干净地”完成这项工作?

2 个答案:

答案 0 :(得分:3)

我认为您正在寻找operator pending mode,a.k.a xmap, smap和家人。

我已经完成了这些in other answers on SO的一些例子:

最相关的例子可能是

您还会发现一些相似但可能对您有用的技术

答案 1 :(得分:0)

我在这里可能没什么帮助..我甚至不知道\k在这种情况下的含义,但你可以解决你提出的两个直接问题:

nnoremap w /\k\+<CR>:nohl<CR>:call histdel("search", -1)<CR>

它很难看,突出显示可能会闪烁,但也许这会指向正确的方向。