在ruby methaprogramming中,我们在多行字符串中有特殊类型的注释,这些注释将被评估.它们看起来像这样:https://github.com/rails/rails/blob/8775ffa37231d381cba34f0ecacb8a7bbcf0573f/activesupport/lib/active_support/memoizable.rb#L77
这个字符串在两部分上逐行划分:带有插值的字符串,将在左侧进行评估,代码示例在右侧.手动输入此评论是一项艰苦的工作.它需要许多手动缩进.
在vim中是否有一些插件或工具可以帮助编写这种类型的注释?
首先,在vim中了解使这样的东西更容易生活的功能:
可视块模式
虚拟的 ; 您可以将光标移动到没有任何文本的位置.这被称为"虚拟空间".用户指南中有大量关于编辑ascii表的示例(在某些方面类似于您的情况):
这有两种方法:
假设垂直分割总是在固定列中(如本示例中的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)
现在,您可以使用实时差异突出显示独立编辑两个窗口.
如果您想对此策略有更多意见,请与我们联系.我可以尝试从拆分临时窗口配置重新组合.