VIM字符匹配交换

Vim字符匹配交换

把文中的所有字符串“a..bc <——-> xy….z”替换为“xy….z <——-> a..bc”可以进行以下写法1

:%s/\(a.*bc\)\(.*\)\(xy.*z\)/\3\2\1/gc

以上表达式中可以拆开几部分理解:

  • %s 全文查找
  • \(a.*bc\)1个独立内容块:使用通配.*匹配查找以a开头,bc结尾的字符串,并以括号()括起来作为第1个独立内容的块,反斜杠\在这里是转义符
  • \(.*\)2个独立内容块:使用通配.*匹配任意内容,并以括号()括起来作为第2个独立内容的块,反斜杠\在这里同样是转义符
  • \(xy.*z\)3个独立内容块:使用通配.*匹配查找以xy开头,z结尾的字符串,并以括号()括起来作为第3个独立内容的块,反斜杠\在这里同样是转义符
  • \3\2\1 这里意思是把第3个和第1内容块交换位置,第2内容块位置不变,即内容位置交换
  • gc 以询 问确认方式进行全局替换

参考

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...