我想在vim脚本中的if语句的测试用例中匹配换行符。
如何与换行符匹配?
这样做的原因是,当我想获得一个系统命令的输出并检查它是否与某个命令匹配,然后执行一个命令时,vim中的system()命令可以完成这项工作,但是它在最后返回一个换行符。所以我无法匹配。
例如,我希望您了解git rev-parse --is-inside-work-tree,如果我们在git存储库中,它会打印带有换行符的true,如果不在git存储库中,则打印带有换行符的false。
我想在vim脚本中使用这个命令,并且只在git存储库中运行命令。
但是,由于这个命令返回true或false,并在末尾有一个换行符,所以我无法使用下面的代码片段来执行此操作。因为system("git rev-parse --is-inside-work-tree")返回true或false,在末尾有一个换行符。
if system("git rev-parse --is-inside-work-tree") == 'true'
echo "Inside a git repository"
else
echo "Not inside a git repository"
endif我可以用什么代替if system("git rev-parse --is-inside-work-tree") == 'true'来匹配最后的换行符呢?
发布于 2021-08-31 04:49:41
您可以使用"true\n"检查换行符。请注意,双引号用于特殊字符。请参阅:h string
echo system('git rev-parse --is-inside-work-tree') == "true\n"
" 1发布于 2021-08-30 21:45:36
可以使用替换删除换行符:
system("git rev-parse --is-inside-work-tree")->substitute('\n','','') == 'true'或与正则表达式进行比较:
system("git rev-parse --is-inside-work-tree") =~ 'true'或者从外部命令中获取一个列表,其中包含一个项,因为输出中只有一个实际行:
systemlist("git rev-parse --is-inside-work-tree")[0] == 'true'参见:help substitute()、help expr-=~和:help systemlist()。
https://stackoverflow.com/questions/68989054
复制相似问题