vim 是一款功能强大的文本编辑器,它是Linux下常用的编辑器之一,对于熟练掌握了 vim 的人来说,用它编辑文件,方便又快捷,能极大的提高工作效率

vim 功能强大,对应的命令也非常的多,对于初学者来说,看到这么多的命令容易打退堂鼓,想当初,自己刚接触vim的时候,由于不熟悉vim,每一个命令都要上网查阅,真的是举步维艰

其实,工作中常用的vim命令也就那么些,只需学习这些常用的命令,勤加练习,假以时日定能熟练的掌握它们,进而就能解决大部分的编辑问题

本文结合我自己工作中使用vim的经验,整理了一些常用的vim命令

vim 的模式

进入vim之后,会有多种不同的模式,模式之间的切换,让你只需要通过键盘,就能完成文本的编辑,这也是vim存在多种模式的原因,vim主要有以下几个模式

  • 正常模式

刚进入vim界面的时候是正常模式,复制、粘贴操作都是在这个模式下进行的

  • 插入模式

文本内容输入,修改是在这个模式下进行的

可以按 i或者 I进入到插入模式,在插入模式下,按 esc会返回到正常模式

  • 命令模式

输入或者修改完之后,需要保存退出,这个时候vim就会进入到命令模式

esc+ :进入命令模式,再次按 esc返回正常模式

  • 可视模式

可视模式是对文件进行大量重复操作的时候,可以一次性执行完成的功能

可通过 vVctrl v进入可视模式

常用命令

  • 打开、保存、另存为、退出
vim file        #打开文件
vim #打开临时文件,保存的时候需要制定文件名 :w #保存

:w file #另存为 :q #退出

:wq #保存并退出

:x #保存并退出

ZZ 或 shift zz #保存并退出

:q! #不保存退出,会丢失数据

例如: vim a.txt命令打开 a.txt文件,假如a.txt存在的话,打开已有的,不存在的话,则会打开一个新的文件

  • 光标移动
k、j            #光标向上、向下移动一行
h、l #光标向左、向右移动一个位置, l 是字母L的小写 ^ #光标移动到当前行首

$ #光标移动到当前行尾 w #光标向前移动一个单词

b #光标向后移动一个单词 gg #光标移动到文件开头

G 或 shift g #光标移动到文件末尾

n G #光标移动到指定行号的行首, n 表示行号 ctrl f #向下翻一页

ctrl b #向上翻一页

分别按 k j h l能实现光标上下左右移动,键盘上下左右箭头的按键也表示方向键,它跟 k j h l有什么区别呢

如果是图形界面和远程终端都可以使用,如果是字符终端的时候,键盘上下左右箭头的按键有时会出现乱码,所以最好统一使用 k j h l

  • 插入
i               #光标前插入
I #当前行首插入 o #当前行后面插入一行,光标移动到插入行的行首,o 是字母,不是数字0

O #当前行前面插入一行,光标移动到插入行的行首,O 是字母,不是数字0 a #当前光标后插入

A #当前行尾插入

小技巧: 当前处于正常模式, 输入数字 10,按i进入插入模式, 接着输入字母 #,最后按esc键,此时,在光标所在行会出现 10 个#字符,相当于插入了10个#,当你想在文本中插入一行字符作为分割线的时候,就能应用到这个小技巧

  • 复制、粘贴、剪切
yy 或 Y             #复制光标所在行
n yy 或 n Y #从光标行向下复制 n 行
y$ #复制从光标位置到行尾
y^ #复制从光标位置到行首
yw #复制一个单词
ynw #复制n个单词,n为单词个数 yl #复制光标位置的一个字符, l 是字母L的小写形式

ynl #从光标位置向右边复制n个字符, 光标位置也算一个字符 yh #复制光标位置左边的一个字符,光标位置不计算在内

ynh #从光标左边位置向左边复制n个字符,光标位置不计算在内 dd #剪切(删除)光标所在行

ndd #从光标行向下剪切(删除)n行

d$ 或者 D #从光标位置剪切(删除)到行尾

d^ #从光标前一个位置剪切(删除)到行首 dl #剪切(删除)光标位置的字符

dnl #从光标位置向行尾方向剪切(删除)n个字符

dh #剪切(删除)光标坐标位置的一个字符

dnh #从光标左边位置向行首方向剪切(删除)n个字符 dw #剪切(删除)光标位置的一个单词

dnw #从光标位置向行尾方向,剪切(删除)n个单词,光标位置的单词也算在内 p #在当前光标后粘贴

P 或 shift p #大写的字母p, 再当前光标前粘贴

如果是复制一行内容,再按小写字母p则是在当前光标下一行进行粘贴,而不是在当前光标后面粘贴,同样的,如果是按大写字母P则是在当前光标上一行粘贴

如果一个单词比较长,通过dw剪切一个单词时,剪切的是光标位置到光标位置单词的结尾字符串

比如,现有一个字符串 9ssxphu7898%mn ,假如光标位于字符 h 位置,按dw,此时剪切的字符串是 hu7898%mn

  • 删除、替换字符
x   #每次删除光标处的字符,删除之后,光标后面的字符串向光标方向移动一个位置

X   #每次删除光标前面一个字符,删除之后,光标以及后面的字符串会向行首方向移动一个位置

r   #替换光标位置的一个字符

替换字符的方法: 光标移动到准备替换的字符位置,按 r键,然后按替换之后的字符键,光标位置的字符就被目标字符替换了

  • 撤销、重做
u       #撤销
ctrl r #重做

在多行操作的时候,有时候会出现误操作,这时候可以按 u键撤销误操作

可以多次进行撤销,当你每按一次 u键的时候,之前做过的操作就会被撤销一次

如果发现撤销的时候进行了错误的撤销操作,希望把刚才做过的事情重做一次,可以按 ctrl r键进行重做

  • 查找、替换
/string         #查找指定字符串,按n向后查找下一个,按N向前查找下一个

/string\c       #查找指定字符串,不区分大小写,按n向后查找下一个,按N向前查找下一个

/string\C       #查找指定字符串,区分大小写,按n向后查找下一个,按N向前查找下一个

/old/new      #用new字符串替换当前行中第一次匹配达到的old字符串

/old/new/g    #用new字符串替换当前行中所有的old字符串

:n,ms/old/new   #第n行到第m行之间,用new字符串替换每一行中第一次匹配到的old字符串

:n,m/s/old/new/g #第n行到第m行之间,用new字符串替换每一行中所有匹配到的old字符串

:%s/old/new/g    #用new字符串替换文件中所有匹配到的old字符串

如果想要像windows上记事本查找替换一样,每次替换之前有是否替换的确认,只需要在替换命令后面加一个c字符

上面的例子中,:%s/we/WE/gc命令是把文件中所有的we字符串全部替换成WE字符串,每次替换之前人工确认,如果把命令中的 c字符去掉,就是自动全部替换功能了

  • 执行外部命令
:! cmd   #执行cmd命令
:r !cmd #执行cmd命令,把命令的结果插入光标后面一行
  • 1
  • 2

上面例子中,输入 :! date是在vim中执行 date命令,命令结果会显示在下面,再次按 ENTER键回到了vim

当输入 :r !date时,```date``命令的结果插入到光标后面一行

  • 批量处理

在可视模式下可以对文件进行批量的操作,比如: 批量选中,批量修改

我们平常用的比较多的批量操作是块可视模式

v               #字符可视模式,以字符为单位选择
V 或 shift v #行可视模式,以行为单位选择
ctrl v #块可视模式,以块为单位选择

上面例子中,在vim中按 ctrl v进入块可视模式,在屏幕的左下角有显示 --可视 块--字样

接着通过 j k h l选中了第6行到第9行中,每一行的前三列这一块字符串

然后按 shift i切换到插入模式,把前三列字符串修改为 123,修改的时候只有第6行显示修改过,修改完之后连续按两次 esc键,前三列就全部变成了123

紧接着,再次按 ctrl v进入快可视模式,选中第6行到第9行前两列,然后按 d键,就把前两列删除了

小结

本文介绍了vim的一些常见用法,掌握这些常见用法足够满足工作的需要了,关于vim的命令非常多,远远不止本文介绍的内容,更多的用法请参考vim文档

[转帖]整理常用的 vim 命令的更多相关文章

  1. 整理常用的 vim 命令

    vim 是一款功能强大的文本编辑器,它是Linux下常用的编辑器之一,对于熟练掌握了 vim 的人来说,用它编辑文件,方便又快捷,能极大的提高工作效率 vim 功能强大,对应的命令也非常的多,对于初学 ...

  2. Vim命令相关

    在shell中,记住一些常用的vim命令,会在操作时候事半功倍. 光标移动 h,j,k,l,h #表示往左,j表示往下,k表示往右,l表示往上 Ctrl f #上一页 Ctrl b #下一页 w, e ...

  3. 经常使用到的vim命令

    常用的vim命令 总结了我经常用到的vim命令,虽然不是很全,但是日常的开发足够了 启动vim vim 直接启动vim vim filename 打开vim并创建名为filename的文件 插入命令 ...

  4. 常用 vim 命令总结

    学习 vim ,是需要经常使用的,而这些命令,是我这段时间最常用的命令,很有效率的提高的我的文本编辑效率.----------------------------------------------- ...

  5. Liunx常用运维命令整理记录

    前言 作为后端开发者,掌握一些常用的运维命令也是很有必要的,本文记录常用Liunx运维命令 基本命令 目录切换 cd base-admin/ 切换到当前目录下的base-admin目录 cd .. 切 ...

  6. [转]常用的130个vim命令

    原帖地址:http://www.oschina.net/news/43167/130-essential-vim-commands 从 1970 年开始,vi 和 vim 就成为了程序员最喜爱的文本编 ...

  7. 常用的shell命令整理

    工作快一年了,shell命令也玩了一年了.还是有点积累的,下面是本人常用的. 1.pwd | xargs -i basename {}   获取当前所在目录的名称 2.ps -ef|grep -w   ...

  8. 工作中常用到的Vim命令

    最近工作中需要到linux服务器上更改文件,苦于对vim的各种命令不熟悉,今天特此总结并熟悉一下各种vim命令,好提高工作效率.后期持续更新 vim编辑器个人设置 先复制一份vim配置模板到个人目录下 ...

  9. 常用的Git命令整理

    之前一直忙于项目苦于没有时间总结,今天刚好有时间特来总结一下在工作中常用到的代码版本管理器Git.至于为什么要用Git?Git相比SVN有哪些好处?我就不多说了,前人已经总结的很好.今天主要介绍的是常 ...

  10. linux100day(day3)--常用文本处理命令和vim文本编辑器

    今天,来介绍几个常用文本处理命令和vim文本编辑器 day3--常用文本处理命令和vim文本编辑器 col,用于过滤控制字符,-b过滤掉所有控制字符,这个命令并不常用,但可以使用man 命令名| co ...

随机推荐

  1. 互联网公司五八同城(58.com)研发效能团队建设之路

    这是「二三线中型互联网公司研发效能团队规模.职能划分和优劣势分析」的一个铺垫,一个背景.因为如果不写此篇,大家可能仅得到一些经验总结,恐怕难以获取当时为啥做出那个决定.做决定要有上下文环境,要有场景才 ...

  2. Microsoft Docs & Learn Champion 冠军赛

    2021年个人作为微软MVP,参与了Microsoft Docs & Learn Champion 冠军赛,经过一年的努力,全面宣传了微软的技术. 以下是Microsoft Docs & ...

  3. DWS轻量化更新黑科技:宽表加工优化

    本文分享自华为云社区<GaussDB(DWS)性能调优:宽表加工优化方案>,作者:譡里个檔 . 1. 业务背景 宽表加工性能慢,在Gauss(DWS)中可以使用DWS的轻量化更新的黑科技实 ...

  4. GaussDB(for Redis)双活容灾支持4大应用场景,为业务安全保驾护航

    摘要:GaussDB(for Redis)的双活解决方案,支持同域主备.同域双主.异地主备.异地双主四大应用场景,提供了安全可靠的容灾能力. 一场火灾引发的思考 2021年3月10日,欧洲某云服务提供 ...

  5. TypeScript里string和String,真不是仅仅是大小写的区别

    摘要:通常来说,string表示原生类型,而String表示对象. 本文分享自华为云社区<TypeScript里string和String的区别>,作者:gentle_zhou . 背景 ...

  6. 协同编辑:Google Wave架构分析

    Google Wave的设计初衷是让人们互相发送信息,一起编辑文档,但用户对此感到困惑,很快就以失败告终.Google Wave持续了大约一年时间,于2010年8月被关闭. Wave"领先于 ...

  7. 火山引擎 DataTester 揭秘:字节如何用 A/B 测试,解决增长问题的?

      更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 上线六年,字节跳动的短视频产品--抖音已成为许多人记录美好生活的平台.除了抖音,字节跳动旗下还同时运营着数十款 ...

  8. 从飞书妙记秒开率提升,看火山引擎A/B测试在研发场景的应用

    作者:DataTester   用户体验是决定互联网产品能否长久生存的关键,每一个基于产品功能.使用和外观的微小体验,都将极大地影响用户留存和满意度.   对于企业协作平台飞书而言,用户体验旅程从打开 ...

  9. 在 SDXL 上用 T2I-Adapter 实现高效可控的文生图

    T2I-Adapter 是一种高效的即插即用模型,其能对冻结的预训练大型文生图模型提供额外引导.T2I-Adapter 将 T2I 模型中的内部知识与外部控制信号结合起来.我们可以根据不同的情况训练各 ...

  10. DevEco中被忽略的实用功能

    近期,我一直在业余时间研究纯血鸿蒙(HarmonyOS)App的开发,所使用的IDE是华为官方的DevEco Studio 3.1.1. 随着使用时间的增长,我发现了几个特别容易被忽略,但又特别实用的 ...