一、删除空行
:g/^$/d
删除空行以及只有空格的行
:g/^\s*$/d
删除以 # 开头或 空格# 或 tab#开头的行
:g/^\s*#/d
对于 php.ini 配置文件,注释为 ; 开头
:g/^\s*;/d
删除从第二行到包含 bbs 的区间行
:2,/bbs/d
删除从包含 bbs 的行到最后一行区间的行
:/bbs/,$d
删除匹配 bbs 且前面只有一个字符的行
:g/.bbs/d
(phpstorm 批量删除空行 是^\n 替换为空)
二、gvim 换行符替换
用 VIM 编辑文本文件,想在每一行的换行之前,添加一个字符,比如 “;”。
想到替换命令:
:%s/\n/;\n/g
结果总是出错。
后来找到解决方案:
:%s/\n/;\r/g
有人总结的结论:
When searching: \n is newline, \r is CR (carriage return = Ctrl-M = ^M)
When replacing: \r is newline, \n is a null byte (0×00).
意思是:
字符串查找时,”\n” 是换行,”\r” 是回车,也就是经常会看到的 ^M(备注-1)。
字符串替换时,”\r” 是换行,’\n” 是空字符(0×00)。
三、gvim 删除每一行?后面的所有字符,包括?
在 Vim (或者相应的图形界面版本 gVim)中,你可以使用搜索和替换命令去删除每一行中的问号 `?` 及其后面的所有字符。Vim 中处理正则表达式时,某些字符拥有特殊含义,比如 `?` 在 Vim 正则表达式中通常表示前面的部分是可选的。
要修正这个错误并在 Vim 中执行这项操作,你需要正确地转义 `?` 符号,以便它被当作一个普通字符进行匹配。这里有几种方法可以处理这个问题,下面是常见的方法之一:
:%s/\?.*//g
在上面的命令中:
- `:%s` 是 Vim 中的替换命令,`%` 代表整个文件。
- `\?` 表示匹配字面上的 `?` 字符(反斜杠 `\` 用于转义 `?`)。
- `.*` 表示匹配问号 `?` 后的任何字符(`.` 表示任何单个字符,`*` 表示零个或多个前面的元素)。
- `//` 表示将匹配到的内容替换为空,也就是删除它。
- `g` 标志表示全局替换,作用于每一行中的所有匹配项。
在 gVim 中执行这个命令,你可以在命令模式中输入冒号 `:` 来开始命令,然后输入剩余的部分,并按 `Enter` 运行。
如果发现 `?` 没有被正确识别,那么可能是因为你启用了 "very magic" 模式,此时需要进一步转义。在非常罕见的情况下,如果遇到意料之外的行为,可以考虑使用以下命令:
:%s/\v\zs\?.*//g
在这个命令中,`\v` 表示 "very magic",使得正则表达式中只有字母、数字和下划线需要转义,其他特殊符号都按特殊含义处理。`\zs` 设置匹配开始的位置为紧跟其后的模式,这使得替换从 `?` 开始而非之前。这种情况下,`\?` 应无需转义。 这条命令在大多数情况下是不必要的,常规转义通常足以处理上述需求。
确保已经进入 gVim 的命令模式(通常是按下了 Esc 键),然后输入对应的命令并按 `Enter`。如果你依然遇到错误,请再次检查你的 Vim/gVim 配置和相关的语法。
四、清除所有 ^M 的替换命令
:%s/CTRL+V CTRL+M//g
就是 Control 键+V,然后再 Control 键 + M,就变成了 ^M,然后替换为空就可以了。
清除所有空格的命令
:%s/^\s*\n//g
:%s/CTRL+V CTRL+M//g:%s/CTRL+V CTRL+M//g:%s/CTRL+V CTRL+M//g
:%s/CTRL+V CTRL+M//g
五、删除重复行
1):sort u 最简单的命令,使用该命令会对所有行进行排序,并只保留完全相同的行的第一行;它适用于无序重复行的情况,但要求重复行完全相同。
2)输入命令 :g/^\(.*\)$\n\1$/d ,该命令会删除连续重复的行,只保留最后一行。其中:
g 表示全局命令(global),即对匹配到的所有行进行操作。
^ 表示行的开头。
\(.*\) 表示匹配任意字符零次或多次,并将其捕获到分组 \1 中。
\n 表示换行符。
\1 表示引用前面捕获到的分组 \1,即匹配与前面相同的内容。