视觉块替换 vim
Visual Block Substitution vim
我想在下一段代码的每行末尾缩进注释:
Point d_test = Point(5,-1); //inCircle > 0
Point e_test = Point(5,-1); //inCircle > 0
Point f_test = Point(5,-1); //inCircle > 0
Point g_test = Point(4,-5); //inCircle = 0
Point h_test = Point(3,-2); //inCircle < 0
Point i_test = Point(5,0); //inCircle < 0
Point j_test = Point(5,0); //inCircle < 0
我正在尝试使用可视块选择,选择带有注释的块。然后我尝试使用这样的替换::'<,'>s/\%V^\s+\%V//g
我已经尝试了几次但没有成功 :( 。我敢打赌有更好的方法来做到这一点。
我要找的最终结果是:
Point d_test = Point(5,-1); //inCircle > 0
Point e_test = Point(5,-1); //inCircle > 0
Point f_test = Point(5,-1); //inCircle > 0
Point g_test = Point(4,-5); //inCircle = 0
Point h_test = Point(3,-2); //inCircle < 0
Point i_test = Point(5,0); //inCircle < 0
Point j_test = Point(5,0); //inCircle < 0
谢谢。
不幸的是,仅使用简单的替换命令无法轻松实现对齐,因为要插入或删除的空格量逐行变化。
我特别喜欢用vim-easy-align来解决这个问题,你可以使用:EasyAlign /\/\// {'ig': []}
缩进注释
编辑:Easy Align 默认忽略注释。因此,要对齐注释,您必须实际更改 ignore_groups
参数。更新了答案以反映这一点。
您也可以使用宏来实现。
假设在普通模式下光标在第一行,那么:
j
qa0f;10a [Esc]32|dwjq
5@a
应格式化所有行。
这个宏的工作方式是:
qa
: 在缓冲区中记录宏 a
0
: 移至行首
f;
:找到;
字符
10a [Esc]
:插入10个空格,进入普通模式
32|
: 将光标移动到第 32 行
dw
: 删除当前单词(多余的空格到下一个单词)
jq
: 移动到下一行并完成宏录制
5@a
: 应用缓冲区a
中记录的宏五次
希望对您有所帮助。
我想在下一段代码的每行末尾缩进注释:
Point d_test = Point(5,-1); //inCircle > 0
Point e_test = Point(5,-1); //inCircle > 0
Point f_test = Point(5,-1); //inCircle > 0
Point g_test = Point(4,-5); //inCircle = 0
Point h_test = Point(3,-2); //inCircle < 0
Point i_test = Point(5,0); //inCircle < 0
Point j_test = Point(5,0); //inCircle < 0
我正在尝试使用可视块选择,选择带有注释的块。然后我尝试使用这样的替换::'<,'>s/\%V^\s+\%V//g
我已经尝试了几次但没有成功 :( 。我敢打赌有更好的方法来做到这一点。
我要找的最终结果是:
Point d_test = Point(5,-1); //inCircle > 0
Point e_test = Point(5,-1); //inCircle > 0
Point f_test = Point(5,-1); //inCircle > 0
Point g_test = Point(4,-5); //inCircle = 0
Point h_test = Point(3,-2); //inCircle < 0
Point i_test = Point(5,0); //inCircle < 0
Point j_test = Point(5,0); //inCircle < 0
谢谢。
不幸的是,仅使用简单的替换命令无法轻松实现对齐,因为要插入或删除的空格量逐行变化。
我特别喜欢用vim-easy-align来解决这个问题,你可以使用:EasyAlign /\/\// {'ig': []}
编辑:Easy Align 默认忽略注释。因此,要对齐注释,您必须实际更改 ignore_groups
参数。更新了答案以反映这一点。
您也可以使用宏来实现。
假设在普通模式下光标在第一行,那么:
j
qa0f;10a [Esc]32|dwjq
5@a
应格式化所有行。
这个宏的工作方式是:
qa
: 在缓冲区中记录宏a
0
: 移至行首f;
:找到;
字符10a [Esc]
:插入10个空格,进入普通模式32|
: 将光标移动到第 32 行dw
: 删除当前单词(多余的空格到下一个单词)jq
: 移动到下一行并完成宏录制5@a
: 应用缓冲区a
中记录的宏五次
希望对您有所帮助。