考虑到Vim中的视觉块选择,如何在它周围引用?
我经常发现自己的目标是获取字段列表 - 例如
name
address
telephone
在我的代码
中将其转换为类似的内容declare name = 'name';
declare address = 'address';
declare telephone = 'telephone';
我很乐意通过一系列视觉区块选择和更改来进入下一阶段。
declare name = 'name
declare address = 'address
declare telephone = 'telephone
但是如何以最有效的方式插入尾部引号和分号?不得不在这里做一个前模式替补,感觉不对。
编辑:我记得Damian Conway在这里展示了这一点 - "More Instantly Better Vim" - 37:00。很难说,但是当他追加最后一个引号时,他是否正在利用dragvisuals.vim插件中的某些内容或vim本地的内容?
答案 0 :(得分:2)
您可以将$
和A
用于可视屏蔽模式。您可以使用gv
重新启动Visual块模式。
gv$A';<esc>
以视觉方式选择行,然后执行:s/$/';
忘记做视觉块事务和其他事情。只需从列表开始,然后执行以下替换:
:%s/.*/declare & = '&';/
如果你愿意,你可以做一个视觉范围。如果你想在行的开头保持缩进,请执行::%s/^\s*\zs.*/declare & = '&'/
您可以使用插件Tabular进行对齐。
:Tabularize /\zs=
其他对齐插件有:Align和vim-easy-align。
我更喜欢&#34;更好的替代&#34;方法,然后是:Tabularize
。
有关详细信息,请参阅:
:h visual-block
:h blockwise-operators
:h v_b_A
:h v_b_A_example
:h gv
:h /\zs
:h :s/\&
答案 1 :(得分:0)
您可以在正则表达式中匹配视觉选择,如下所示:'<,'>s/\%V.*\%V/'&'
。有关说明,请参阅regexp帮助。
对于您的具体示例,我会录制一个宏来转换第一行:
qq^yeIdeclare ^[pa = '^[A';^[jq
然后重复其余部分:
2@q
让我们来看看:^yeIdeclare ^[pa = '^[A';^[j
^
将我们带到了行的开头ye
复制Ideclare ^]
在前面插入一个词组p
粘贴复制的字词a = '^]
插入等号并打开引号A';^]
附加结束语和分号j
转到下一行当然,我只是通过点击qq
并执行这些操作来记录宏。