替换vim中未对齐的列

roejwanj  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(103)

我看过很多像this这样的文章,告诉我们如何在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
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

agyaoht7

agyaoht71#

  • 下面是一个使用替代的卷积解决方案:
:%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'


参见:help :normal

vqlkdk9b

vqlkdk9b2#

您可以使用以下命令:
第一个月
您可以将\{1}更改为所需的列数,请注意,它比实际列数少1。你也可以修改这个正则表达式来擦除多个连续的列。等等等等。
对于transform this:

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

相关问题