【vim】搜索与替换
1. 搜索
命令 | 功能 | 备注 |
* | 向下搜索光标所在处的词 | n下一个,N上一个 |
# | 向上搜索光标所在处的词 | 同上 |
[+<Ctrl>+i | 跳转到光标所在处的变量的声明 | 使用tag |
[+<Ctrl>+d | 跳转到光标所在处的宏的定义 | 使用tag |
ycm定位命令 | 跳转到光标所在处的变量的声明或定义 |
YouCompleteMe插件的功能,可以使用以下3个命令, :YcmCompleter GoToDeclaration |
/<pattern> | 向下搜索模式<pattern> | <pattern>不仅是简单的字符串,还可以是复杂的正则表达式 |
?<pattern> | 向上搜索模式<pattern> | 同上 |
/\c<pattern> ?\c<pattern> |
不区分大小写地搜索<pattern> | 小写字母c |
/\C<pattern> /\C<pattern> |
区分大小写地的搜索<pattern> | 大写字母C |
:set ic :set ignorecase |
设定为不区分大小写的搜索模式 | |
:set noic :set noignorecase |
设定为区分大小写的搜索模式 | 默认为区分大小写 |
:vimgrep <pattern> <files> | 在文件中搜索模式<pattern> |
比如在当前目录所有.cpp文件中搜索abc: 出来的结果在quickfix窗口,用命令:cw呼出 |
2. 替换
命令 | 功能 | 备注 |
<scope>s/<pattern>/<str>[/<option>] | 把scope指定的范围内匹配pattern的所有字符串 替换为str,option为可选参数 |
带option时,前面要加/ 选项g:替换每一行所有abc,如果不加只替换第一个 |
:args <files> :argdo <scope>s/<pattern>/<str>[/<option>] |
在文件<files>中把scope指定的范围内匹配pattern 的所有字符串替换为str,option为可选参数 |
各参数说明同上。举例 注意:文件中替换操作不可恢复,请仔细操作,做好备份 |
vim很多操作都带范围参数,替换命令也不例外。上述命令中的%代表范围为所有行,另外还有m, n意思是从第m行到第n行。
3. 小技巧
3.1 将正文中的一段文本复制到命令行
先复制,到命令行后,<Ctrl>+r+" ("是<Shift>+’按出来的).
另外,再提醒一下:
<Ctrl>+p是自动输入上一次命令,<Ctrl>+n是自动输入下一次命令,
<Ctrl>+b是跳到命令行首,<Ctrl>+e是跳到命令行尾
3.2 替换 \n 换行符
场景:
用 VIM 编辑文本文件,想在每一行的换行之前,添加一个字符,比如 “;”。
想到替换命令:
结果总是出错。
后来找到解决方案:
有人总结的结论:
When searching: \n is newline, \r is CR (carriage return = Ctrl-M = ^M)
When replacing: \r is newline, \n is a null byte (0×00).
意思是:
字符串查找时,”\n” 是换行,”\r” 是回车,也就是经常会看到的 ^M(备注-1)。
字符串替换时,”\r” 是换行,’\n” 是空字符(0×00)。
3.3 清除所有 ^M
:%s/<Ctrl>+v <Ctrl>+m//g
就是 Control 键+V,然后再 Control 键 + M,就变成了 ^M,然后替换为空就可以了。
【vim】搜索与替换的更多相关文章
- VIM 文件搜索与替换
文件内搜索与替换 :[range]s/pattern/string/[c,e,g,i] 例如: :%s/oldword/newword/cg //对文本中全部匹配进行替换 :m,ns/oldword/ ...
- Vim进阶技术:搜索和替换
行内搜索 行内搜索,也就是在当前行内进行搜索和移动,通常都与编辑命令一起使用. fx -- 移动到下一个字符x的位置,光标停留在x字符上面 tx -- 移动到下一个字符x的位置,光标停留在x前一个字符 ...
- [Vim] 搜索模式(正则表达式)
本文介绍如何使用Vim的搜索模式. 搜索单词 Vim中使用 \< 和 \> 分别表示单词的开头和结尾,例如查找单词 i 而不是字母 i ,在正常模式下,按下 / 启动搜索模式,输入 \&l ...
- Vim查找与替换命令大全,功能完爆IDE!
Vi/Vim 可以说是文本编辑中的一代传奇人物,直至现在,它仍然在高级程序员的武器库中占有一席之地.每个 Linux 发行版默认都包含Vim ,而且即使你不是 Linux 系统用户,你也可以安装 Vi ...
- 【转载】vim 中如何替换选中行或指定几行内的文本
https://segmentfault.com/q/1010000002552573/a-1020000002552589 :'<,'>s/替换项/替换为/g 以下命令将文中所有的字符串 ...
- Vim正则表达式匹配替换字符串
/********************************************************************** * Vim正则表达式匹配替换字符串 * 说明: * 用V ...
- vim搜索设置高亮
vim搜索设置高亮 linux vim打开文档搜索字符串时,设置被搜索到字符串高亮显示. 有两种方法: 1.暂时设置:vim打开文档-->命令行形式输入set hlsearch. 缺点:关闭文档 ...
- vi的搜索和替换
搜索中进行替换 /which #搜索which cwthat #替换成that n #重复搜索 . #重复替换 一种类型的替换命令 g/pattern/s/old/new/g 第一个 g 表示是有选择 ...
- vim g s 替换区别
vim g s 替换区别 PS:一篇好文收藏备用,今天用它解决了一个大问题. 发信人: vale (浅谷), 信区: VIM标 题: global命令详解 发信站: 水木社区 (Fri Ju ...
- vim 搜索 向前,向后
vim 搜索可以是 / 或者 ?,前者是往下找,后者是往前找. 用 n 查找下一个的时候,就和这两个指令指定的方向相同.如果你想改变方向的话,比如想往下找,那么 / 完了直接回车就行了.表示再次使用上 ...
随机推荐
- CentOS Linux最常用命令及快捷键整理
最近一直在对CentOS系统进行各种体验,为方便自己也方便他人,整理了Linux常用命令及快捷键,不过其实大多和DOS是一样的,只是命令的表达上可能有点儿不一样. 常用Linux命令: 文件和目录: ...
- Spring IoC底层原理
-------------------siwuxie095 Spring IoC 底层原理 1.IoC 即 Invers ...
- 邮槽 匿名管道 命名管道 剪贴板 进程通讯 转自http://www.cnblogs.com/kzloser/archive/2012/11/04/2753367.html#
邮槽 通信流程: 服务器 客户端 注意: 邮槽是基于广播通信体系设计出来的,它采用无连接的不可靠的数据传输 邮槽可以实现一对多的单向通信,我们可以利用这个特点编写一个网络会议通知系统,而且实现这一的系 ...
- Linux TCP拥塞控制算法原理解析
这里只是简单梳理TCP各版本的控制原理,对于基本的变量定义,可以参考以下链接: TCP基本拥塞控制http://blog.csdn.net/sicofield/article/details/9708 ...
- 475. Heaters
static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...
- 指向字符串的指针在printf与cout区别
根据指针用法: * 定义一个指针, &取变量地址, int b = 1; int *a = &b; 则*a =1,但对于字符串而言并非如此,直接打印指向字符串的指针打印的是地址还是字符 ...
- cin和gitchar的区别
cin是iostream(输入输出类) 类下的istream(输入类)类的对象,作用是顺序输入字符串.cin.get()是cin的方法.cin.get()是C++面向对象的操作,getchar()是C ...
- 【树状DP】星象仪
题目描述 在寂寞的夜里,星象仪是非常浪漫的东西.但是,你作为一个精神稍微有点不太正常的Geek,把原本正常的星象仪改造得像电报发送器一样.当然,你这个的构造还要更加奇葩一点.具体来说,你的星象仪是一棵 ...
- WinExec打开exe文件
1,WinExec(): WinExec主要运行EXE文件,不能运行其他类型的文件.不用引用特别单元. 原型:UINT WinExec(exePath,ShowCmd) 示例,我想要用记事 ...
- Java和.net对比分析
.Net和Java是国内市场占有率最高的两门技术,对于准备学习编程语言的初学者来说,.Net和Java是初学者首先考虑的两门技术,因此很多人一遍遍的问“学.Net还是学Java”,社区中也每天都有“. ...