Vim 删除重复行的其余行,保留第一行(keep first occurrence of duplicate lines)

文本如下:

卷之一
1. xxxxxxxxxx
卷之一
xxxxxxxxxx
卷之一
xxxxx
xxxxx
xxxxx
卷之二
2. xxxxx
xxxxx
xxxxx
卷之二
xxxxx
xxxxxxxxxx
卷之二
xxxxxxxxxx
卷之二
xxxxxxxxxx
xxxxxxxxxxxxxxx
卷之二
xxxxxxxxxxxxxxx
xxxxxxxxxx
卷之二
xxxxxxxxxx
xxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
卷之三
3. xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
卷之三
xxxxxxxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
卷之三
xxxxx
xxxxx
xxxxx
xxxxx
卷之三
xxxxx
xxxxx
卷之四
4. xxxxx
xxxxx
xxxxx
卷之四
xxxxx
xxxxx
xxxxx
xxxxx
卷之四
xxxxx
xxxxx
xxxxx
xxxxx
卷之四
xxxxx
卷之四
xxxxx
xxxxx
卷之四
xxxxx
xxxxx
xxxxx
卷之五
5. xxxxxxxxxx
xxxxx
xxxxx
xxxxx
卷之五
xxxxxxxxxx
xxxxx
xxxxx
卷之五
xxxxx
xxxxx
xxxxx
xxxxx

得到如下内容:

卷之一
1. xxxxxxxxxx
xxxxxxxxxx
xxxxx
xxxxx
xxxxx
卷之二
2. xxxxx
xxxxx
xxxxx
xxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
卷之三
3. xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
卷之四
4. xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
卷之五
5. xxxxxxxxxx
xxxxx
xxxxx
xxxxx
xxxxxxxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx

代码如下:

g/卷之/if(temp != getline('.')) | let temp=getline('.') | echo temp | else | :norm dd | endif
命令 解释
g/.../ 转到相应的行
getline('.') 获取鼠标所在行的内容
if(...) ... endif 条件判断
norm 常规模式

你可能感兴趣的:(Vim 删除重复行的其余行,保留第一行(keep first occurrence of duplicate lines))