`

vim中一些高级替换技巧

阅读更多

 

 


1.
替换变量
在正规表达式中使用 \( \) 符号括起正规表达式,即可在后面使用\1\2等变量来访问 \( \) 中的内容。
example:
·
data1 data2 修改为 data2 data1
-----------------------------------
:s/\(\w\+\)\s\+\(\w\+\)/\2\t\1
-----------------------------------
·
Doe, John 修改为 John Doe
-----------------------------------
:%s/\(\w\+\), \(\w\+\)/\2 \1/   
-----------------------------------
2.
利用函数式替换
用法:
---------------------------
:s/
替换字符串/\=函数式
---------------------------
说明:
·
函数式可以有多个,返回值可以用字符串连接符.连接起来,如line(".")返回匹配行号(:help line()  ),submatch(n)可以引用\1\2的内容,其中submatch(0)引用匹配的整个内容;
·
函数式也可以是字符串常量,用双引号引起来。函数式也可以是任意表达式,需要用小括号引起来,如(3+2*6)
·
函数式还可以是寄存器中的内容,通过"@寄存器名"访问,如@a(不需要加引号,但是还是需要用.来连接);
example:
·
要将下列8行的data0依次变成data0~7(前面的数字是行号)
double data0;
double data0;
double data0;
double data0;
double data0;
double data0;
double data0;
double data0;
如果安装有perl的话,我以前一般都是借助perl来完成这件事情:
---------------------------------------------------------------------------
:r !perl -n -le "if(s/^(double\s+data)\d;/$1$k;/){ $k++; print $_; }" %:p---------------------------------------------------------------------------
其中%:p表示包含完整路径的文件名
现在只用vim我们就可以完成这样的事情:
首先将光标移到125行(line(".")返回当前匹配行的行号,line("'a")返回mark a的行号):
---------------------------------------------------------------------------
ma
:%s/^\(double\s\+data\)\d\(;\)/\=submatch(1).(line(".")-line("'a")+1).submatch(2)/g
---------------------------------------------------------------------------
再或者
首先将光标移到125行(line("'V7j
:%s/^\(double\s\+data\)\d\(;\)/\=submatch(1).(line(".")-line("'
---------------------------------------------------------------------------
3.
匹配的开始与结束
\zs
\ze可以用于替换操作中指明替换的开始与结束,如上例中可以以更短的操作来实现:
---------------------------------------------------------------------------
ma
:%s#^double\s\+data\zs\d\ze#\=(line(".")-line("'a")+1)#g
---------------------------------------------------------------------------
另外,还可以使用vim表达式来实现上述功能:
---------------------------------------------------------------------------
:let n=0 | g/^double\s\+data\zs\d/s//\=n/ | let n+=1
---------------------------------------------------------------------------
其中 ·|      用来分割不用的命令;
·g      
在匹配后面模式的行中执行指定的ex命令
·\zs   
指明匹配由此开始
·s//\=n
对匹配模式进行替换,匹配模式为空,表示以上一次匹配成功的模式,
并且指明替换是一个表达式;
4.
高级递增替换
把下面几句放到 _vimrc
-------------------------------
let g:I=0
function! INC(increment)
let g:I =g:I + a:increment
return g:I
endfunction
------------------------------
·
对于上述问题,可以这样解决:
-----------------------------------------------------
:let I=-1 | %s/^ double\s\+data\zs\d\ze/\=INC(1)/
-----------------------------------------------------
·
还可以生成数字序列,如生成1~100间隔为5的数字序列:
--------------------------------------
:let I=0 | ‘a,’b s/^/\=INC(5)/
--------------------------------------

Normal
0



7.8

0
2

false
false
false

EN-US
ZH-CN
X-NONE

 

分享到:
评论

相关推荐

    vim高级使用技巧

    《vim高级使用技巧详解》 vim作为一款强大的文本编辑器,深受程序员和系统管理员的喜爱。本文将深入探讨一些vim的高级使用技巧,帮助有经验的用户提升编辑效率。 1. **插入行号** - `g/^/exec "s/^/".strpart...

    Easwy大牛的高级VIM技巧网页版

    Easwy大牛的高级VIM技巧网页版是一个专门针对Vim进阶使用的教程,旨在帮助用户提升在Vim中的工作效率。 在Vim的世界里,掌握高级技巧意味着能更快地编写代码、查找和替换文本,以及进行复杂的文件操作。以下是一些...

    VIM编辑器高级技巧

    本文将介绍一些VIM编辑器的高级技巧,旨在帮助那些已经熟悉基本操作并希望进一步提高工作效率的用户。这些技巧不仅适用于VIM,也适用于其前身VI编辑器。 #### 二、选定文字与拷贝粘贴 1. **可视模式**:通过`v`键...

    《Vim实用技巧》书中代码

    通过学习和实践《Vim实用技巧》中的代码示例,你可以掌握这些高级技巧,将Vim打造成个人专属的高效开发环境。书中的每个示例都旨在帮助你深入理解Vim的工作方式,并将其应用于日常编程任务中,真正实现“Edit Text ...

    VIM中文手册 PDF

    通过学习VIM中文手册,你不仅可以掌握基本编辑技巧,还能深入探索VIM的高级特性,提升编程和文本编辑的效率。VIM是一个值得投入时间学习的工具,一旦熟悉其工作方式,你将会发现它的强大和效率无与伦比。

    Vim实用技巧 文字版 完整全本 pdf

    《Vim实用技巧》这本书旨在帮助用户掌握Vim的高级用法,提升编辑效率。 一、Vim的基本操作 1. 启动与退出:通过命令行输入`vim`加文件名启动,使用`:q`退出,`:q!`强制退出,`:wq`保存并退出。 2. 模式切换:Vim...

    vim中文文档及常用技巧

    本资料包包含了“vim中文文档”和一些“常用技巧”,旨在帮助用户更高效地掌握和使用Vim。 中文文档部分: 1. **界面与操作模式**:Vim有三种主要模式——正常模式(Normal mode)、插入模式(Insert mode)和...

    vim高级实用手册

    ### vim高级实用手册知识点解析 #### 一、简介与背景 `vim`是Vi Improved的缩写,是在Vi基础上改进而来的高级文本编辑器。它不仅继承了Vi的所有特性,而且还增加了很多强大的功能,比如多级撤销、语法高亮、命令...

    Vim 8.2 PDF 中文用户手册(最新)

    ### Vim高级功能 1. **使用GUI版本**:在图形用户界面环境中使用Vim,包括使用鼠标、剪贴板和选择模式等。 2. **做大修改**:掌握Vim的大规模文本修改功能,如记录与回放命令、替换文本、命令范围的定义以及改变文本...

    vim的实用技巧

    **vim的实用技巧** 在IT领域,vim作为一个强大的文本编辑器,因其高效、灵活和高度可定制性而深受...本书“vim的全新实用技巧高清第二版”将更全面地介绍这些技巧和更多高级特性,是vim爱好者不可多得的参考资料。

    Vim中文手册

    本手册主要包含Vim的基本使用方法和高级技巧,目的是让用户能快速掌握Vim的操作并提高编辑效率。 手册中首先介绍了Vim的帮助文件的使用,包括如何移动光标、关闭窗口、离开Vim以及如何使用光标键和命令行进行高效...

    vim用户手册中文

    最后,手册可能会包含一些实用技巧和解决问题的方法,比如在Vim中运行外部命令、使用Vim与版本控制系统集成,以及如何调试程序等。 总之,《vim用户手册中文》是Linux和Unix用户掌握Vim不可或缺的参考资料。通过...

    vim 中文帮助手册

    - **在线资源**:除了官方文档外,互联网上有大量的Vim教程、插件介绍和使用技巧分享。 - **社区支持**:加入Vim用户社区,参与讨论和技术交流,有助于快速解决遇到的问题。 #### 四、具体操作技巧举例 - **移动...

    vim中文参考手册

    《vim中文参考手册》是广大vim用户不可或缺的学习资源,它详尽地介绍了这款强大的文本编辑器的使用方法和技巧,被誉为vim的“葵花宝典”。vim,全称Vi Improved,是在传统Vi编辑器的基础上发展起来的一个强大且高度...

    vim使用技巧

    本书中的技巧按照功能和应用场景进行了分类,下面列举了一些关键章节及其涵盖的主题: 1. **基础操作**: - 快速移动光标 - 搜索和替换文本 - 使用模式切换提高效率 2. **文本编辑**: - 复制、剪切和粘贴操作的...

    vim最新中文帮助文档

    在“vim最新中文帮助文档”中,你可以找到关于Vim的详尽信息,包括基本操作、高级编辑技巧、宏定义、脚本编写以及Vim的配置和扩展。以下是一些关键知识点: 1. **基础操作**:Vim有三种模式——普通模式、插入模式...

Global site tag (gtag.js) - Google Analytics