首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将`==`转换为vim中的换行符

如何将`==`转换为vim中的换行符
EN

Stack Overflow用户
提问于 2021-08-30 18:52:46
回答 2查看 178关注 0票数 1

我想在vim脚本中的if语句的测试用例中匹配换行符。

如何与换行符匹配?

这样做的原因是,当我想获得一个系统命令的输出并检查它是否与某个命令匹配,然后执行一个命令时,vim中的system()命令可以完成这项工作,但是它在最后返回一个换行符。所以我无法匹配。

例如,我希望您了解git rev-parse --is-inside-work-tree,如果我们在git存储库中,它会打印带有换行符的true,如果不在git存储库中,则打印带有换行符的false

我想在vim脚本中使用这个命令,并且只在git存储库中运行命令。

但是,由于这个命令返回truefalse,并在末尾有一个换行符,所以我无法使用下面的代码片段来执行此操作。因为system("git rev-parse --is-inside-work-tree")返回truefalse,在末尾有一个换行符。

代码语言:javascript
复制
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'来匹配最后的换行符呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-31 04:49:41

您可以使用"true\n"检查换行符。请注意,双引号用于特殊字符。请参阅:h string

代码语言:javascript
复制
echo system('git rev-parse --is-inside-work-tree') == "true\n"
" 1
票数 1
EN

Stack Overflow用户

发布于 2021-08-30 21:45:36

可以使用替换删除换行符:

代码语言:javascript
复制
system("git rev-parse --is-inside-work-tree")->substitute('\n','','') == 'true'

或与正则表达式进行比较:

代码语言:javascript
复制
system("git rev-parse --is-inside-work-tree") =~ 'true'

或者从外部命令中获取一个列表,其中包含一个项,因为输出中只有一个实际行:

代码语言:javascript
复制
systemlist("git rev-parse --is-inside-work-tree")[0] == 'true'

参见:help substitute()help expr-=~:help systemlist()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68989054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档