vim 实栗 :替换重复文本
Posted V字君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vim 实栗 :替换重复文本相关的知识,希望对你有一定的参考价值。
今儿开始,又一个新坑:vim 实栗。这个系列主要目的是围绕特定的主题,咱们 vim 实际操作一下。如果你有好的建议,或者有更好的办法,一定要分享一下。这一篇咱们就来说一下怎么替换重复文本
visual-block 替换
如果我们要替换的文本都 “互相挨着”,能用一个长方形框住的话,那我们就可以直接用 visual-block
模式来解决了。比如下图里,我们想把所有的 print(a + b + c)
变成 assert
(这里主要是为了说明怎么替换,代码究竟能不能跑这里就先忽略了)
按下
<c-e>
(ctrl + e) 进入visual-block mode
然后
6j
和e
选中文本
按下
s
替换所选文本并进入输入模式输入
assert
之后,按下<ESC>
回到 普通模式
使用命令行
如果我们要替换的文本并不 “挨着”,比如下图
我们可以直接使用 vim 的 :substitute
命令来完成,具体命令如下:
:%s/print/assert/g
意思是
在全文件之内
%
,作如下替换s
将
print
换成assert
/g
(global) 模式:替换所有print
如果我们只想替换第一个和最后一个 print
,我们可以这么操作
:%s/print/assert/c
意思是
在全文件之内
%
,作如下替换s
将
print
换成assert
模式为 confirm,即需要使用者确认是否替换文本:
/c
y
确认替换,n
代表不替换
搜索-替换
也可以用搜索然后替换的方式来处理。为了显示方便,我们先设置
set hlsearch
高亮搜索文本
然后这么操作:
按下
/print
搜索print
通过
ciw
替换文本然后回到普通模式
在普通模式下按
n
光标就会重复刚才的搜索,跳到下一个print
处。如果不需要替换,可以再按n
(按下大写的N
则是跳到上一个print
处)。如果每次替换成的文本都一样,比如都是替换成
assert
的话,根本不用重复输入,我们直接按下.
就可以了。
相关理论可以参考的 “搜索” 部分。
使用插件:vim-multiple-cursors
我们还可以用这个插件来解决:vim-multiple-cursors
。 如果你不直达如何安装插件的话,可以先参考这一篇:。如果使用这个插件的话,可以直接想 sublime text
一样选中想要替换的文本,然后直接替换。比如还是这个例子
有兴趣的小伙伴可以去研究一下这个插件,有必要的话,咱单写一篇说这个插件就成
除了这个应该还可以用 far.vim 这个插件来做文本替换,只不过我目前还没用过,就不在这里给大家献丑啦…
以上是关于vim 实栗 :替换重复文本的主要内容,如果未能解决你的问题,请参考以下文章