在vim中支持特定类型的注释

abo*_*nec 1 vim

在ruby methaprogramming中,我们在多行字符串中有特殊类型的注释,这些注释将被评估.它们看起来像这样:https://github.com/rails/rails/blob/8775ffa37231d381cba34f0ecacb8a7bbcf0573f/activesupport/lib/active_support/memoizable.rb#L77

这个字符串在两部分上逐行划分:带有插值的字符串,将在左侧进行评估,代码示例在右侧.手动输入此评论是一项艰苦的工作.它需要许多手动缩进.

在vim中是否有一些插件或工具可以帮助编写这种类型的注释?

seh*_*ehe 5

首先,在vim中了解使这样的东西更容易生活的功能:

这有两种方法:

假设垂直分割总是在固定列中(如本示例中的84):

/\%84v#\zs
Run Code Online (Sandbox Code Playgroud)

将找到垂直分隔栏.现在你可以对它进行操作,例如

快速和肮脏:成对折叠评论

这导致注释行在"模板"行后面折叠:

:g//s//\r         /
Run Code Online (Sandbox Code Playgroud)

注意:已选择(9)空格以匹配OP样本的起始缩进级别.
IRL,您可以使用indent('.')以编程方式计算出多少空格

普雷斯托:

在此输入图像描述

重组:

:g//join!
Run Code Online (Sandbox Code Playgroud)

可能与"吃"多余的缩进(9个空格)相结合

:g//j!|norm! n9x
Run Code Online (Sandbox Code Playgroud)

备择方案:

我通常会选择将块拆分为物理文件.重新组合它们会花费更多精力,但编辑更舒适,你可以利用vim的diffmode.

快速入门:

ggn<C-v>ND
:tabnew  | 0put
:tabprev
gvVxgvVd
:tabnext | vert new | 0put
Run Code Online (Sandbox Code Playgroud)

将窗口放在diffmode中:

:windo diffthis
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用实时差异突出显示独立编辑两个窗口.

在此输入图像描述

如果您想对此策略有更多意见,请与我们联系.我可以尝试从拆分临时窗口配置重新组合.