Vim n用于"部分"单词搜索的键?

puk*_*puk 1 vim

如果我在源文件中实现了这样的C++函数:

void ClassName::foo ()
{
   if ( true)
   {
      while ( true )
      {
         fork ();
         1 / 0;
      }
      foo ();
   }
}
Run Code Online (Sandbox Code Playgroud)

然后我把光标放在最后一行的第3行foo ()并按下*,它抱怨"搜索命中BOTTOM,继续在TOP".换一种说法:

/\<foo\>
Run Code Online (Sandbox Code Playgroud)

不匹配

ClassName::foo
Run Code Online (Sandbox Code Playgroud)

无论如何都要覆盖默认搜索功能

Ing*_*kat 5

那是因为您'iskeyword'对C++文件的设置包含该:字符.甲*上的命令ClassName::foo标识符将突出显示整个标识符.

您可以使用g*命令(不强制执行整个单词搜索,但也可以匹配例如pfooey),或通过以下方式更改选项

:setlocal iskeyword-=:
Run Code Online (Sandbox Code Playgroud)

(但请注意,这会对动作产生影响w,甚至可能会破坏语法突出显示.)