Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search Vim,在文档标题中搜索_Search_Vim - Fatal编程技术网

Search Vim,在文档标题中搜索

Search Vim,在文档标题中搜索,search,vim,Search,Vim,我需要一个宏/函数来搜索当前文档,从顶部开始搜索特定模式。在未注释掉的第一行停止 例如,在此vim脚本中: "This is the first line "This is the third line if exists("did_something") 它将在if行停止,如果找到模式则返回true,否则返回false 感谢大家的帮助 假设您的模式是字母“e” 要搜索未注释掉但包含e的行,请执行以下操作: /^\%(\s*"\)\@!.*e 这使用了一个负的前瞻(\@!)来确认行的开

我需要一个宏/函数来搜索当前文档,从顶部开始搜索特定模式。在未注释掉的第一行停止

例如,在此vim脚本中:

"This is the first line

"This is the third line

if exists("did_something")
它将在if行停止,如果找到模式则返回true,否则返回false


感谢大家的帮助

假设您的模式是字母“e”

要搜索未注释掉但包含e的行,请执行以下操作:

 /^\%(\s*"\)\@!.*e
这使用了一个负的前瞻(
\@!
)来确认行的开头(
^
)后面不是注释的开头(空格,然后是双引号
\s*”
),而是后跟一个“e”(
*e
)。
\%(
\)
使封闭模式成为一个原子,其他操作符(如负前瞻)可以作为一个单元对其进行操作

要在匹配行上运行命令,请使用
:g

 :g/^\%(\s*"\)\@!.*e/echo "found one"
要查看当前行是否匹配,请使用
match()


正则表达式几乎总是一样的,问题是你想用匹配行做什么?

只是澄清一下:你的意思是“在第一个没有注释掉的匹配处停止吗?”"? 或者你只想搜索第一个未注释的行?@PrinceGoulash:他的意思是在标题中搜索,这是文件顶部的注释区域,直到(自然排除)第一个未注释的行,你获得否决票的原因是因为你要求的函数没有任何尝试的迹象。堆栈溢出不是为您提供代码,而是帮助您解决代码问题。
 :echo match( getline(line('.')), '^\%(\s*"\)\@!.*e' ) >= 0 ? 'true' : 'false'