我在文件中有一些文字,我想按摩到固定宽度的格式。
我知道Vim对于here所讨论的搜索模式有一个很酷的\%c
。任何人都知道在替代品的替换字符串中是否有相同类型的东西?所以我可以做某种事情:
:%s/ (.*/\%50c\0/
这样可以很好地接受第一个之后的所有内容(并将其移至第50列?
我想我需要假设我将所有内容都移到了右侧(并用空格填充。
是的,我知道有来自Chip博士的插件可以调整。这基本上做了我希望做的事情。我希望有一个:s
选项。或者甚至可能是宏?
...谢谢
答案 0 :(得分:2)
您可以使用\=
和repeat
功能填充替换内容。
:s/(.*/\=repeat(' ', 50 - col('.') + 1).submatch(0)/
如需更多帮助,请参阅:
:h :s\=
:h repeat(
:h col(
答案 1 :(得分:2)
我想到的一个解决方案是滥用:normal
命令和|
(这是<bar>
而不是资本i
)动议。例如......
:%norm! f(50i <C-v><C-[>d49|
或者,如你所说,用宏:
qq/(<cr>50i <esc>d49|<cr>q999@q
或:%s
和\ze
:%s#\ze(#\=repeat(' ',50-col('.'))
为了增加击键次数; - )