zoukankan      html  css  js  c++  java
  • VIM 文件搜索与替换

    文件内搜索与替换

    :[range]s/pattern/string/[c,e,g,i]
     
    例如:
    :%s/oldword/newword/cg      //对文本中全部匹配进行替换
    :m,ns/oldword/newword/cg    //对文件中部分行匹配进行替换
    :s#str1/#st/cg              //可以使用自定义的符号作为分隔符, 如#、;等,则中间出现的 / 不会作为分隔符
    :%s/s+$//cg              //删除行尾多余空格
    :%s/^ +//gc           //删除行首所有空格
     
     
    //range         指的是範圍,m,n 指從第m行至第n行,1,$ 指從第一行至最後一行,也可以 % 代表。
    //pattern   就是要被替換掉的字串,可以用 regexp 來表示。
    //string    將 pattern 由 string 所取代。
    //c         confirm,每次替換前會詢問。
    //e         不顯示 error。
    //g         globe,不詢問,整行替換。
    //i         ignore 不分大小寫。
    // 也可以用命令 :set ic 和 :set noic 来分别设置查找时不区分和区分大小写
    //           :set hls 和 :set nohlsearch 来设置是否高亮查询结果
    

    多文件搜索与替换 —— args

    如果你想将当前目录下所有类型的文件中的 oldword 替换为 newword,那么只需要打开当前目录下的某个文件,输入如下两条命令并回车:

    :args *.* or */*
    :argdo %s/oldword/newword/egc | update
    

    如果你想将某个目录下的某些文件中的 oldword 替换为 newword, 那么只需要将args命令修改为:

    :args static/core/*.js
    :argdo %s/oldword/newword/egc | update
    

      

    多文件搜索与替换方法——使用sed

    sed -i '/s/oldword/newword/g' *.php
    // -i 修改文件
    // 注意需要在所修改的目录下执行
    // 可以指定文件扩展名

    sed -i "s/xxx/yyy/g" `git grep -l "xxx" api/template/` sed -i "s/xxx/yyy/g" `git grep -l "xx" api/template/`

    多文件搜索——使用vimgrep

    该命令是vim自带的查找命令,相较于grep来说,执行效率较低,但不受系统的限制(Windows的vim中也能用),用法与vim的文件内搜索/...类似
    vimgrep可简写为vim

    :vimgrep /{pattern}/[g][j] {file} ...   
    //可选标志位:g 把每一行的多个匹配结果都加入,j 搜索完后定位到第一个匹配位置
    //以下是可能常用到的方法:
    :vimgrep /word/ *.php             //在当前目录下查找所有php文件
    :vimgrep /word/ **/*.*              //循环遍历查找所有子目录的所有文件
    :vimgrep /word1.+/word2/ {file}  
    //在多个文件中查找同一行内包含word1和word2两个匹配的文件//此处用到了vim的正则匹配,+限定为重复至少一次到无数次
    :vimgrep /word1\_.+/word2/ {file}  
    //在多个文件中查找包含word1和word2两个匹配的文件(可以不同行),\_.表示包括换行符在内的所有字符
    //搜索到的文件列表会加入到quickfix中去,执行:
    :copen       //打开quickfix,显示搜索到的文件列表
    :cclose      //关闭quickfix
    :cn          //转到下一个位置
    :cp          //转到前一个位置
    
  • 相关阅读:
    区块链开发之Corda训练营笔记12:Flow习题答案
    区块链开发之Corda训练营笔记11:Flow代码演示
    gitolite的部署
    python操作redis
    python多进程
    mysql索引
    mysql事务
    mysql外键
    mysql联合查询
    python常用模块之re模块(正则)
  • 原文地址:https://www.cnblogs.com/mininice/p/3925016.html
Copyright © 2011-2022 走看看