Vim - 插入一列文本/在多行中插入重复字符

3

我有一个数据集,想在第一列之间插入一个新的数据列。

     M1    M2   M3   M4
G1    1     2    3    4
G2    4     3    2    1
...
G120  1     3    4    2

我想在vim中使用另一列数据修改数据集。
     M1    M2   M3   M4
G1    1     1    2    3    4
G2    1     4    3    2    1
...
G120  1     1    3    4    2

3
我无法理解要求。我无法理解要求。 - Kent
我需要在所有行的第二列(即列名M1之前)插入一个相同字符的一列(比如说1)。 - Ramendra Sarma
2个回答

2

Vim的块状可视模式ctrl-v可能是实现此目的的最佳方法。

特别是,您应该使用“可视块插入”(Vim帮助::help v_b_I

在您的示例中,在正常模式下将光标放置在|1|处:

     M1    M2   M3   M4
G1   |1|    2    3    4
G2    4     3    2    1
...
G120  1     3    4    2

请按照以下步骤操作:
  • ctrl-v - 启动可视块选择模式
  • 3j - 向下扩展选择 3 行(可以在此处替换任何其他移动命令)
  • I - 开始块插入模式
  • 1<space><space><space><space><space> - 您想要插入到每行的文本
  • Escctrl-[(它的同义词) - 完成可视块插入
可视块插入还可以用于缩进/取消缩进多个行,向每行添加文本(即使它们没有以相同的列结尾),等等。

2
我假设您使用 \t 对齐文本。那么正则表达式可以用来实现。
:%s/^\(G\d\+\)/\1\t1/

这个能否适用于其他空格字符?你可以将空格定义为\2,并在制表符的位置插入它。 - SimonG
@SimonG 当然可以,但是很难预测在M1中1后的对齐方式。另一种方法是将所有对齐空格改为\t。 - Jason Hu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接