更换vim中未对齐的柱
我看到过很多类似的帖子,它们告诉我如何在vim中替换文本列 当列以固定宽度排列时,这很简单 当列未对齐时,使用vim替换给定列中的文本如何 例如 我有一个包含多列的文件:更换vim中未对齐的柱,vim,replace,field,Vim,Replace,Field,我看到过很多类似的帖子,它们告诉我如何在vim中替换文本列 当列以固定宽度排列时,这很简单 当列未对齐时,使用vim替换给定列中的文本如何 例如 我有一个包含多列的文件: col1 -col2 0.col3 +col4 col5. col1 0.col2 +col3 col4.0 -col5 col1.0 0.col2 +col3 -col4 col5 col1 col2.0 +col3 0.col4 -col5 -col1 col2.0 +col3 0.col4 col5 c
col1 -col2 0.col3 +col4 col5.
col1 0.col2 +col3 col4.0 -col5
col1.0 0.col2 +col3 -col4 col5
col1 col2.0 +col3 0.col4 -col5
-col1 col2.0 +col3 0.col4 col5
col1 -col2 +col3 0.col4 col5.0
我希望它看起来像
col1 0.col3 +col4 col5.
col1 +col3 col4.0 -col5
col1.0 +col3 -col4 col5
col1 +col3 0.col4 -col5
-col1 +col3 0.col4 col5
col1 +col3 0.col4 col5.0
- 下面是一个使用替换的复杂解决方案:
请参见:%s/^\S*\s*\zs\(\S*\)/\=repeat(" ", len(submatch(1)))/g
,:help:s
,:help submatch()
:help repeat()
- 这里有一个更简单的宏:
:%normal WvEr <-- there's a space after the 'r'
:%normal-WvEr
- 下面是一个使用替换的复杂解决方案:
请参见:%s/^\S*\s*\zs\(\S*\)/\=repeat(" ", len(submatch(1)))/g
,:help:s
,:help submatch()
:help repeat()
- 这里有一个更简单的宏:
:%normal WvEr <-- there's a space after the 'r'
:%normal-w如果之后没有任何内容,则不必在模式末尾添加
!\ze
cmd不正确,应该是normal
@脑膜-メネンックス, 已修复。如果之后没有任何内容,则不必在模式末尾添加:%normal WvEr
!\ze
cmd不正确,应该是normal
@脑膜-メネンックス, 固定的。:%normal WvEr
- 下面是一个使用替换的复杂解决方案: