【发布时间】:2019-01-24 09:12:13
【问题描述】:
输入
if(statement)
{
输出
if ( statement ) {
我可以使用
找到输入/if(\S\(.*\))
解释:
if( 是要搜索的关键字, \S 否定空格, (.*) 表示中间的任何内容, ) 结束括号。
需要:
尝试将编码指南自动化,而不是编写没有编码指南的代码,而且我是一个懒惰的编码器,想要运行 autocmd 以获取编码指南。
编辑:
:%s/if(\S\(.*\)\S)/if ( \1 )/gc
非常接近,但它删除了 'if(' 之后的第一个字符和 ')' 之前的最后一个字符
【问题讨论】:
-
“类似这样的东西”太含糊了。你到底想做什么?
-
天哪,从哪里开始。 vim 有自动编码格式,看看
:h =是缩进的。根据您的编码语言,有一些文件类型插件通过设置formatexpr为您进行格式化。然后是可以使用的外部 linter(看看 ale github.com/w0rp/ale)。我强烈建议使用 vim 提供的工具,而不是构建这样的正则表达式。 -
@DoktorOSwaldo
=用于缩进,而不是一般格式(除非您使用重新定义它的自定义插件)。 -
所以,将捕获括号放在它们应该在的位置,
if(\(\S.*\S\))。或if(\(\S\(.*\S\)\?\))允许在if条件内使用单个字符变量。 -
@melpomene IDK 知道使用什么术语。对不起?你能推荐一下吗?