Best of VIM Tips(译注) - 连载4 查找(c)

[翻译]

" finding empty lines 查找空行

/^/n/{3}                    : find 3 empty lines

                              查找 3 行空行

[注解]

                                                                                                    :help //n

这个正则表达式匹配三个连续的空行,也就是在行首位置有3个连续的换行符。

其中“/n”匹配换行符。

 

 [翻译]

" using rexexp memory in a search

" 在查找中使用正则表达式存储

//(fred/).*/(joe/).*/2.*/1

[注解]

                                                                                                    :help //1

                                                                                                    :help //2

在这个正则式中,“/1”代表与第一个“/( /)”间的子式的相同的字符串,“/2”为第2个,“/3”为第3个,以此类推,一直到“/9”。

所以对这个例子来说,它等同于“fred.*joe.*joe.*fred”。

但是,正则表达式“/([abc]/{3}/).*/1”却并不等同于“[abc]/{3}.*[abc]/{3}”。

因为“/1”代表第一个“/( /)”所匹配的内容,如果第一个“/( /)”匹配了“abc”,那么“/1”就代表“abc”;如果第一个“/( /)”匹配了“abb”,那么“/1”就代表“abb”。

显然正则式“[abc]/{3}.*[abc]/{3}”并不是这个含义。

 

[翻译]

" Repeating the Regexp (rather than what the Regexp finds)

" 重复正则表达式(不管这个正则表达式查找什么)

/^/([^,]*,/)/{8}

[注解]

这个正则式是把“/( /)”间的元素重复8次,即相当于查找“^([^,]*,([^,]*,([^,]*,([^,]*,([^,]*,([^,]*,([^,]*,([^,]*,”。

其中“([^,]*,”表示任意个非“,”的字符,后面紧跟着一个“,”。

 

[翻译]

"visual searching

" 可视模式下的查找

:vmap // y/<C-R>"<CR>       : search for visually highlighted text

                                     查找被高亮显示的文本

:vmap <silent> //    y/<C-R>=escape(@", '///.*$^~[]')<CR><CR> : with spec chars

                                                               高亮文本包含特殊字符

[注解]

                                                                                                    :help v

这两个键映射用于在可视模式下查找被高亮显示的文本,如果高亮文本中包含特殊字符,需要使用第两种格式的键映射。

(使用二者任一)映射后,当你使用vV选中一段文本后,再按“//”就可以查找这段文本。

以第二个映射为例进行讲解:

                                                                                                    :help vmap

vmap                            定义一个virsual的键映射

                                                                                                    :help map-<silent>

<silent>                        执行此映射时不回显

                                                                                                    :help y

y                               拷贝选中的内容到无名寄存器

/                               开始搜索

                                                                                                    :help c_CTRL-R_=

<C-R>=                          搜索的内容来源于一个表达式的结果

                                                                                                    :help escape()

escape()                        把参数1中所包含的特殊字符(由参数2指定)前加转义符/

                                                                                                    :help registers

                                                                                                    :help expr-register

@"                              代表无名寄存器中的内容

'///.*$^~[]'                    些特殊字符进行转义

                                                                                                    :help key-notation

<CR>                            回车

[参考文档]

1. http://www.rayninfo.co.uk/vimtips.html

2. http://groups.google.com/group/Vim-cn/msg/f72fba0645955101?

3. VIM帮助文件

4. http://vimcdoc.sourceforge.net/

 

[尾记]

本文可以自由应用于非商业用途。转载请注明出处。

原文链接:http://blog.csdn.net/easwy 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值