在 Vim 中对齐行尾注释?

Posted

技术标签:

【中文标题】在 Vim 中对齐行尾注释?【英文标题】:Align End Of Line Comments in Vim? 【发布时间】:2011-11-07 02:19:35 【问题描述】:

在 Vim 内部,是否有一个格式化命令可以对齐行尾 cmets 块?

例如在 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)

【问题讨论】:

【参考方案1】:

使用 Vim 的 Align 插件根据您选择的任何分隔符进行对齐。

【讨论】:

起初我完全赞成,但 Align 有一些副作用 - 其中一个与我现有的键映射冲突。 您可以重新映射键映射。我根本不使用它们。我只是使用:Align <separator> 是的,但我没有使用 Tabularize '开箱即用'的问题,所以它赢了。但这涉及到关于如何设计 vim 插件的问题之外的更大讨论。【参考方案2】:

tabular.vim 插件应该可以做到这一点。直观地选择它们,并将它们与

对齐
:Tabularize /\/\/

【讨论】:

其实你不需要视觉选择,除非你想要更精确。 Tabularize 足够聪明,可以检测到一个块。此外,您可能会发现:Tab 更易于使用。 在尝试了 Align 之后,我根据个人喜好选择了 Tabularize。两者都解决了这个问题,但 Tabularize 对我来说似乎是一个更清洁的解决方案。 你如何解释“/\/\/”? @JihoNoh /\/\/ 是评论字符// 的搜索/匹配表达式。 Tabularize 接受 vim 搜索,例如您可以使用 / 命令搜索它并将两个 // 转义为 \/【参考方案3】:

我今天遇到了类似的问题,我想在某个位置的空白处对齐。刚刚写了一封blog post,讲述了我是如何使用Align 插件做到的。

【讨论】:

以上是关于在 Vim 中对齐行尾注释?的主要内容,如果未能解决你的问题,请参考以下文章

vi/vim 中如何在每行行首或行尾插入指定字符串

如何在Latex中插入伪代码

vim快速注释技巧

在vim中的空格后轻松对齐字符

idea 中文标点不对齐,怎么设置

R语言ggplot2可视化使用vjust和hjust参数对齐图像中的文本注释信息(左对齐右对齐居中)实战