type
status
date
slug
summary
tags
category
icon
password
标签
Vim操作文本文件时,经常要查找相同的行或者删除重复行操作,此处记录下操作指令。
排序
先将文本行进行排序
:sort u
查找相同的行
查找相邻两行相同的字符串
:/^\\(.\\+\\)$\\n\\1 or :/^\\(.*\\)$\\n\\1
删除重复行
用替换的方式,先用一行替换相同的两行,再把空白的行删除,此操作比较麻烦
:%s/^\\(.*\\)$\\n\\1/\\1\\r/g :g/^$/d
用删除方式
:g/^\\(.*\\)\\n\\1$/d or :g/\\%(^\\1\\n\\)\\@<=\\(.*\\)$/d or :g/\\v%(^\\1\\n)@<=(.*)$/d
第二种命令解释
: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 删除(包含/不包含)指定字符串的行及统计匹配个数
:g/pattern/d
是找到含有pattern的行, 删之
:v/pattern/d
是找到不含有pattern的行, 删之
使用起来非常方便。
:%s/xxx//gn
统计xxx个数,n表示只报告匹配的个数而不进行实际的替换,详见「:help :v」或「:help :g」
:g/^$/d
删除空格行
:%s/^\s*//g
删除行首空格(注意这是一个替换命令,指将行首的空格替换为无)
:%s/\s*$//g
删除行尾空格(注意这是一个替换命令,指将行尾的空格替换为无)
:%s/ /\r/g
将空格换为回车
:%s/\n/ /g
将回车替换为空格
删除每行前10个字符: :%s/^.\{10\}// 删除每行后10个字符 :%s/.\{10\}$//