编辑器之神——Vim之常用快捷键分类整理

Vim起源

  Vim是从vi发展出来的一个文本编辑器,vi(visual editor)是unix/linux操作系统中最经典的文本编辑器,vim原来的名字叫做vi imitation(vi模拟器),目的是完全复制vi的功能,为开源和在类unix系统中移植而生,在成功被移植到unix之后名字变成了vi improved(vi改进版)。
  Vim创造了开源世界“协作精神”和“自由软件持续改进”的奇迹。成为了自由软件历史上不朽的“丰碑”。后世为了纪念这场伟大的编辑器开源运动,给vim封了神——“编辑器之神”。

有一款与Vim并称的编辑器Emacs,远古时代诞生的始祖软件很多都是用Emacs编辑器创造的,Emacs被称作“神之编辑器”,为了纪念使用Emacs写C的大神们。

  最近涉及了很多Linux下的工作,使用了一段时间的Vim,虽然Vim的学习曲线陡峭,但是奇异的操作方式在熟悉了之后带来的是对鼠标依赖的解除,用起来还是很带感的,虽然快捷键非常多,但快捷键的设定富有逻辑性,理解了之后要在Vim下生存并不是很困难的事,存活下来之后就是日常使用增加熟练度。
  整理了常用的Vim快捷键分类如下。

1 模式切换

  • esc:normal常规模式;
  • i:insert插入模式;
  • v:visual可视模式;
  • ctrl+v:visual block可视块模式
  • : ——command命令模式;
  • r:replace替换模式。

2 启动vim

  • vim + file: 打开文件,从文件的末尾开始;
  • vim +num file: 打开文件,从第num行开始;
  • vim +/string file: 打开file,并将光标停留在第一个找到的string上。
  • vim -c cmd file: 在打开文件前,先执行指定的命令;
  • vim -R file: 以只读的方式打开文件,但可以强制保存;
  • vim -M file: 以只读的方式打开文件,不可以强制保存;
  • vim -r file: 恢复上次异常退出的文件;

3 文档操作

  • :——进入命令模式

  • :!——调用shell命令的前缀“!”,比如:!pwd可以显示当前路径

  • :w ——保存修改;

  • :q[uit] ——退出当前窗口(CTRL-w q);

  • :q!——强制退出(可在不保存的情况下退出)

  • :wq ——保存并退出(ZZ或:x);

  • :saveas newfilename ——另存为;

  • :e ——重新加载当前文档;

  • :f或ctrl+g ——显示文档名,是否修改,和光标位置。

  • :help ——查看帮助

4 移动光标

4.1 基本移动(文档方向=文字输入方向:后->前)

  • h,j,k,l:左(退格),上,下,右(空格)移动光标
  • b:移动到上一个单词的开头;
  • B:移动到上一个单词的开头(忽略标点);
  • w:移动到下一个单词的开头;
  • W:移动到下一个单词的开头(忽略标点);
  • e:移动到单词结尾(如果已在结尾则移动到下一单词结尾);
  • E:移动到单词结尾(忽略标点);
  • ge:移动到上一个单词结尾;
  • gE:移动到上一个单词结尾(忽略标点);
  • %:移动到配对的括号
  • (:上移一句;
  • ):下移一句;
  • {:移动到上一个空行,段落以空行为间隔;
  • }:移动到下一个空行;
  • [[:将光标移动到上一个代码段(或函数)的行首;
  • ]]:将光标移动到下一个代码段(或函数)的行首;
  • +或Enter: 把光标移至下一行第一个非空白字符;
  • -: 把光标移至上一行第一个非空白字符;
  • f+“单字符”:行内移动到下一个目标,使用“,”和“;”可以沿上下继续搜索;
  • F+“单字符”:行内移动到上一个目标,使用“,”和“;”可以沿上下继续搜索;
  • t+“单字符”:行内移动到下一个目标前,使用“,”和“;”可以沿上下继续搜索;
  • T+“单字符”:行内移动到上一个目标后,使用“,”和“;”可以沿上下继续搜索;

可以在操作前加上数字,表示操作的重复次数:
[n]+“移动操作”——操作前加上“数字”表示重复次数,3h表示左移三次,3fx表示移到后续的第3个x的位置;
[n]+“i”+“输入”——重复多次输入,3igo表示输入gogogo。

  • 0:移动到行首
  • ^:移动到行首(非空白字符)
  • $:移动到行尾
  • H:移动到屏幕上方(high)
  • M:移动到屏幕中间(middle)
  • L:移动到屏幕下方(low)
  • gg:移动到文件开头
  • G:移动到文件结尾
  • n| ——移动到第n列
  • nG或:n ——移动到第n行

4.2 翻屏(不修改代码)

  • ctrl+b: 向上翻一屏;
  • ctrl+f:向下翻一屏;
  • ctrl+u:向上翻半屏;
  • ctrl+d:向下翻半屏;
  • ctrl+e:向下滚动一行;
  • ctrl+y:向上滚动一行;
  • zz:将当前光标所在行居中;
  • zt:将当前光标所在行置顶;
  • zb:将当前光标所在行置底;

4.3 标记(导航)

可以用Ctrl+oCtrl+i进行后退和前进。

m{a-z}: 标记光标所在位置,局部标记,只用于当前文件;
m{A-Z}: 标记光标所在位置,全局标记,标记后,退出Vim, 重新启动,标记仍有效;
`{a-z}: 移动到标记位置;
`{0-9}:回到上[1-10]次关闭vim时最后离开的位置;

``: 移动到上次编辑的位置;
`": 移动到上次离开的地方;
`.: 移动到最后改动的地方;

:marks ——显示所有标记;
:delmarks a b ——删除标记a和b;
:delmarks a-c ——删除标记a、b和c;
:delmarks a c-f ——删除标记a、c、d、e、f;
:delmarks! ——删除当前缓冲区的所有标记;

:help mark-motions ——查看更多关于mark的知识。

上述操作中,出现`(点号)的地方也可以使用’(单引号),使用点号可以精确到列,使用单引号只精确到行

5 插入

所有的插入操作都会自动进入i插入模式

5.1 基本插入

  • i:光标前插入;
  • I:当前行第一个非空字符前插入
  • a: 在光标后插入;
  • A: 在当前行最后插入;
  • o: 在下面新建一行插入;
  • O: 在上面新建一行插入;
  • :r filename在当前位置插入另一个文件的内容;
  • :[n]r filename在第n行插入另一个文件的内容;
  • :r !date ——在光标处插入当前日期与时间;
  • :r !command ——同理,可以将其它shell命令的输出插入当前文档。

5.2 改写插入

  • [n]cc:改写光标所在行;
  • [n]s: 以输入的文本替代光标之后1(n)个字符,相当于c[n]l;
  • [n]S: 删除指定数目的行,并以所输入文本代替之,相当于[n]cc;

c[n]+移动操作:改写对应范围的内容([n]+操作——在第4节的移动操作里已经介绍过了):

  • c[n]h:改写光标左边1(n)个字符;
  • c[n]l: 改写光标右边1(n)个字符。
  • c[n]k: 改写光标上n行(包含当前行)的内容;
  • c[n]j:改写光标下n行(包含当前行)的内容;
  • c[n]b:改写光标位置到上n个单词的开头位置的内容;
  • c[n]w:改写光标位置到下n个单词的开头位置的内容;
  • c[n]e:改写光标位置到下n个单词的结尾位置的内容;
  • c$: 改写从光标当前位置到行尾;
  • c0: 改写从光标当前位置到行首;
  • cgg: 改写光标以上的所有行;
  • cG: 改写光标以下的所有行。
  • r+“字符”:替换当前位置的字符
  • R:进入replace模式,输入的内容会覆盖当前位置

5.3 拼接行

  • J:将下一行拼接到当前行末尾

5.4 多行注释

通过visual block可视块模式可以使用列选中功能,从而在想要的位置进行多行注释。

在行首插入注释符:

按ctrl+v进入visual block可视块模式;
利用h、j、k、l方向键调整需要注释多少行;
再按I(大写字母i,shift+i)进入插入模式,并将光标移至所有选中列的行首;
输入代表注释的符号“//或者#;(在这一步只会在选中的第一行出现注释符号)
再次按ESC键,等待一会儿即可完成多行注释。(此时才会在所有选中行出现注释符号)

在选中区域使用注释符替换:

按ctrl+v进入visual block可视块模式;
利用h、j、k、l方向键调整需要替换成注释符的区域;
再按s进入插入模式,并将光标选中的区域清空;
输入注释符“//或者#;(在这一步只会在选中的第一行出现注释符)
再次按ESC键,等待一会儿即可完成多行注释。(此时才会在所有选中行出现注释符)

需要删除注释的时候,同样通过列选中功能,选中所有的注释之后,d或者x即可。(d和x在下面会介绍)

6 删除

  • [n]dd:删除1(n)行;

d[n]+移动操作:删除对应范围的内容,d操作删除的内容会保存到vim寄存器,相当于剪切:

  • d[n]h: 删除光标左边1(n)个字符。
  • d[n]l: 删除光标右边1(n)个字符。
  • d[n]k: 删除光标上n行(包含当前行)的内容;
  • d[n]j: 删除光标下n行(包含当前行)的内容;
  • d[n]b:删除光标位置到上n个单词的开头位置的内容;
  • d[n]w:删除光标位置到下n个单词的开头位置的内容;
  • d[n]e:删除光标位置到下n个单词的结尾位置的内容;
  • d$或D: 删除从光标当前位置到行尾的内容;
  • d0: 删除从光标当前位置到行首的内容。
  • dgg: 删除光标以上的所有行;
  • dG: 删除光标以下的所有行;
  • :m,nd ——删除m行到n行的内容。

在vim里,d操作删除的字符也会放入寄存器供粘贴时使用,所以也等同于剪切操作。

7 剪切

  • [n]x: 剪切光标右边n个字符,相当于d[n]l;
  • [n]X: 剪切光标左边n个字符,相当于d[n]h。

8 复制

  • y: 复制在可视模式下选中的文本;
  • yy或Y: 复制整行文本;

y[n]+移动操作:复制对应范围的内容:

  • y[n]h: 复制光标左边1(n)个字符。
  • y[n]l: 复制光标右边1(n)个字符。
  • y[n]k: 复制光标上n行(包含当前行)的内容;
  • y[n]j: 复制光标下n行(包含当前行)的内容;
  • y[n]b:复制光标位置到上n个单词的开头位置的内容;
  • y[n]w:复制光标位置到下n个单词的开头位置的内容;
  • y[n]e:复制光标位置到下n个单词的结尾位置的内容;
  • y$: 复制从光标当前位置到行尾的内容;
  • y0: 复制从光标当前位置到行首的内容;
  • ygg: 复制光标以上的所有行;
  • yG: 复制光标以下的所有行;
  • :m,ny ——复制m行到n行的内容。

9 粘贴

  • p: 在光标之后粘贴;
  • P: 在光标之前粘贴。

10 选择

  • v:进入visual模式,可以执行选择操作
  • e+“移动操作”:选择范围,选择完成后可以执行c、d、y、p等操作

11 寄存器

复制粘贴功能需要用到寄存器,使用的是vim自身的寄存器,所有只能在vim中使用
要关联系统剪贴板,需要vim的clipboard功能的支持
使用“vim --version | grep clipboard”查看
clipboard之前是+表示支持,-表示不支持
安装gvim或者vim-gnome可以支持剪贴板

:reg 显示所有寄存器的内容
"" ——不加寄存器索引时,默认使用的寄存器,""yy把当前行的内容放入默认寄存器。
"+ ——系统剪贴板,"+yy把当前行的内容放入系统剪贴板,"+p从系统剪贴板复制到vim。

12 查找与替换

查找

*——向下查找当前光标所在单词,可继续使用n向后查,N向前查
#——向上查找当前光标所在单词,可继续使用n向后查,N向前查
/+“字符串”:向下查找字符串,可继续使用n向后查,N向前查
?+“字符串”:向上查找字符串,可继续使用n向后查,N向前查

替换

:s/old/new ———用new替换当前行第一个old。
:s/old/new/g ——用new替换当前行所有的old。
:n1,n2s/old/new/g - 用new替换文件n1行到n2行所有的old。
:%s/old/new/g - 用new替换文件中所有的old。
:%s/^/xxx/g - 在每一行的行首插入xxx,^表示行首。
:%s/$/xxx/g - 在每一行的行尾插入xxx,$表示行尾。

所有替换命令末尾加上c,每个替换都将需要用户确认。 
如:%s/old/new/gc,加上i则忽略大小写(ignore)。

13 重复操作

. ————(英文句号)重复执行上一次的操作

例如你想手动将文件中所有的old转换为new,只需要:

进入普通模式,将光标移到old下

  1. 敲击*查找old
  2. 敲击cw替换old,输入new
  3. 按ESC继续进入普通模式
  4. 敲击n查找下一个old
  5. 敲击.重复执行替换(重复执行的是步骤2中的输入new操作)
  6. 重复步骤4、5即可

14 撤销、重做

  • u:撤销
  • ctrl+r:重做

15 锁屏、解锁

  • ctrl+s:锁屏
  • ctrl+q:解锁
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vim编辑器有很多快捷键,以下是一些常用的分类快捷键: 1. 模式切换:可以使用以下快捷键来在不同的编辑模式之间切换: - normal常规模式:按下esc键 - insert插入模式:按下i键 - visual可视模式:按下v键 - visual block可视块模式:按下ctrl v键 - command命令模式:按下冒号(:)键 - replace替换模式:按下r键 2. 启动vim:可以使用以下命令来启动vim编辑器并打开文件: - vim file:打开文件,默认从文件的末尾开始 - vim num file:打开文件,从第num行开始 - vim /string file:打开文件,并将光标停留在第一个找到的string上 - vim -c cmd file:在打开文件前,先执行指定的命令 - vim -R file:以只读的方式打开文件,但可以强制保存 - vim -M file:以只读的方式打开文件,不可以强制保存 - vim -r file:恢复上次异常退出的文件 以上是一些常用vim编辑器快捷键,它们可以帮助你更加高效地使用vim进行文本编辑。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [编辑器之神——Vim常用快捷键分类整理](https://blog.csdn.net/SeeDoubleU/article/details/121257937)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [一张图让你学会Vim编辑器快捷键](https://download.csdn.net/download/weixin_38643141/12842120)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值