`

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

 

分享到:
评论

相关推荐

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

    Easwy大牛的高级VIM技巧网页版,学习VIM的好教材,感谢easwy!

    vim高级使用技巧

    vim的高级使用技巧,适合有一定功底的人使用,实例: ;:------------------------------------------------------------------------- ;:" 在文件中插入行号 :g/^/exec "s/^/".strpart(line(".")."", 0, 4) :%s/^/\=...

    vim 高级实例技巧

    VIM 实例技巧 英文版的,页数不多,但看完后,VIM/VI使用将大有长进 不是基础教程,如果不知道VI是什么,怎么复制,粘贴,删除,移动光标还是不要看好 适用于熟悉VI并想进一步提高的朋友们

    vim 全文字符串替换

    vim全文字符串替换,vim使用方法,说明

    Vim实用技巧 Vim实用技巧

    Vim实用技巧Vim实用技巧Vim实用技巧Vim实用技巧

    VIM编辑器高级技巧

    一些VIM的高级技巧,比较适合对VI比较熟悉的用户

    Vim实用技巧.pdf_vim实用_vim_

    讲述 vim 编辑器的几十个实用上手技巧

    vim中文手册 vim中文手册 vim中文手册

    vim中文手册 vim中文手册 vim中文手册 vim中文手册 vim中文手册 vim中文手册 vim中文手册vim中文手册vim中文手册

    vim中文文档及常用技巧

    vim中文文档及常用技巧 完整翻译第tex文档

    Vim实用技巧电子书

    vim是一款功能丰富而强大的文本编辑器,其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中得到非常广泛的使用。vim能够大大提高程序员的工作效率。对于vim高手来说,vim能以与思考同步的速度编辑文本...

    Vim实用技巧.mobi

    Vim是一款功能丰富而强大的文本编辑器,其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中得到非常广泛的使用。Vim能够大大提高程序员的工作效率。对于Vim高手来说,Vim能以与思考同步的速度编辑文本...

    vim替换文件

    安装vim后,替换已经存在的_vimrc文件,这个替换文件已经配置好,下载直接使用。

    Vim实用技巧

    《vim实用技巧》为那些想要提升自己的程序员编写,阅读本书是熟练地掌握高超的vim技巧的必由之路。全书共21章,包括121个技巧。每一章都是关于某一相关主题的技巧集合。每一个技巧都有针对性地解决一个或一类问题,...

    vim实用技巧

    vim是一款功能丰富而强大的文本编辑器,其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中得到非常广泛的使用。vim能够大大提高程序员的工作效率。对于vim高手来说,vim能以与思考同步的速度编辑文本...

    《Vim实用技巧》

    美 Drew Neil《Vim实用技巧》

    Vim实用技巧大全

    本教程详细介绍了Vim使用过程中用到的各种实用技巧,他会让你对Vim用一个更深的了解,本文适合对Vim有一定了解的人使用,小白刚开始用起来可能有点费劲,到后面会越用越熟练.我自从用了Vim对鼠标的依赖性降低了很...

    vimtips vim技巧

    vim技巧 vim 技巧

    vim一些收藏技巧

    整理的一些vim操作技巧

    vim高级配置

    vim高级配置

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

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

Global site tag (gtag.js) - Google Analytics