在Vim中如何对齐行尾注释?

15

Vim中,是否有一种格式化命令可以对齐一块行尾注释?

例如在C++中,它会将以下代码:

m_varName1;   // Comment 1
m_varName1AndABit;       // Command 1 and a bit
m_varName2;     // Comment 2
m_varName3ButReally2AndABit;   // Comment 3 (but really 2 and a bit)

变成这样:

m_varName1;                   // Comment 1
m_varName1AndABit;            // Command 1 and a bit
m_varName2;                   // Comment 2
m_varName3ButReally2AndABit;  // Comment 3 (but really 2 and a bit)
2个回答

17

使用tabular.vim插件可以实现此操作。 通过可视化选择它们,然后进行对齐。

:Tabularize /\/\/

7
如果你想要更高的精确度,可以进行视觉选择,但实际上并不需要。Tabularize足够智能,可以检测到块。同时,你可能会发现:Tab更易于使用。 - sidyll
1
尝试过 Align 后,我根据个人喜好选择了 Tabularize。两者都解决了这个问题,但我认为 Tabularize 更加清晰明了。 - E.Beach
你如何解释 "///"? - Jiho Noh
1
@JihoNoh /\/\/ 是搜索/匹配 // 注释字符的表达式。Tabularize接受vim搜索,例如您可以使用“/”命令搜索它,并将两个 // 转义为 \/ - Michael Berkowski
有没有关于如何在没有插件的情况下完成这个任务的想法? - undefined

4
使用Vim的Align插件,可以根据你选择的任何分隔符进行对齐。

1
起初我非常支持这个,但是Align有一些副作用 - 其中之一与我现有的按键映射冲突。 - E.Beach
你可以重新映射键位。我根本不使用它们。我只使用:Align <separator> - Nathan Fellman
1
是的,但我在使用Tabularize时没有这个问题,所以它赢了。但这涉及到一个更大的讨论,关于如何设计一个vim插件。 - E.Beach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接