如何在Vim中重写列中的文本?
我有以下形式的面向列的文本:如何在Vim中重写列中的文本?,vim,Vim,我有以下形式的面向列的文本: TR # DATE DESCRIPTION PROGRAMMER ----- ----------- --------------------------- ----------- 12345 01-APR-2014 This is an April Fool's Joe Sewell joke. Not! 现在,我想加宽DESCRIPTION列,并将该列仅重新加宽到
TR # DATE DESCRIPTION PROGRAMMER
----- ----------- --------------------------- -----------
12345 01-APR-2014 This is an April Fool's Joe Sewell
joke. Not!
现在,我想加宽DESCRIPTION
列,并将该列仅重新加宽到新的宽度。比如说,为了这个问题,我会自己添加空格,这样看起来更像这样:
TR # DATE DESCRIPTION PROGRAMMER
----- ----------- --------------------------------- -----------
12345 01-APR-2014 This is an April Fool's Joe Sewell
joke. Not!
现在是我需要帮助的时候了。我想在DESCRIPTION
列上执行可视块选择(gvim中的CTRL-V或CTRL-Q),并执行ex命令或映射以将文本重绘到选定的宽度,从而生成:
TR # DATE DESCRIPTION PROGRAMMER
----- ----------- --------------------------------- -----------
12345 01-APR-2014 This is an April Fool's joke. Joe Sewell
Not!
如有必要,我可以处理后面有尾随空格的行。我希望受影响的选定行上的其余文本无。(那些熟悉OpenVMS下EVE的人,这相当于阻止选择一块文本,并使用EDT键盘键入GOLD-8。)我不想更改缩进。您是否考虑过将描述列移动到另一个缓冲区,为该缓冲区设置所需的文本宽度(:set
textwidth=yournumber
),使用gq
格式化,然后移回原始位置?My提供了一个gq
命令,您可以使用该命令实现以下目的:
我考虑过这一点,不过我必须根据选择的宽度导出textwidth(因为它并不总是一致的)。我希望有一个简单一点的东西,但我可能能够实现自动化。我还希望有一种方法可以做到这一点,而不会有一个新的缓冲区出现和消失在屏幕上。