我经常需要搜索大型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+=<
限制为*
和#
运营商?
答案 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 mapping或plugin。