正则表达式

王朝other·作者佚名  2008-05-18
宽屏版  字体: |||超大  

:v/./$s/$/<ctrl-v><enter>./|'';/./-1j|$d

Replaces multiple blank lines with just one blank line.

大家看看,试着解释一下

我试了几次,都没有好用,命令的意思好像是把空行(不包括空格,TAB..行)删除掉,

用g/^$/ d 应该就可以。

:v/./$s/$/<ctrl-v><enter>./|'';/./-1j|$d

可以分解为:

1 :v/./$s/$/<ctrl-v><enter>./

意思是把所有空行选出来并且到最后一行然后添加N个行,N为查找到的空行数

2 | 命令的意思为循环执行

3 '' 跳转到上一次位置

4 ;/./ 查找到下一个非空行

5 -1j 合并一行

6 $d 把最后一行删除

总之我感觉此条命令太复杂,而太复杂的东西最好使用VIM中的宏记录,记录操作后,再重复执行,应该比这个好明白。

:v

怎么使用?

help :v如下:

:[range]g[lobal]/{pattern}/[cmd]

Execute the Ex command [cmd] (default ":p") on the

lines within [range] where {pattern} matches.

:[range]g[lobal]!/{pattern}/[cmd]

Execute the Ex command [cmd] (default ":p") on the

lines within [range] where {pattern} does NOT match.

*:v* *:vglobal*

:[range]v[global]/{pattern}/[cmd]

Same as :g!.

是的,要达与楼主同样效果,其实完全可以用简短得多的命令,

:g/^$/,/./-j

就行了。

甚至,只要用

cat -s

就行了

我在 vi 下面试试,能成。在 vim 下面就不稳定,有时行有时不行。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有