regex - 从所选行中删除 vim 中的第一个 N 个字符

标签 regex 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) {}
 * };
 */

我有这样的格式代码,想在 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/

相关文章:

vim - 在 Vim 中使用 latex-suite 映射 <C-j> 的问题

javascript - 函数中的正则表达式完全匹配

Python正则表达式提取

javascript - 是否有 Vim 正则表达式开始和结束单词原子 "\<"和 "\>"的 JavaScript 等价物?

vim - 如何自动更改 Vim 中的当前路径?

mysql - 我可以从 Vim 视觉选择执行 MySQL 查询并在新缓冲区中输出

regex - matchesInString 函数在 Swift 中返回一个空数组

php - 如何检查一个字符串是否至少包含 5 个唯一字符且长度至少为 7 个字符?

javascript - 正则表达式 : Allow letters, 数字和空格(至少一个字母不是数字)

vim - 使用 <tab> 和 <s-tab> 在 Vim 窗口之间移动