[转载] 在 Vim 中优雅地查找和替换
2017-03-15 17:19
330 查看
原文地址: http://harttle.com/2016/08/08/vim-search-in-file.html
总有人问我 Vim 中能不能查找,当然能!而且是超级强的查找! 这篇文章来详细介绍 Vim 中查找相关的设置和使用方法。 包括查找与替换、查找光标所在词、高亮前景/背景色、切换高亮状态、大小写敏感查找等。
在normal模式下按下
Vim会跳转到第一个匹配。按下
Vim查找支持正则表达式,例如
需要查找特殊字符需要转义,例如
注意查找回车应当用
在查找模式中加入
将会查找所有的
Vim 默认采用大小写敏感的查找,为了方便我们常常将其配置为大小写不敏感:
将上述设置粘贴到你的
在normal模式下按下
要求每次出现的前后为空白字符或标点符号。例如当前为
可以匹配
这在查找函数名、变量名时非常有用。
按下
即
例如
作用范围分为当前行、全文、选区等等。
当前行:
全文:
选区,在Visual模式下选择区域后输入
2-11行:
当前行
上文中命令结尾的
还有很多其他有用的替换标志:
空替换标志表示只替换从光标位置开始,目标的第一次出现:
回车后Vim会将光标移动到每一次
按下
如果你像我一样觉得高亮的颜色不太舒服,也可以进行设置:
将上述配置粘贴到
上述配置指定Search结果的前景色(foreground)为黑色,背景色(background)为灰色。 更多的CTERM颜色可以查阅:http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim
有木有觉得每次查找替换后Vim仍然高亮着搜索结果? 可以手动让它停止高亮,在normal模式下输入:
其实上述命令禁用了所有高亮,正确的命令是
将上述配置粘贴到
XTERM 256色:http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim
Vim Wikia - 查找与替换:http://vim.wikia.com/wiki/Search_and_replace
用 Vim 打造 IDE 环境:http://harttle.com/2015/11/04/vim-ide.html
总有人问我 Vim 中能不能查找,当然能!而且是超级强的查找! 这篇文章来详细介绍 Vim 中查找相关的设置和使用方法。 包括查找与替换、查找光标所在词、高亮前景/背景色、切换高亮状态、大小写敏感查找等。
查找
在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。
Vim会跳转到第一个匹配。按下
n查找下一个,按下
N查找上一个。
Vim查找支持正则表达式,例如
/vim$匹配行尾的
"vim"。
需要查找特殊字符需要转义,例如
/vim\$匹配
"vim$"。
注意查找回车应当用
\n,而替换为回车应当用
\r(相当于
<CR>)。
大小写敏感查找
在查找模式中加入\c表示大小写不敏感查找,
\C表示大小写敏感查找。例如:
/foo\c
将会查找所有的
"foo",
"FOO",
"Foo"等字符串。
大小写敏感配置
Vim 默认采用大小写敏感的查找,为了方便我们常常将其配置为大小写不敏感:" 设置默认进行大小写不敏感查找 set ignorecase " 如果有一个大写字母,则切换到大小写敏感查找 set smartcase
将上述设置粘贴到你的
~/.vimrc,重新打开Vim即可生效。
查找当前单词
在normal模式下按下*即可查找光标所在单词(word),
要求每次出现的前后为空白字符或标点符号。例如当前为
foo,
可以匹配
foo bar中的
foo,但不可匹配
foobar中的
foo。
这在查找函数名、变量名时非常有用。
按下
g*即可查找光标所在单词的字符序列,每次出现前后字符无要求。
即
foo bar和
foobar中的
foo均可被匹配到。
查找与替换
:s(substitute)命令用来查找和替换字符串。语法如下:
:{作用范围}s/{目标}/{替换}/{替换标志}
例如
:%s/foo/bar/g会在全局范围(
%)查找
foo并替换为
bar,所有出现都会被替换(
g)。
作用范围
作用范围分为当前行、全文、选区等等。当前行:
:s/foo/bar/g
全文:
:%s/foo/bar/g
选区,在Visual模式下选择区域后输入
:,Vim即可自动补全为
:'<,'>。
:'<,'>s/foo/bar/g
2-11行:
:5,12s/foo/bar/g
当前行
.与接下来两行
+2:
:.,+2s/foo/bar/g
替换标志
上文中命令结尾的g即是替换标志之一,表示全局
global替换(即替换目标的所有出现)。
还有很多其他有用的替换标志:
空替换标志表示只替换从光标位置开始,目标的第一次出现:
:%s/foo/bar
i表示大小写不敏感查找,
I表示大小写敏感:
:%s/foo/bar/i # 等效于模式中的\c(不敏感)或\C(敏感) :%s/foo\c/bar
c表示需要确认,例如全局查找
"foo"替换为
"bar"并且需要确认:
:%s/foo/bar/gc
回车后Vim会将光标移动到每一次
"foo"出现的位置,并提示
replace with bar (y/n/a/q/l/^E/^Y)?
按下
y表示替换,
n表示不替换,
a表示替换所有,
q表示退出查找模式,
l表示替换当前位置并退出。
^E与
^Y是光标移动快捷键,参考: Vim中如何快速进行光标移动。
高亮设置
高亮颜色设置
如果你像我一样觉得高亮的颜色不太舒服,也可以进行设置:highlight Search ctermbg=grey ctermfg=black
将上述配置粘贴到
~/.vimrc,重新打开vim即可生效。
上述配置指定Search结果的前景色(foreground)为黑色,背景色(background)为灰色。 更多的CTERM颜色可以查阅:http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim
禁用/启用高亮
有木有觉得每次查找替换后Vim仍然高亮着搜索结果? 可以手动让它停止高亮,在normal模式下输入::nohighlight " 等效于 :nohl
其实上述命令禁用了所有高亮,正确的命令是
:set nohlsearch。 下次搜索时需要
:set hlsearch再次启动搜索高亮。 怎么能够让Vim查找/替换后自动取消高亮,下次查找时再自动开启呢?
" 当光标一段时间保持不动了,就禁用高亮 autocmd cursorhold * set nohlsearch " 当输入查找命令时,再启用高亮 noremap n :set hlsearch<cr>n noremap N :set hlsearch<cr>N noremap / :set hlsearch<cr>/ noremap ? :set hlsearch<cr>? noremap * *:set hlsearch<cr>
将上述配置粘贴到
~/.vimrc,重新打开vim即可生效。
参考阅读
XTERM 256色:http://vim.wikia.com/wiki/Xterm256_color_names_for_console_VimVim Wikia - 查找与替换:http://vim.wikia.com/wiki/Search_and_replace
用 Vim 打造 IDE 环境:http://harttle.com/2015/11/04/vim-ide.html
相关文章推荐
- 转: 在 Vim 中优雅地查找和替换 (写的很好,排版也是相当的赞)
- vim查找替换,转载自实验楼
- 在 Vim 中优雅地查找和替换 vi【转】
- 在 Vim 中优雅地查找和替换
- 【转载】Vim查找替换及正则表达式的使用
- Vim查找替换(转载)
- 转载:如何运用VI编辑器进行查找替换
- Vim 查找替换
- vim中的查找和替换
- vim 正则查找与正则替换
- vim查找与替换
- 正则表达式简明教程——grep Vim的查找与替换实例
- 远程拷贝、查看端口、vim常见快捷键、查找替换命令、grep命令、查看存储空间的命令、chkconfig命令、系统自动启动级别、主机名配置、IP地址配置、域名映射、防火墙设置
- vim 使用查找替换正则表达式
- vim在多个文件中进行查找替换
- vi/vim 查找替换命令
- 转载:vim的复制,删除,粘贴,块操作以及快速替换功能
- 用vim的查找和替换功能删除行末的空格
- Vim查找替换及正则表达式的使用
- vim查找/替换字符串