首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用vim和regex翻译代码注释

使用vim和regex翻译代码注释
EN

Stack Overflow用户
提问于 2020-04-12 18:27:28
回答 2查看 111关注 0票数 1

我得到了一个带有中文代码注释的.py文件。

我的任务是用英语翻译这些评论。

因此,我获得了trans命令行工具来快速翻译文本。(这是谷歌翻译器[https://github.com/soimort/translate-shell]的一个简单的CLI )

找出一个正则表达式,它与我想要翻译的内容完全匹配。

代码语言:javascript
运行
复制
\v([^#]*&[^"']|^)\zs#.+\ze

我可以在vim中使用trans和"!“命令。

(例如,.!trans -b :en翻译我正在接的线路。

有人能想出一个命令来翻译所有的匹配吗?

重要

我只想把匹配本身传递给trans工具。

如果我给工具整条线就像..。

some_variable = True #循迹红外传

。。这个工具不能正确地传递它。

(预先谢谢:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-13 09:51:31

使用@Zorzi解决方案,我想出了另一种方法,也许更容易:

代码语言:javascript
运行
复制
:1s/\v([^#]*&[^"']|^)\zs#.+\ze/\=system('trans -b :en \"'. submatch(0) . '\"')

当然,您可以更改范围以满足您的需要。如果将问题分解成两部分,搜索和替换,就更容易理解发生了什么:

代码语言:javascript
运行
复制
/\v([^#]*&[^"']|^)\zs#.+\ze/

:1s//\=system('trans -b :en \"'. submatch(0) . '\"')

注意:submatch(0)表示正则表达式所匹配的内容。

我测试了另一个没有反斜杠的不那么复杂的版本,它似乎很有效:

代码语言:javascript
运行
复制
:1s//\=system('trans -b :en "'. submatch(0) . '"')

最后,我找到了如何找到汉字,使我们的搜索更容易:

代码语言:javascript
运行
复制
/[^\x00-\xff]\+

参考资料:https://stackoverflow.com/a/61233146/2571881

票数 1
EN

Stack Overflow用户

发布于 2020-04-12 19:01:33

有趣的问题!

以下是我想出的解决方案:

代码语言:javascript
运行
复制
:%g/\v([^#]*&[^"']|^)\zs#.+\ze/exe"norm!\"acgn\<C-r>=system('trans -b :en <<< \"'.@a.'\"')\<CR>"

您可能需要更改system(...)部分,因为我不确定您的trans命令是如何工作的。

解释

  • %g| --这将在regex为found
  • \v([^#]*&[^"']|^)\zs#.+\ze|的每一行上执行给定的命令,即regex!
  • exe"..."|执行给定的vim命令。我们在这里使用它,以便在normal中输入击键(例如,normal模拟击键,就像您自己键入

一样)。

所以现在我们要输入键,就像我们在键盘上键入它们一样,这将在匹配的每一次出现时都被输入。

  • "a|将将下一个操作的结果存储在寄存器中,a
  • cgn|将裁剪下一个模式匹配(或光标下的一个),并输入insert mode
  • <C-r>=|将插入表达式寄存器的内容,在另一个条件下,它将允许您输入一个表达式
    • system('trans -b :en <<< \"'.@a.'\"')|系统,它允许您执行bash命令,然后取决于您在there
    • <CR>|中所放的enter键(回车Return)

)中的内容

当然,您可以在vim文档中找到所有这些:

  • :help :global
  • :help execute
  • :help normal
  • :help i_CTRL-R
  • :help @=
  • :help system()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61176237

复制
相关文章

相似问题

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