程序员基础能力系列(1)——vim快捷键总结
文章目录
- 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 |
文本对象
语法:
- 操作+(内部/外部)+文本对象
- 可视化模式+(内部/外部)+文本对象
功能 | 快捷键 |
---|---|
内部 | 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快捷键总结相关推荐
- 程序员真实故事系列 ---阅读书籍计划
[转帖][程序员真实故事系列@个人特别推荐阅读@] 标 题: 一个人的奋斗历程 这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公 开,希望能够为国内IT的发展尽自己一份微薄的力量 ...
- 雷军:《我十年的程序员生涯》系列之三(失败的大学创业经历)
// 转载自雷军2008年11月10日写的博客.以下内容为博客原文: 不少人想白手起家.空手套狼,在今天的商业社会里这是非常不现实的一件事情.我特别想问:你为什么不能先做能力及资源上的积累后再创业呢? ...
- python ios开发环境_程序员的macOS系列:Mac开发环境配置
1.前言 最近在写<程序员的macOS系列>文章,之前写的第一篇 程序员的macOS系列:精选Mac App,大家都希望楼主尽快更新,结果拖到了2个月后,所以今天终于更新啦!其实macOS ...
- vue函数如何调用其他函数?_好程序员Python教程系列之递归函数与匿名函数调用...
好程序员Python教程系列递归函数与匿名函数调用,函数是Python技术学习中重要的一个环节,深入掌握该阶段的知识内容,对于Python技术能力的提升非常有帮助,这里就针对递归函数与匿名函数两种函数 ...
- Java程序员掉发系列——程序员的成长之路
文章目录 一:Java语言学习 二:J2EE方面 三:理解并能合理运用设计模式 四:注重用户体验 五:自动测试与软件配置管理(SCM)实现 六:熟悉常见的网络通信协议 七:面向市场,永远对新技术保持渴 ...
- 雷军:《我十年的程序员生涯》系列之二(我赚的第一桶金)
// 转载自雷军2008年11月5日写的博客.以下内容为博客原文: <我十年的程序员生涯>系列之二:我写BITLOK的这七年 1989年8月,大二暑假,我和王全国合作写了我的第一个正式作品 ...
- Java程序员掉发系列——程序员必须认识的英文单词(汇总)
原创 Java程序员掉发系列--程序员必须认识的英文单词(汇总) 2019-11-07 09:45:48 程序yang 阅读数 692更多 分类专栏: Java基础知识点(Java SE) 版权声明: ...
- 程序员的能力具体体现在哪些方面
程序员的能力具体体现在哪些方面?我认为应该从这几个方面来分析,包括技术的深度和广度.个人经验.协作能力.学习和总结能力.行动力和执行力.创新能力,这几个方面是相辅相成的,各方面又会相互影响和促进.技术 ...
- 程序员之网络安全系列(六):动态密码
系列目录 程序员之网络安全系列(一):为什么要关注网络安全? 程序员之网络安全系列(二):如何安全保存用户密码及哈希算法 程序员之网络安全系列(三):数据加密之对称加密算法 程序员之网络安全系列(四) ...
最新文章
- linux c 宏判断多条件 #ifdef 和 #if defined 的区别
- php依次替换文本字符串中的图片src地址
- 已解决:sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: 没有那个文件或目录
- 双向链表简单实现及图示
- 2016php技术面试题,一个php的面试题,大家看看
- 运算放大器单电源应用中的使用齐纳二极管偏置方法
- 修改Windows 2003/2008/2012远程桌面服务端口号
- 2017《时间的朋友》思维导图(脑图整理版)
- 禅道程序员的10条原则--转载--为了不忘
- 【比赛分享】互联网新闻情感分析复赛top8(8/2745)解决方案及总结
- Thingsboard 3.1.0 - UI修改
- win7中竟然没有telnet.exe??
- 十款乐高积木虚拟搭建软件,乐高仿真工具,积木模拟搭建耗材统计评估软件...
- 鸡兔同笼:35个头,94只脚,问鸡、兔各多少只?
- 对话OpenCV创始人Gary:“亚洲社会都太重视学历和证书”
- linux reboot 实现流程
- 医学图像论文要点记录
- Caused by: org.springframework.web.client.RestClientException: Error while extracting response for t
- 围棋博弈程序的实现与思考(4)——棋盘的数据结构
- 设置mysql回收空闲链接_mysql 8小时空闲后连接失效的解决
热门文章
- 企微机器人使用及内容配置文档
- 华为rh2288v2服务器系统,华为RH2288H V2服务器外部简介_华为 FusionServer RH2288 V2_服务器评测与技术-中关村在线...
- 网络--keytool自签名SSL证书(免费)以及私钥签名、公钥验签
- Direcxt11教程八之FontEngine(字体实现)
- php 微信分享不显示主题,Wordpress微信分享不显示description和图标
- 如何看待软件开发新技术(转)
- reids3.0安装文档
- linux so 文件 执行,Linux .so库的使用
- 如何学好python
- 基于jsp的酒店管理系统