文件内搜索与替换

:[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 //转到前一个位置

VIM 文件搜索与替换的更多相关文章

  1. 【vim】搜索与替换

    1. 搜索 命令 功能 备注 * 向下搜索光标所在处的词 n下一个,N上一个 # 向上搜索光标所在处的词 同上 [+<Ctrl>+i 跳转到光标所在处的变量的声明 使用tag [+< ...

  2. Linux使用vim进行多文件查找和替换的方法

    vim是Linux系统下常用的文本编辑,通过使用多种shell命令能够实现多文件的查找和替换,那么具体会使用到那些命令呢?下面小编就给大家介绍下Linux系统vim多文件查找和替换的方法. 在linu ...

  3. Vim进阶技术:搜索和替换

    行内搜索 行内搜索,也就是在当前行内进行搜索和移动,通常都与编辑命令一起使用. fx -- 移动到下一个字符x的位置,光标停留在x字符上面 tx -- 移动到下一个字符x的位置,光标停留在x前一个字符 ...

  4. Linux学习笔记(5)Linux常用命令之文件搜索命令

    (1)find find命令用于文件搜索,所在路径/bin/find,其语法格式为: find [搜索范围] [匹配条件] 1)-name:根据文件名搜索,如搜索/etc下的init文件 [root@ ...

  5. Linux 文件搜索命令:find、which、whereis 和 locate

    Linux 提供了许多用于文件搜索的命令,这些命令都很强大,但是也有一些不同之处,这里分别介绍一下. 一.find 命令 find 是最常见和最强大的一个文件搜索命令.使用 find 命令可以在指定目 ...

  6. vi的搜索和替换

    搜索中进行替换 /which #搜索which cwthat #替换成that n #重复搜索 . #重复替换 一种类型的替换命令 g/pattern/s/old/new/g 第一个 g 表示是有选择 ...

  7. Linux常用命令(二)之权限管理、文件搜索、帮助、压缩命令及管道

    在(一)中提到过rwx的含义,但是我们还需深入理解,明白其真正的含义和权限,对于文件和目录,rwx权限是不同的,尤其是目录的权限往往是被忽略的: 对于目录,其权限和对应的操作: r-ls w-touc ...

  8. vim中字符串的替换

    vi/vim 中可以使用 :s 命令来替换字符串 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky : ...

  9. Shell实现文件内容批量替换的方法

    在Linux系统中,文件内容的批量替换同Windows平台相比要麻烦一点.不过这里可以通过Shell命令或脚本的方式实现批量替换的功能. 笔者使用过两个命令:perl和sed ,接下来会对其做出说明. ...

随机推荐

  1. ES6 函数的扩展2

    8.2 rest参数 ES6引入rest参数(形式为"-变量名"),用于获取函数的多余参数,这样就不需要使用arguments对象了. arguments对象并没有数组的方法,re ...

  2. ORACLE的锁机制

    数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性. 加锁是实现数据 ...

  3. C# (类型、对象、线程栈和托管堆)在运行时的相互关系

    在介绍运行时的关系之前,先从一些计算机基础只是入手,如下图: 该图展示了已加载CLR的一个windows进程,该进程可能有多个线程,线程创建时会分配到1MB的栈空间.栈空间用于向方法传递实参,方法定义 ...

  4. locust 参数,数据详解

    参数    说明-h, –help    查看帮助-H HOST, –host=HOST    指定被测试的主机,采用以格式:http://10.21.32.33–web-host=WEB_HOST  ...

  5. Git详解之一:Git起步

    起步 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章,你就会明白为什么 Git ...

  6. arm-linux-objdump反汇编使用指南

    一.   arm-linux-objdump常用来显示二进制文件信息,常用来查看反汇编代码 二.   常用选项: 1.-b bfdname 指定目标码格式 2.-disassemble或者-d 反汇编 ...

  7. OpenCascade Ruled Surface

    OpenCascade Ruled Surface eryar@163.com Abstract. A ruled surface is formed by moving a line connect ...

  8. 用call和ret实现子程序

    ret和call是另外两种转移指令,它们与jmp的主要区别是,它们还包含入栈和出栈的操作.具体的原理如下: ret操作相当于:pop ip(直接将栈顶元素赋值给ip寄存器) call s的操作相当于: ...

  9. 利用jquery encoder解决XSS脚本注入所产生的问题

    问题现象:前端接收到后台一个数据(其中包含html)标签,自动转译成html页面元素,且自动执行了脚本,造成了前端页面的阻塞 接受的后台数据为大量重复的如下代码 ");</script ...

  10. JMeter-接口自动化之正则表达式关联

    jmeter中,接口自动化的关键在于参数关联.比如需要登录的接口,如何调用登录口令?一个增删改查的闭环,如何将接口参数上下传递?下面就以实际的例子来仔细说一说 1:登录接口 这里有一个实际的登录接口, ...