Search Vim,在文档标题中搜索
我需要一个宏/函数来搜索当前文档,从顶部开始搜索特定模式。在未注释掉的第一行停止 例如,在此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 这使用了一个负的前瞻(\@!)来确认行的开
"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'