文章目录

  • Normal模式
  • Insert模式
  • vim的语法
  • 可视化模式
  • 文本对象
  • 移动效率
  • 搜索
  • 数字和点
  • 多文件间的跳转
  • 处理包裹字符串
  • 替换字符串
  • 悬浮显示&大小写&注释
  • 窗口管理
  • 删除函数
  • 掌握宏

Vim是一种可配置的文本编辑器。相比于鼠标操作,vim只依赖于键盘。这一特点使得vim收到非常多程序员的青睐。使用vim可以一定程度提高程序员的开发效率,可以说是程序员必备的技能之一了。本文总结了vim的常用快捷键,当然,一部分快捷键进行了调整,并非vim的默认快捷键。

首先,你需要在vscode中安装vim插件。

Normal模式

功能 快捷键
光标向上 k
光标向下 j
光标向左 h
光标向右 l
移动到行首(含空格) 0
移动到行首(不含空格) H(代替^)
移动到行尾(含空格) $
移动到行尾(不含空格) L(代替g_)
复制当前行 yy
粘贴 p
删除当前行 dd
删除光标字符 x
删除光标前的字符 X
删除光标字符进入insert s
删除光标所在行进入insert S
替换一个字符 r
替换多个字符 R
undo u
redo ctrl+r

Insert模式

功能 快捷键
进入insert模式(光标前) i
进入insert模式(光标后) a
进入insert模式(行首) I
进入insert模式(行尾) A
进入insert模式(行前) O
进入insert模式(行后) o

vim的语法

操作+动词

操作包括:

功能 快捷键
复制 y
删除 d
删除并进入insert模式 c

动词包括:

功能 快捷键
移动到下一个单词的开头 w
移动到上一个单词的开头 b
移动到下一个单词的结尾 e
移动到上一个单词的结尾 ge

组合使用:

功能 快捷键
删除当前的单词 bcw
在单词结尾出添加 ea

可视化模式

语法:选中+操作

功能 快捷键
字符 v
V
ctrl+v
退出可视化模式 esc / ctrl+[
切换可视区的光标位置 o
跨多行编辑 ctrl+v+j/k+A/I
复制/粘贴 可视化区域+ctrl+c/v

文本对象

语法:

  1. 操作+(内部/外部)+文本对象
  2. 可视化模式+(内部/外部)+文本对象
功能 快捷键
内部 i
外部 a

文本对象:

对象 快捷键
单词 w
() (/)
() b
[] [/]
{} {/}
{}块 B
XML标签 t
‘’
“” "
`` `
句子 s
段落 p
删除一个函数参数 daa
修改一个函数参数 cia

移动效率

功能 快捷键
向下滚动一屏 ctrl+f
向上滚动一屏 ctrl+b
向下滚动一行 ctrl+e
向上滚动一行 ctrl+y
配置(向下滚动5行) shift+j
配置(向下滚动5行) shift+k
将当前行置于屏幕中央 zz
跳到文件首 gg
跳到文件尾 G
跳到指定行数 行数+gg/G

搜索

单行搜索

功能 快捷键
正向移动到下一个字符所在处 f
反向移动到上一个字符所在处 F
正向移动到下一个字符所在处的前一个字符处 t
反向移动到上一个字符所在处的后一个字符处 T
重复上次的字符查找指令 ;
反方向查找上次的字符查找指令 ,

使用技巧:
查询的时候用 f,删除的时候结合 c/d 使用 t

全局搜索

功能 快捷键
模糊搜索,向后查 /+字符+回车
模糊搜索,向前查 ?+字符+回车
向后查 n
向前查 N
查看搜索历史 /+方向键+回车
精确查找(区分大小写),向下查 *
精确查找(区分大小写),向上查 #

数字和点

语法:数字+操作+范围 / 操作+数字+范围

点:重复上一次的修改(增加、删除、修改)

功能 快捷键
行尾加分号 jA; 通过 . 来重复操作
查找手动替换 /+字符+n+cw+新字符 通过 . 来重复操作

多文件间的跳转

使用场景:写代码过程中,需要去头部进行引用,可暂时标记当前行,gg回头部加引用后,快速跳转回标记处

功能 快捷键
单文件行标记 m+小写字母
单文件跳转到指定行 '+小写字母
单文件跳转到指定标记处 `+小写字母
多文件行标记 m+大写字母
多文件跳转到指定行 '+大写字母
多文件跳转到指定标记处 `+大写字母
跳转到变量声明和函数定义/引用 gd + jk(上下切换) + l(跳转)
向前跳转 ctrl+o
向后跳转 ctrl+i
查看跳转记录 :jumps

会被记录的跳转包括:文件间跳转/gg/G/标记跳转/gd///?/n/N

处理包裹字符串

功能 快捷键
替换包裹字符 cs+当前包裹字符+替换后的包裹字符
添加包裹字符 ys+iw+包裹字符
删除包裹字符 ds+包裹字符
可视化模式下添加包裹字符 S+包裹字符

替换字符串

公式:

:[range]s/{pattern}/{string}/[flags]

range 快捷键
$ 到尾部
% 全文
number,number 行范围
flags 快捷键
g 全部替换
c 对话框操作

pattern:正则表达式

例如,替换 h1abc 和 h2abc 可以如下操作

h\dabc 或者 h[12]abc

可视化模式下 range已经有了,不需要重新输入,其他操作一致

gb,多选当前字符,键入c,同时编辑

悬浮显示&大小写&注释

功能 快捷键
悬浮显示 gh
normal小写 gu
normal大写 gU
可视化小写 u
可视化大写 U
大小写互换 ~
单行注释 gc
多行(单词)注释 gC

窗口管理

功能 快捷键
新建窗口 ctrl+w+v
窗口切换 ctrl+w+hjkl/w
关闭窗口 ctrl+w+c
关闭其他窗口 ctrl+w+o

删除函数

功能 快捷键
匹配括号 %
基于缩进删函数 d+a+I
基于段落删函数 d+a+p

掌握宏

功能 快捷键
开始录制宏 q+字符(寄存器名称)
结束录制 q
查看录制好的宏 :+reg+空格+字符
使用宏 @+字符(寄存器名称)
调用最后一次执行的宏 @@
重复执行宏 数字+@+字符
追加宏 q+大写的字符
修改宏 “+字符+p(从寄存器中把宏粘贴出来) 修改后,”+字符+yy(复制回寄存器)

程序员基础能力系列(1)——vim快捷键总结相关推荐

  1. 程序员真实故事系列 ---阅读书籍计划

     [转帖][程序员真实故事系列@个人特别推荐阅读@] 标 题: 一个人的奋斗历程 这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公 开,希望能够为国内IT的发展尽自己一份微薄的力量 ...

  2. 雷军:《我十年的程序员生涯》系列之三(失败的大学创业经历)

    // 转载自雷军2008年11月10日写的博客.以下内容为博客原文: 不少人想白手起家.空手套狼,在今天的商业社会里这是非常不现实的一件事情.我特别想问:你为什么不能先做能力及资源上的积累后再创业呢? ...

  3. python ios开发环境_程序员的macOS系列:Mac开发环境配置

    1.前言 最近在写<程序员的macOS系列>文章,之前写的第一篇 程序员的macOS系列:精选Mac App,大家都希望楼主尽快更新,结果拖到了2个月后,所以今天终于更新啦!其实macOS ...

  4. vue函数如何调用其他函数?_好程序员Python教程系列之递归函数与匿名函数调用...

    好程序员Python教程系列递归函数与匿名函数调用,函数是Python技术学习中重要的一个环节,深入掌握该阶段的知识内容,对于Python技术能力的提升非常有帮助,这里就针对递归函数与匿名函数两种函数 ...

  5. Java程序员掉发系列——程序员的成长之路

    文章目录 一:Java语言学习 二:J2EE方面 三:理解并能合理运用设计模式 四:注重用户体验 五:自动测试与软件配置管理(SCM)实现 六:熟悉常见的网络通信协议 七:面向市场,永远对新技术保持渴 ...

  6. 雷军:《我十年的程序员生涯》系列之二(我赚的第一桶金)

    // 转载自雷军2008年11月5日写的博客.以下内容为博客原文: <我十年的程序员生涯>系列之二:我写BITLOK的这七年 1989年8月,大二暑假,我和王全国合作写了我的第一个正式作品 ...

  7. Java程序员掉发系列——程序员必须认识的英文单词(汇总)

    原创 Java程序员掉发系列--程序员必须认识的英文单词(汇总) 2019-11-07 09:45:48 程序yang 阅读数 692更多 分类专栏: Java基础知识点(Java SE) 版权声明: ...

  8. 程序员的能力具体体现在哪些方面

    程序员的能力具体体现在哪些方面?我认为应该从这几个方面来分析,包括技术的深度和广度.个人经验.协作能力.学习和总结能力.行动力和执行力.创新能力,这几个方面是相辅相成的,各方面又会相互影响和促进.技术 ...

  9. 程序员之网络安全系列(六):动态密码

    系列目录 程序员之网络安全系列(一):为什么要关注网络安全? 程序员之网络安全系列(二):如何安全保存用户密码及哈希算法 程序员之网络安全系列(三):数据加密之对称加密算法 程序员之网络安全系列(四) ...

最新文章

  1. linux c 宏判断多条件 #ifdef 和 #if defined 的区别
  2. php依次替换文本字符串中的图片src地址
  3. 已解决:sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: 没有那个文件或目录
  4. 双向链表简单实现及图示
  5. 2016php技术面试题,一个php的面试题,大家看看
  6. 运算放大器单电源应用中的使用齐纳二极管偏置方法
  7. 修改Windows 2003/2008/2012远程桌面服务端口号
  8. 2017《时间的朋友》思维导图(脑图整理版)
  9. 禅道程序员的10条原则--转载--为了不忘
  10. 【比赛分享】互联网新闻情感分析复赛top8(8/2745)解决方案及总结
  11. Thingsboard 3.1.0 - UI修改
  12. win7中竟然没有telnet.exe??
  13. 十款乐高积木虚拟搭建软件,乐高仿真工具,积木模拟搭建耗材统计评估软件...
  14. 鸡兔同笼:35个头,94只脚,问鸡、兔各多少只?
  15. 对话OpenCV创始人Gary:“亚洲社会都太重视学历和证书”
  16. linux reboot 实现流程
  17. 医学图像论文要点记录
  18. Caused by: org.springframework.web.client.RestClientException: Error while extracting response for t
  19. 围棋博弈程序的实现与思考(4)——棋盘的数据结构
  20. 设置mysql回收空闲链接_mysql 8小时空闲后连接失效的解决

热门文章

  1. 企微机器人使用及内容配置文档
  2. 华为rh2288v2服务器系统,华为RH2288H V2服务器外部简介_华为 FusionServer RH2288 V2_服务器评测与技术-中关村在线...
  3. 网络--keytool自签名SSL证书(免费)以及私钥签名、公钥验签
  4. Direcxt11教程八之FontEngine(字体实现)
  5. php 微信分享不显示主题,Wordpress微信分享不显示description和图标
  6. 如何看待软件开发新技术(转)
  7. reids3.0安装文档
  8. linux so 文件 执行,Linux .so库的使用
  9. 如何学好python
  10. 基于jsp的酒店管理系统