/**
* Definition for an interval.
* struct Interval {
* int start;
* int end;
* Interval() : start(0), end(0) {}
* Interval(int s, int e) : start(s), end(e) {}
* };
*/
我有这样的格式代码,想在 vim 中取消对结构的注释,如下所示:
/**
* Definition for an interval.
*/
struct Interval {
int start;
int end;
Interval() : start(0), end(0) {}
Interval(int s, int e) : start(s), end(e) {}
};
现在我只是用这个 :%s/\s*\s//gc 来删除 ' * ',但它也会影响行 ' * Definition for an interval.',不确定 vim 是否有办法选择我要替换的行。或者如果有另一种更好的方法来移动 * 以供评论。
最佳答案
有恰好 47.337 种方法可以做你想做的事。这是一个……
移动 — :m
— 匹配 */
的第一行 — /\*\/
— 匹配 的第一行之上结构
— ?struct?
—:
:/\*\//m?struct?-
结果:
/**
* Definition for an interval.
*/
* struct Interval {
* int start;
* int end;
* Interval() : start(0), end(0) {}
* Interval(int s, int e) : start(s), end(e) {}
* };
剪切前三个字符 - :normal 3x
- 在当前行正下方的行 - +
- 和第一行匹配 之间的每一行} ;
— /};/
—:
:+,/};/norm 3x
结果:
/**
* Definition for an interval.
*/
struct Interval {
int start;
int end;
Interval() : start(0), end(0) {}
Interval(int s, int e) : start(s), end(e) {}
};
关于regex - 从所选行中删除 vim 中的第一个 N 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34775799/