文件内搜索与替换

:[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. 深入理解用户权限rwx

    其实在UNIX的实现中,文件权限用12个二进制位表示,如果该位置上的值是1,表示有相应的权限,如果是0则没有相应权限第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于 ...

  2. 前端之 HTML🎃

    HTML这知识点很多很杂,所以整理很乱.所以将就看.

  3. Ajax同源和跨域

    ajax跨域访问 客户端页面 var url = "http://172.16.91.121:81/FellIn/FellIn.aspx?Action=WXSave&WX_Store ...

  4. Linux 多线程下载工具:axel

    wget 应该是最常用的下载工具了,但是其不支持多线程下载. axel 安装 epel 源有 axel 的二进制包,可以使用 yum 安装. yum install epel-release yum ...

  5. [闲的蛋疼系列]从零开始用TypeScript写React的UI组件(0)-先写一个Button??

    0.咸鱼要说的 一入前端深似海,咸鱼入海更加咸. 最近闲的蛋疼,手上年前的事也完成了7788了,借助[PG1]的话来说,我们要keep real. 咸鱼肯定不real 了,因为我们都活在梦里,所以咱们 ...

  6. SQLAlchemy基础操作二

    多线程示例 import time import threading from sqlalchemy.ext.declarative import declarative_base from sqla ...

  7. Visual Studio 中添加SQLite数据源

    相关下载:https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 在Visual Studio中要支持访问SQLi ...

  8. [转] Web 开发模式演变历史和趋势

    文章转自梦想天空--前端文摘:Web 开发模式演变历史和趋势 一.简单明快的早期时代 可称之为 Web 1.0 时代,非常适合创业型小项目,不分前后端,经常 3-5 人搞定所有开发.页面由 JSP.P ...

  9. TextView 的新特性,Autosizing 到底是如何实现的? | 源码分析

    一.前言 Hi,大家好,我是承香墨影! 前两天聊了一下 Autosizing 的使用,反映还不错.毕竟是这种能解决实际问题的新 Api,确实在需要的时候,用起来会很顺手. 简单回顾一下,Autosiz ...

  10. zookeeper伪分布式集群环境搭建

    step1.下载 下载地址:http://zookeeper.apache.org/releases.html 将下载的压缩包放到用户家目录下(其他目录也可以) step2.解压 $tar –zxvf ...