如何在vim中用引号(或类似引号)包围可视块

如何在vim中用引号(或类似引号)包围可视块,vim,Vim,给定Vim中的可视块选择,如何在其周围加引号 我经常发现自己的目标是获取字段列表,例如 name address telephone 在我的代码中将其转换为类似的内容 declare name = 'name'; declare address = 'address'; declare telephone = 'telephone'; 通过一系列的视觉块选择和更改,我可以轻松进入下一阶段 declare name = 'name declare address =

给定Vim中的可视块选择,如何在其周围加引号

我经常发现自己的目标是获取字段列表,例如

name
address
telephone
在我的代码中将其转换为类似的内容

declare name      = 'name';
declare address   = 'address';
declare telephone = 'telephone';
通过一系列的视觉块选择和更改,我可以轻松进入下一阶段

declare name      = 'name
declare address   = 'address
declare telephone = 'telephone
但是,如何以有效的方式插入尾随引号和分号的最后一部分呢?不得不在这里做一个前模式的替代品感觉有点不对劲


编辑:我记得Damian Conway在这里演示了这个-。很难说,他是在利用dragvisuals.vim插件中的某些功能,还是在附加最后的引号时利用了vim的固有功能?

您可以在正则表达式中匹配视觉选择,如:
视觉块
您可以在可视块模式下使用
$
A
。您可能可以使用
gv
重新启动可视块模式

gv$A';<esc>
如果你愿意,你可以做一个可视范围。如果要在行首保留缩进,请执行以下操作:
:%s/^\s*\zs.*/declare&='&'/

侧栏:对齐 你可以使用一个插件来进行对齐

:Tabularize /\zs=
其他对齐插件有:和

结论 我更喜欢“更好的替代”方法,然后是
:制表

有关更多信息,请参阅:

:h visual-block
:h blockwise-operators
:h v_b_A
:h v_b_A_example
:h gv
:h /\zs
:h :s/\&

为什么不使用regexp
:1,3s/\(.*\)/declare\1='\1'
:h visual-block
:h blockwise-operators
:h v_b_A
:h v_b_A_example
:h gv
:h /\zs
:h :s/\&