有选择地设置iskeyword

时间:2014-09-24 02:43:08

标签: search vim yank

我经常需要搜索大型xml模式文件,以便下一次出现在光标下的单词,但如果它是标记结束标记,则最好不要

在下面的示例中,#是光标所在的位置。使用不包括*#的iskeyword的><将在<Dealid></Dealid>之间移动。

<Deali#d>4444</Dealid>
... 50 lines
<Dealid>6666</Dealid>
... n lines
<Dealid>5643</Dealid>

我尝试了:set iskeyword+=<,可以移动到下一场比赛,但它已更改vey以包含结束标记的<,因此转移到6666的开头例如,键入vey将会6666<而不是6666

无论如何要充分利用这两个字词或将iskeyword+=<限制为*#运营商?

2 个答案:

答案 0 :(得分:5)

这应该做你想要的。

nnoremap * :set iskeyword+=<<CR>*:set iskeyword-=<<CR>
nnoremap # :set iskeyword+=<<CR>#:set iskeyword-=<<CR>

在执行iskeyword*之前设置更改#,然后重置它。

答案 1 :(得分:0)

可以使用visual star search而不是更改'iskeyword'。这将允许您直观地选择文本,然后点击*。例如va<*

如果您不想使用插件,可以在~/.vimrc文件中添加以下映射:

xnoremap * y/\V<c-r>=escape(@", '\')<cr><cr>

注意:此映射会破坏未命名的寄存器,因此最好使用more advanced mappingplugin