【问题标题】:Set iskeyword selectively有选择地设置 iskeyword
【发布时间】:2014-11-18 09:37:28
【问题描述】:

通常我需要在大型 xml 模式文件中搜索光标下的下一个单词,但如果它是结束标签的标签则最好不要

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

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

我尝试了:set iskeyword+=&lt;,它可以很好地移动到下一个匹配项,但它更改了vey 以包含结束标记的&lt;,因此移动到6666 的开头,例如,然后输入@987654332 @ 会拉动6666&lt; 而不是6666

要充分利用这两个词,还是将iskeyword+=&lt; 限制为*# 运算符?

【问题讨论】:

    标签: search vim yank


    【解决方案1】:

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

    如果您不想使用插件,可以将以下映射放入您的 ~/.vimrc 文件中:

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

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

    【讨论】:

    • 我之前曾尝试使用 * 进行视觉搜索,但不喜欢它,但感谢您的建议。我一定会看看插件
    【解决方案2】:

    这应该做你想做的。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 2018-12-20
      • 2015-08-27
      相关资源
      最近更新 更多