vim 查找相同行 删除向同行

vim 查找相同的两行

思路:先将两行排序,然后查找前一行等于后一行的内容

:sort
/^\(.\+\)$\n\1

^(.+)$\n表示一整行的模式,\1表示第一个组

vim删除相同的行

给出vim wiki上的两种解法,链接如下:
Removing_duplicate_lines”>http://vim.wikia.com/wiki/Uniq-_Removing_duplicate_lines

There are two versions (and \v “verymagic” version as a variant of the second): the first leaves only the last line, the second leaves only the first line. (Use \zs for speed reason.)

g/^\(.*\)\n\1$/d g/\%(^\1\n\)\@<=\(.*\)$/d
g/\v%(^\1\n)@<=(.*)$/d

Breakdown of the second version:

g/\%(^\1\n\)\@<=\(.*\)$/d g/ /d <-- Delete the lines matching the regexp \@<= <-- If the bit following matches, make sure the bit preceding this symbol directly precedes the match \(.*\)$    <-- Match the line into subst register 1
  \%(     \)               <-- Group without placing in a subst register.
     ^\1\n                 <-- Match subst register 1 followed the new line between the 2 lines

具体就不解释了,自行看解释(其实主要是我自己也没看太明白,哈哈)

你可能感兴趣的:(vim删除相同行)