谁难帮我解释一下下面这几个vim的操作
下面的关于vim删除的内容摘自网络:
:%s= *$== 删除行尾空白
:g/^s*$/d 删除所有空行
:g/str1/,/str2/d 删除所有第一个含str1到第一个含str2之间的行
:v/./.,/./-1join 压缩空行
:g/^$/,/./-j 压缩空行
第一行,看了下vim的帮助,=是显示最后一行行号的意思,s后面也没有"/",最后双出现个==,没看明白。
第二行删除所有空行的那个是我搜索的原因,证实可行,可是我不懂了,查了一下:[范围]g/{pattern}/[cmd],表示在[范围]内符合{pattern}的行执行[cmd](默认:print)。问题就出在这个{pattern}上,我觉得应该是符合正则表达式的,可是^s*$是表示空行么?我试了下直接改成^$也能成功。只是不明白原式是什么意思。
第三行还凑合明白点儿,四五行就不明白了,好像涉及到joinspace,我也没看明白,望高手帮我解释一下。
:%s= *$== 删除行尾空白
:g/^s*$/d 删除所有空行
:g/str1/,/str2/d 删除所有第一个含str1到第一个含str2之间的行
:v/./.,/./-1join 压缩空行
:g/^$/,/./-j 压缩空行
第一行,看了下vim的帮助,=是显示最后一行行号的意思,s后面也没有"/",最后双出现个==,没看明白。
第二行删除所有空行的那个是我搜索的原因,证实可行,可是我不懂了,查了一下:[范围]g/{pattern}/[cmd],表示在[范围]内符合{pattern}的行执行[cmd](默认:print)。问题就出在这个{pattern}上,我觉得应该是符合正则表达式的,可是^s*$是表示空行么?我试了下直接改成^$也能成功。只是不明白原式是什么意思。
第三行还凑合明白点儿,四五行就不明白了,好像涉及到joinspace,我也没看明白,望高手帮我解释一下。
作者: dchwlinux 发布时间: 2010-06-22
/是分隔符,如果字符串中有/,那可用其他的分隔符,而此时/只是做为普通字符处理
'
#
@
好像都能做分隔符,我没试过,也没找到相关教程
不知是不是要读源码或英文文档才能知道具体作用
'
#
@
好像都能做分隔符,我没试过,也没找到相关教程
不知是不是要读源码或英文文档才能知道具体作用
作者: 相思爱文 发布时间: 2010-06-23
本帖最后由 相思爱文 于 2010-6-24 11:43 编辑
Delete all blank lines (^ is start of line; \s* is zero or more whitespace characters; $ is end of line)
删除所有空白行(^是行的开始,\s*是零个或者多个空白字符;$是行尾)
:g/^\s*$/d
经实验,可以删除包括空白,Tab,空白和Tab交错的所有空行。
http://bbs.chinaunix.net/thread-510754-1-1.html
查了下:g/^s*$/d
好像都是出自一个地方,是作者笔误
应为:g/^\s*$/d
可试一下,用vim编辑下面的文件
复制代码
用:g/^s*$/d,除了删除空行外,还会删除只包含一个或多个这母s的行。
Delete all blank lines (^ is start of line; \s* is zero or more whitespace characters; $ is end of line)
删除所有空白行(^是行的开始,\s*是零个或者多个空白字符;$是行尾)
:g/^\s*$/d
经实验,可以删除包括空白,Tab,空白和Tab交错的所有空行。
http://bbs.chinaunix.net/thread-510754-1-1.html
查了下:g/^s*$/d
好像都是出自一个地方,是作者笔误
应为:g/^\s*$/d
可试一下,用vim编辑下面的文件
- ssss
-
- 1111
-
- ssssss
-
- 22222
-
- ssssssssssssss
-
- sssssssssss
作者: 相思爱文 发布时间: 2010-06-23
:v/./.,/./-1join 压缩空行
:g/^$/,/./-j 压缩空行
这两行不清楚,如果是应用的话,强行记住就行了,以下是我的理解,不保证准确
:g/^$/,/./-j 搜索,空行与空行之间执行合并操作,结果是有多个相联空行最后只剩一个
:v/./.,/./-1join (v与g作用相同,就是不匹配某些字符)
:v/./.,/./-0 join
:g/^$/,/./-j 压缩空行
这两行不清楚,如果是应用的话,强行记住就行了,以下是我的理解,不保证准确
:g/^$/,/./-j 搜索,空行与空行之间执行合并操作,结果是有多个相联空行最后只剩一个
:v/./.,/./-1join (v与g作用相同,就是不匹配某些字符)
:v/./.,/./-0 join
作者: 相思爱文 发布时间: 2010-06-24
哦,我也没查出个所以然来,我试了:g/^$/d也行。期待更好的解释吧
作者: dchwlinux 发布时间: 2010-06-25
:g/^$/d是纯空行,:g/^\s*$/d还包括有空白符的行,原文中有处笔误
作者: 相思爱文 发布时间: 2010-06-25
看不懂,阿
复制代码
- :0w5ty(1
作者: hhjs_lxx@163.co 发布时间: 2010-12-17