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 选中文本


vim 实栗 (1) :替换重复文本


  • 按下 s 替换所选文本并进入输入模式

  • 输入 assert 之后,按下 <ESC> 回到 普通模式


vim 实栗 (1) :替换重复文本

使用命令行

如果我们要替换的文本并不 “挨着”,比如下图

vim 实栗 (1) :替换重复文本

我们可以直接使用 vim 的 :substitute 命令来完成,具体命令如下:

:%s/print/assert/g

意思是

  • 在全文件之内 %,作如下替换 s

  • 将 print 换成 assert

  • /g (global) 模式:替换所有 print


vim 实栗 (1) :替换重复文本


如果我们只想替换第一个和最后一个 print,我们可以这么操作

:%s/print/assert/c

意思是

  • 在全文件之内 %,作如下替换 s

  • 将 print 换成 assert

  • 模式为 confirm,即需要使用者确认是否替换文本: /c

    • y 确认替换, n 代表不替换


vim 实栗 (1) :替换重复文本

搜索-替换

也可以用搜索然后替换的方式来处理。为了显示方便,我们先设置

set hlsearch 高亮搜索文本

然后这么操作:

  • 按下 /print 搜索 print


vim 实栗 (1) :替换重复文本


  • 通过 ciw 替换文本然后回到普通模式


vim 实栗 (1) :替换重复文本


  • 在普通模式下按 n 光标就会重复刚才的搜索,跳到下一个 print 处。如果不需要替换,可以再按 n(按下大写的 N 则是跳到上一个 print 处)。

  • 如果每次替换成的文本都一样,比如都是替换成 assert的话,根本不用重复输入,我们直接按下 . 就可以了。


vim 实栗 (1) :替换重复文本


相关理论可以参考的 “搜索” 部分。

使用插件:vim-multiple-cursors

我们还可以用这个插件来解决:vim-multiple-cursors。 如果你不直达如何安装插件的话,可以先参考这一篇:。如果使用这个插件的话,可以直接想 sublime text 一样选中想要替换的文本,然后直接替换。比如还是这个例子

vim 实栗 (1) :替换重复文本有兴趣的小伙伴可以去研究一下这个插件,有必要的话,咱单写一篇说这个插件就成



除了这个应该还可以用 far.vim 这个插件来做文本替换,只不过我目前还没用过,就不在这里给大家献丑啦…




以上是关于vim 实栗 :替换重复文本的主要内容,如果未能解决你的问题,请参考以下文章

替换 Viewpager 中的片段 [重复]

jsp 实栗 jsp + jdbc 登录

用片段替换某些东西

vim详细使用

过滤器实栗 登录检测

Vim 备忘清单_开发速查表分享