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 //转到前一个位置
VIM 文件搜索与替换的更多相关文章
- 【vim】搜索与替换
1. 搜索 命令 功能 备注 * 向下搜索光标所在处的词 n下一个,N上一个 # 向上搜索光标所在处的词 同上 [+<Ctrl>+i 跳转到光标所在处的变量的声明 使用tag [+< ...
- Linux使用vim进行多文件查找和替换的方法
vim是Linux系统下常用的文本编辑,通过使用多种shell命令能够实现多文件的查找和替换,那么具体会使用到那些命令呢?下面小编就给大家介绍下Linux系统vim多文件查找和替换的方法. 在linu ...
- Vim进阶技术:搜索和替换
行内搜索 行内搜索,也就是在当前行内进行搜索和移动,通常都与编辑命令一起使用. fx -- 移动到下一个字符x的位置,光标停留在x字符上面 tx -- 移动到下一个字符x的位置,光标停留在x前一个字符 ...
- Linux学习笔记(5)Linux常用命令之文件搜索命令
(1)find find命令用于文件搜索,所在路径/bin/find,其语法格式为: find [搜索范围] [匹配条件] 1)-name:根据文件名搜索,如搜索/etc下的init文件 [root@ ...
- Linux 文件搜索命令:find、which、whereis 和 locate
Linux 提供了许多用于文件搜索的命令,这些命令都很强大,但是也有一些不同之处,这里分别介绍一下. 一.find 命令 find 是最常见和最强大的一个文件搜索命令.使用 find 命令可以在指定目 ...
- vi的搜索和替换
搜索中进行替换 /which #搜索which cwthat #替换成that n #重复搜索 . #重复替换 一种类型的替换命令 g/pattern/s/old/new/g 第一个 g 表示是有选择 ...
- Linux常用命令(二)之权限管理、文件搜索、帮助、压缩命令及管道
在(一)中提到过rwx的含义,但是我们还需深入理解,明白其真正的含义和权限,对于文件和目录,rwx权限是不同的,尤其是目录的权限往往是被忽略的: 对于目录,其权限和对应的操作: r-ls w-touc ...
- vim中字符串的替换
vi/vim 中可以使用 :s 命令来替换字符串 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky : ...
- Shell实现文件内容批量替换的方法
在Linux系统中,文件内容的批量替换同Windows平台相比要麻烦一点.不过这里可以通过Shell命令或脚本的方式实现批量替换的功能. 笔者使用过两个命令:perl和sed ,接下来会对其做出说明. ...
随机推荐
- Lucene分词停用词库stopwords
! " $ % & ' ( ) * + , - -- . .. ... ...... ................... ./ .一 .数 .日 / // 0 1 2 3 4 5 ...
- flask 动手写的接口平台
笔者做的是测试,在群里经常有人讨论,怎么和开发对接怎么难,怎么测接口比较难,开发不愿因写文档等等,是啊,我感觉也是这样,沟通,还有我们应该怎样去学习,去扩充自己,让自己不再受开发所左右, 笔者就像试图 ...
- 讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(中)- IOS不为人知的Bug
前言: 话说昨晚还是前晚,写了一篇:讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(上) 文章写到最后时,多了很多莫名奇妙的问题!!! 为了解决了这些莫名奇妙的问题,我又战斗了2 ...
- Neo4j学习笔记(2)——数据索引
和关系数据库一样,Neo4j同样可以创建索引来加快查找速度. 在关系数据库中创建索引需要索引字段和指向记录的指针,通过索引可以快速查找到表中的行. 在Neo4j中,其索引是通过属性来创建,便于快速查找 ...
- 对比Tornado和Twisted两种异步Python框架
做Python的人,一定知道两个性能优秀的异步网络框架:tornado,和twisted. 那么,这两个著名的框架,又有什么异同呢?tornado和twisted,我都用在几个游戏项目中,做过后端,觉 ...
- form表单样式
<BODY> <div id="modify-data"> <form class="modify-data-form"> ...
- Java框架之Spring MVC(二)
一.Spring MVC 验证 JSR 303 是ajvaEE6 中的一项子规范 ,叫 Bean Validation 用于对javaBean中的字段进行校验. 官方的参考实现是: Hibernate ...
- Percona XtraBackup的部分备份与恢复/单库备份/单表备份/指定库备份/指定表备份
本文是翻译的Percona XtraBackup 2.2版的官方文档,原文地址在此:https://www.percona.com/doc/percona-xtrabackup/2.2/innobac ...
- 【读书笔记】【深入理解ES6】#3-函数
函数形参的默认值 ES6中的默认参数值 function makeRequest(url, timeout = 2000, callback = function() {}) { } 可以为任意参数指 ...
- 由浅入深SCF无服务器云函数实践
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:陈杰,腾讯云架构平台部技术专家 近年来,互联网服务从一开始的物理服务器托管,虚拟机,容器,发展到现在的云函数,逐步无服务器化,如下表所示. ...