我正在尝试学习 vimscript。我在“艰难地学习 vimscript”中读了很多,但没有找到我问题的答案:
如何判断在 vimscript 中搜索是否成功?我有两种情况:
:if there's a ( on the current line
do foo
:endif
:if /searchtarget succeeds
do bar
:endif
最佳答案
根据上下文,有多种方法。
:if there's a ( on the current line do foo :endif
您可以使用
search()
,根据@Kent 的回答。支持{stopline}
参数,以避免它超出当前行(您可以通过 line('.')
传递)。但它只搜索一个方向(向前或向后),因此您必须定位光标。所以它听起来像
if getline('.') =~ '('
是一个更好的测试。它对当前行与 (
进行正则表达式比较.您也可以使用 match()
相反(通过 :help
查找任何函数以获取完整的 API 文档和示例 BTW),或非正则表达式 stridx()
(这可能更快,但阅读起来也不太清楚)。:if /searchtarget succeeds do bar :endif
同样,这听起来像是
search()
的用法。 ,它将光标重新定位在匹配上,例如 /search
.但是您也可以使用后者(使用 :normal
),并通过比较命令前后的光标位置(通过 getpos('.')
获得)来检查跳转。
关于vim - 如何判断在 vimscript 中搜索是否成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27660221/