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同理!
说明:由于\ 和(结合成了网页斜字体的转义。而不能显示,这里每个 \ 和 ( 中间都加了空格,注意空格不是命令的一部分
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。