vim一行内交换单词的次序以及文本数据的列交换

需求描述

1.假设将英文中所有中文名字为“Fan JianQiang”改成“QiangJian Fan”技术分享

2.将所有“change world,change mind!”替换成“change mind, change world!”技术分享

3.将下面示例数据的age列和ID列对换

name age ID  slary
a 20  1   10
b 19  2   10
c 21  3   10
d 21  5   10
e 22  4   10
f 23  6   10
g 23  7   10
h 17  8   10
j 24  10  10
k 26  9   10

命令实现

针对1、2需求最直接的方法就是整体文本替换;针对需求3,可以使用块选择,然后剪切,粘贴!不过不是本博文要阐述的内容。下面介绍另外一种实现方式:

需求1命令

:%s/\ (Fan\ ) \ (Jian\ )\ (Qiang\ )/\3\2 \1/

需求2命令

:%s/\ (world\ ), change \ (mind\ )/\2, change \1/

需求3命令

:%s/\ ([1-9][0-9]\ )  \ ([1-9].\ )/\2  \1/


这就是\ (\ )的使用方式

包含在其中的pattern将会存储起来,从左到右依次编号,一行当中最多存储9个。访问它们通过编号访问!比如上面的需求2,world存到编号1,mind存到编号2;因此\2, change \1就把world和mind调换为mind, change world,然后替换!需求1和需求3同理!

说明:由于\ 和(结合成了网页斜字体的转义。而不能显示,这里每个 \ 和 ( 中间都加了空格,注意空格不是命令的一部分

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。