Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > vim技巧 - 替换的巧妙使用(2)
【标  题】:vim技巧 - 替换的巧妙使用(2)
【关键字】:vim
【来  源】:http://blog.csdn.net/easwy/archive/2007/02/09/1506270.aspx

vim技巧 - 替换的巧妙使用(2)

Your Ad Here

在上一篇文章中,我们使用了两条VIM替换命令,下面详细剖析一下这两条命令。

 
以第一条命令为例,第二条命令和第一条命令类似:

:'<,'>s/BIT_MASK_\zs\d*\ze/\=line(".") - line("'<") + 1

 

这条命令在我们选中的区域内进行替换,查找以“BIT_MASK_”开头,后面跟任意多个数字的字符串,并把匹配位置放在数字上,然后使用后面表达式计算出来的数字替换这些匹配的数字。

下面是这条命令中每个元素的含义:

'<,'>        我们所选中的区域 (:help '<:help '> )

s            在选中的区域中进行替换 (:help :s )

\zs          指明匹配由此开始 (:help /\zs )

\d*          查找任意位数的数字 (:help /\d )

\ze          指明匹配到此为止 (:help /\ze )

\=           指明后面是一个表达式 (:help :s\= )

line(".")    当前光标所在行的行号 (:help line() )

line("'<")   我们所选区域中第一行的行号 (:help line() )

 

'<”和“'>”是我们使用了“v”,“V”命令选中一个visual区域后,VIM设置的标记,分别用来标识visual区域的开始和结束。

BIT_MASK_\zs\d*\ze”是一个正则表达式,用来查找以“BIT_MASK_”开头,后面跟任意多个数字的字符串。其中“\zs”、“\ze”用来指定匹配的开始和结束位置,因为我们只打算替换“BIT_MASK_0”中的数字,所以在查找时只把匹配区域置在数字上。

由于我们的替换操作要把不同行的数字替换成不同的值,所以在这里需要使用一个表达式来计算出替换后的值。当“:s”命令的替换字符串是以“\=”开头时,表明使用一个表达式计算的结果进行替换。我们这里的表达式就是“line(".") - line("'<") + 1”,其中“line()”函数用来获得行号,它可以获得当前行的行号,以及指定的标记(mark)所在的行号。“line(“.”)”用来获得当前光标所在行的行号,“line(“’<”)”则用来获得“'<”标记所在行的行号。这两个行号的差加上1就是我们想替换的值。

 
下一篇文章,将介绍另外一种方法来完成同样的功能。

 
[
参考文档]

VIM邮件列表,2007/01/29 邮件标题:"replace with a number sequence"

[原文链接]

http://blog.csdn.net/easwy

新的header_rewriter:【上一篇】
红旗Linux下配置telnet,允许root登录:【下一篇】
【相关文章】
  • Vim(vi) 与 SQL*Plus 集成以及AnySQL尝鲜
  • VIM编码相关
  • 非常有用的工具:ant_menu.vim : plugin for ant
  • gvim已经与SVN系统结合了
  • 使用gvim配合ant开发完整的java web应用 之gvim篇
  • 配置gvim作为java web项目开发工具
  • VIM 用户手册-自定义语法高亮
  • Editing with gVim
  • cream --- 为vim提供一个易用的外衣
  • 使用vim搭建python开发环境
  • 【随机文章】
  • 国内的软件公司大都规模不大
  • 用JSP编写通用信息发布程序 
  • 查找文件或命令对应的文件集
  • GDI+实例教程之: 转换Image(BMP,JPG,GIF,PNG等) 到MetaFile(EMF等) 格式
  • 基于Apache的Web页面访问权限控制
  • Appfuse里面带的Ant任务列表
  • VB软件开发中的错误捕获及处理技术
  • 从8位、16位微控制器到ARM处理器
  • 快速排序算法
  • [JAVA]一段HashTable小程序,有关对象获取的疑问。
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.