首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VIM中收集具有相同名称模式的变量

在VIM中收集具有相同名称模式的变量
EN

Stack Overflow用户
提问于 2016-07-06 00:11:46
回答 1查看 71关注 0票数 0

从以下方面

代码语言:javascript
复制
# industrials
# * airlines: AAL
aal_score = run("AAL")

# information technology
# * MSFT
# * AAPL
msft_score = run("MSFT")
aapl_score = run("AAPL")

# materials
# * Agnico Eagle Mines AEM
aem_score = run("AEM")

# telecommunication services
# * ATT
att_score = run("ATT")

# utilities
# * AEP
aep_score = run("AEP")

我想收集变量名并打印它们的值,如

代码语言:javascript
复制
print "AAL score {%2.2f}".format(aal_score)
print "MSFT score {%2.2f}".format(msft_score)
print "AAPL score {%2.2f}".format(aapl_score)
...

如何在Vim中有效地做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-06 00:32:32

下面是一个流水线命令,它执行您想要的操作,您将在一个名为Output的文件中找到结果

代码语言:javascript
复制
:g/^\s*\(\w*_score\)\s*=\s*run("\(\w*\)").*$/ s//&\rprint "\2 score {2.2f}".format(\1)/ | :. w! >> Output | normal! dd
  • 解释:

上面的命令实际上分为三个命令:

  1. :g/^\s*\(\w*_score\)\s*=\s*run("\(\w*\)").*$/ s//&\rprint "\2 score {2.2f}".format(\1)/

第一件事是全局搜索,它使用模式^\s*\(\w*_score\)\s*=\s*run("\(\w*\)").*$ (即这些行)搜索行。

aal_score = run("AAL") msft_score = run("MSFT") aapl_score = run("AAPL") aem_score = run("AEM") att_score = run("ATT") aep_score = run("AEP")

在每一行中,我们将所需的文本包围到\(...\) (反向引用和分组)中,然后使用替换:

代码语言:javascript
复制
s//&\rprint "\2 score {2.2f}".format(\1)/

生成每次(例如:)

aep_score = run("AEP") 打印"AEP评分{2.2f}".format(aep_score)

  1. :. w! >> Output

对于第二个命令,我们将在文件输出的末尾写入打印行。

  1. normal! dd:.d

从当前文件中删除打印行

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

https://stackoverflow.com/questions/38214710

复制
相关文章

相似问题

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