vim 全局替换_Vim编辑器常用指令汇总

vim  (vi的升级版),是Unix系统自带的文本编辑器,功能丰富。

熟练使用vim能有效提高处理文本的效率。有一个内置的vim教程,详细又好上手,用vimtutor就可进入,花1小时就能学会。

今天来总结下vim文本编辑的各项基本功能,方便大家复习查用。

da06aa1385f0577af5fe8bd6ad792d88.png

入/退出 vim编辑模式

  • 进入vim 文件名
  • 退出
    先按 ESC 回到普通模式:q!    不保存修改,退出:wq    保存修改,退出

光标移动跳转:

  • 逐字移动:字母h j k l 键h (左) j (下) k (上) l (右)
    可能大家习惯用箭头光标,但字母键习惯了会很快。

  • 跳转模式:w / e / 0 / $w word,逐词向后跳e end, 跳至词末 (也适用于长断句)  0 跳至行首$ 跳至行末

  • 数字组合使用3w 向后跳转3个单词,停在词首5e 向后跳转5个单词,停在词末

注意:后面 插入 / 删除(剪切)/ 复制 / 修改等等各种操作,都可以用类似模式: 指令+数字+w/e/0/$ 模式    详见下文例 子。
  • 文档内大幅跳转gg 跳回文档开始G  跳至文档末Ctrl + G 能告诉你目前在文档中的位置,比如 line 391 of 620行号+G 跳至想要去的行,如 391G即跳至391行

插入内容:

i  (即insert) 在光标停留处插入内容A  (即append)在光标所在行的行末追加内容o   向下插入空白行O   向上插入空白行

写完后按ESC回到普通模式,以进行下一个操作

删除(剪切)/复制/粘贴

  • x  删除光标所在处字符

  • d 即deletion,即删除,也是剪切
          与w / e / 0 / $合用dw 删除当前单词de 从点前为止删至词末d0 从点前为止删至行首d$ 从点前为止删至行末dd 删整行

  • 也可与数字组合使用
    例如d3w,向后连删3个词(包括当前词)d5$,向后删至第5个行末4dd,连删4行

  • p 相当于paste,粘贴末次被删除的内容
    d合用,可实现剪切粘贴功能

  • y 复制
    复制选定内容: 普通模式下按v 进入 Visual Mode,再用方向键hjkl 选择目标文本,再按 y 进行复制,目标位置p粘贴,其他内容向下顺延。
    复制当前行: yy,目标位置p
    类似的,与数字组合,4yy可以复制往下数的4行。

撤销与重做

u撤销前次修改Ctrl + R 重做前次修改U 撤销本行的所有修改(这步当然也可以被u逆转)

修改内容

当然你可以将错误内容删除,再插入新内容,但这样就需要两步。

  • c 即 corret,改写,可以省去手工删除步骤。
    光标移动至要修改的起始位置:ce 从当前位置删至词末,并输入新内容c$ 从当前位置向后删至行末,并输入新内容c0 从当前位置向前删至行首,并输入新内容

  • r 即 replace,替换光标处字符

查找

  • 查找目标内容
    普通模式下,/+ 目标内容就从当前位置,在后文中开始搜索?+ 目标内容在前文中搜索
    匹配结果不止一个时,按n向后文找下一个,N向前文找

  • 定位成对符号
    在编程的脚本中,语句中经常有成对的各种括号( ) [ ] { }
    光标停留在其中一个上,按 % 就能定位到成对的另一个
    这在排查脚本错误时很有用

替换

普通模式下:
修改全文的第一个匹配处::s/原内容/新内容

修改某一行中所有匹配(可以有多个)::s/原内容/新内容/g

修改某范围的所有项,可指定行号#,::#,# s/原内容/新内容

修改全文中所有符合条件的::%s原内容/新内容/g 

g表示global,全局

末尾加c, 即check, 会提前向你确认

:%s原内容/新内容/gc 

会问你:replace 旧内容 with 新内容 (y/n/a/q/l/^E/^Y)? 

(y/n/a/q/l/^E/^Y)?需要选答
对多个匹配结果,默认会逐个和你确认y 表示该处要替换、继续下一处n 表示该处不要替换、继续下一处a 表示all,全部替换q 退出当前指令l 表示last,当前这个改完就退出^E^Y 分别是按住Ctrl键+E或者Y,上下滚动页面

最后

vim tutor里还有些其他功能介绍,如怎样在编辑模式下如何使用外部的指令行等。

但最正如教程中所说,最重要的是:Do not try to memorize, learn by usage.

61eda921e6e3004cb3a652dbe37ac5ac.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值