vim 查找 url 地址问题。

Vim、Emacs配置和使用
回复
hjjdebug
帖子: 94
注册时间: 2009-04-21 9:48

vim 查找 url 地址问题。

#1

帖子 hjjdebug » 2010-04-29 22:51

假如有一个文件,包含了许多url 地址。举例如下:

代码: 全选

http://www.xunlei.com/video/123.html
http://www.xinlang.com/video/abc.html
...
http://www.xunlei.com/video/123.html
http://www.xunlei.com/video/123.html
我想查一下 http://www.xunlei.com/video/123.html
到底都在哪出现过。我会这样操作
1. 将http://www.xunlei.com/video/123.html 选中,copy 到系统剪切板
2. /<ctrl-v> 将查找的内容贴到了命令行。

但是,这样得不到预期的结果,因为字符串中包含/, 需要改为\/, 但这样一个个改太烦人了。
用/\M<ctrl-v> 也不行, 用\V<ctrl-v> 也不行,
那么, 有没有其它好办法呢 ?
:em25
hjjdebug
帖子: 94
注册时间: 2009-04-21 9:48

Re: vim 查找 url 地址问题。

#2

帖子 hjjdebug » 2010-04-29 23:25

找到了一个比较好的办法。用%s#\V<ctrl-v>#&#
针对此例那就是
%s#\Vhttp://www.xunlei.com/video/123.html#&#

用n,N 可以浏览下一个,上一个匹配。

与大家共勉,大家有更好的办法,希望不吝赐教!
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: vim 查找 url 地址问题。

#3

帖子 lilydjwg » 2010-04-30 12:20

贡献两个不记得从哪来弄来的键映射:

代码: 全选

vnoremap <Leader># "9y?<C-R>='\V'.substitute(escape(@9,'\/'),'\n','\\n','g')<CR><CR>
vnoremap <Leader>* "9y/<C-R>='\V'.substitute(escape(@9,'\/'),'\n','\\n','g')<CR><CR>
用法:

用于可视模式,与普通模式的 * 和 # 的用法类同,即选中你要搜索的字符串,按 \* 或者 \# 来向下或者向上搜索之,按 n/N 搜索下/上一个。
zerger
帖子: 23
注册时间: 2010-01-05 22:47

Re: vim 查找 url 地址问题。

#4

帖子 zerger » 2010-05-01 8:45

贡献一个插件(http://code.google.com/p/txtbrowser/), 跟这个功能类似, 不过支持跨行查找, 同时支持支持打开光标下的URL.
lilydjwg 写了:贡献两个不记得从哪来弄来的键映射:

代码: 全选

vnoremap <Leader># "9y?<C-R>='\V'.substitute(escape(@9,'\/'),'\n','\\n','g')<CR><CR>
vnoremap <Leader>* "9y/<C-R>='\V'.substitute(escape(@9,'\/'),'\n','\\n','g')<CR><CR>
用法:

用于可视模式,与普通模式的 * 和 # 的用法类同,即选中你要搜索的字符串,按 \* 或者 \# 来向下或者向上搜索之,按 n/N 搜索下/上一个。
hjjdebug
帖子: 94
注册时间: 2009-04-21 9:48

Re: vim 查找 url 地址问题。

#5

帖子 hjjdebug » 2010-05-05 17:24

谢谢2位, 受益!
回复