原生Vim中的高效操作

Vim中有些按键能极大的提高幸福度,减少用脑,减少肌肉劳损,笔者用了一年Vim+vscode在这里小结下这段时间最常用的按键。(除了h,j,k,l等最常用最基本的)

文章目录

  • 原生Vim中的高效操作
  • 一、用区间选择减少移动:`i`(in) 和 `a`(around)
  • 二、快捷键查找光标下关键字:`#` 和 `*`
  • 三、迅速找到类名:`[{` 和 `]}`
  • 四、指定位置插入:`A`,`I`,`C`,`S`
  • 五、覆盖粘贴当前单词 `viwp`
  • 六、多行插入相同内容:`数字+o`
  • 七、跳转到上次位置:`ctrl-o`,`ctrl-i`
  • 八、快速复制寄存器内容到命令行:`ctrl-r + "`
  • 九、命令行查找历史命令:`ctrl-f`

一、用区间选择减少移动:i(in) 和 a(around)

区间选择,我最常用最喜欢的按键。需要和y,c,d搭配使用。尤其是当光标处于单词中间,要想delete这个单词,你可能会用bdw三个按键。先back到单词开始,再delete word,大脑要停顿一下,看光标位置再思考三个键。但有了inaround只要光标在单词范围内,按下diw即可。(或daw如果想删除空格)。

你可能不make sense,两方案都用了三个按键,只是少了用脑。但如果一段内容在<>,(),{}当中,就需要来到开始位置切换到visual模式控制光标选择括号中的内容… bla~bla,烦死了。但现在有了i),只要ci)di)yi)就能直接修改,删除,复制整个()里的内容,对于a也是相似的。

举一个模板的例子:

template <typename T, typename U>

如果没有i>,需要移动到开始位置然后用t去选择,浪费了脑力和肌肉。现在只要yi>就能复制typename T, typename U
进一步,想连同复制<>,ya>ya<就能复制整个<typename T, typename U>
前提是光标在<>之间。

再举一个代码块的例子:

{if (loopInBlock >= MAX_LOOP_IN_BLOCK){raise("It is max loop now");}
}

可以用ya}复制整个代码块,只要光标在代码块中,vim会自动匹配括号的层次。(注意为character-wise)

二、快捷键查找光标下关键字:#*

笔者曾经总用/输入很长的字符串查找,但自从知道了#*就很少直接输入字符串了。#意思是向上查找当前光标下的word*则是向上查找。也可以配合n重复上次查找和N反向重复上次查找。

三、迅速找到类名:[{]}

试想有一个很长的类,好几百行,屏幕放不下。光标在类当中,想迅速跳转到类的名字看看父类是什么,那就要用{[,意思是跳转到最近的匹配的{

四、指定位置插入:AICS

这四个键太喜欢了,效率非常高,C最常用。意思是:
A转到行尾并插入,I转到行首并插入,C删除到行尾并插入,S删除行并插入。
不知道这四个键,那只有:$a,0i,c$,ddO,多了脑力和手指移动。

五、覆盖粘贴当前单词 viwp

如果刚开始用vim不久,可能想怎么replace一个单词,可能要先daw删除当前单词,然后看一下要粘贴的内容在哪个寄存器(daw改变了寄存器),然后p"1粘贴。(好烦)
一旦进入visual模式,replace就方便很多。按v进入visual,iw选中单词,然后p黏贴就好了。

六、多行插入相同内容:数字+o

写一个enum类,他们的前缀可能是一样的,可能要不停的黏贴黏贴…有了多行插入只需要数字+o输入完毕后ESC就能发现内容重复了多行。(实际上是重复了多次命令)

七、跳转到上次位置:ctrl-octrl-i

跳转到上次阅读代码的位置,非常常用。ctrl-o跳转到上次位置,ctrl-i返回

八、快速复制寄存器内容到命令行:ctrl-r + "

常用,尤其是配合/查找%s字符串替换,:find查找文件。ctrl-r之后通过"选择寄存器,将寄存器的内容yank到命令行中。

九、命令行查找历史命令:ctrl-f

常用于查找debug print, 输入了多个命令,通过ctrl-f会产生历史命令的quickfix。

笔者由于是vscode+vim的混合环境,所以一般只用vim编辑,不在project层次使用,因此这些按键在这种程度上就够用了。有更好的按键和使用情景欢迎分享~~

原生Vim中的高效操作相关推荐

  1. vim关闭下一行也是注释_在Vim中注释/取消注释行的快速方法是什么?

    我有一个在vi中打开的Ruby代码文件,其中的行注释为#: class Search < ActiveRecord::Migration def self.up # create_table : ...

  2. python中tolist_高效的张量操作 Pytorch中就占5种

    PyTorch是一个基于Python的科学包,用于使用一种称为张量的特殊数据类型执行高级操作. 虽然也有其他方式可以实现相同的效果,但今天分享的这5个操作更加方便高效,值得一试. 什么是张量? 张量是 ...

  3. linux vi 选中某一列,在 Vim 中进行文本选择操作和使用标志

    基于图形界面的文本或源代码编辑器,提供了一些诸如文本选择的功能.我是想说,可能大多数人不觉得这是一个功能.不过像 Vim 这种基于命令行的编辑器就不是这样.当你仅使用键盘操作 Vim 的时候,就需要学 ...

  4. lambda在python_在Python中使用lambda高效操作列表的教程

    介绍 lambda Python用于支持将函数赋值给变量的一个操作符 默认是返回的,所以不用再加return关键字,不然会报错 result = lambda x: x * x result(2) # ...

  5. Fluid — 云原生环境下的高效“数据物流系统”

    作者 | 顾荣  南京大学 PASALab (注:本文基于作者公开演讲报告内容整理完成) _来源 | _阿里巴巴云原生公众号 得益于计算成本低.易于扩展.部署便捷.运维高效等多方面的优势,云计算平台吸 ...

  6. 如何为云原生应用带来稳定高效的部署能力?

    作者 | 酒祝 阿里云技术专家.墨封 阿里云开发工程师 直播完整视频回顾:https://www.bilibili.com/video/BV1mK4y1t7WS/ 关注"阿里巴巴云原生&qu ...

  7. openresty开发系列27--openresty中封装redis操作

    openresty开发系列27--openresty中封装redis操作 在关于web+lua+openresty开发中,项目中会大量操作redis, 重复创建连接-->数据操作-->关闭 ...

  8. 什么是在Vim中评论/取消注释行的快速方法?

    我在vi中打开了一个Ruby代码文件,有一些注释掉了# : class Search < ActiveRecord::Migrationdef self.up# create_table :se ...

  9. 大话云原生数据库中的存算分离

    目录 前言 传统数据库的局限 可用性低.资源利用率低 扩展成本高.运维成本高 存算分离带来的技术革命 谷歌三架马车奠定理论基础 Hadoop--存算分离的大数据架构 为什么云原生数据库中需要存算分离? ...

  10. 是程序员都可能用到版本控制,如何使用它?如何在Vim中使用Git?

    版本控制是本章的重要内容之一.虽然本书选择的版本控制系统是Git,但是本章的知识也适用于其他版本控制系统.本章只提供了一节内容简略地介绍版本控制,如果读者想要更深入地了解,还需要有针对性地阅读相关材料 ...

最新文章

  1. python request timeout是什么意思_request timeout是什么意思
  2. Git版本服务器搭建(CentOS)--gitblit
  3. c类网络使用子网掩码有无实际意义_弄懂IP系列(2)(刘晶作品)|子网掩码到底是啥?...
  4. 解决go包管理代理网址无法访问:proxy.golang.org 换成goproxy.cn
  5. oracle 01589,ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
  6. IOS 文本文字下面添加下划线
  7. java修饰方法_java接口中方法、属性修饰符详解
  8. DOM 事件深入浅出(一)
  9. 枚举算法:最小连续n个合数。试求出最小的连续n个合数(其中n是键盘输入的任意正整数)。
  10. SCPPO(二十八):通过JS实现自动刷新进度
  11. 电脑从硬盘启动计算机,电脑怎么设置第一启动项为硬盘
  12. 《精通软件性能测试与LoadRunner最佳实战》—第2章2.9节运行结果分析
  13. SNAP Java API处理Sentinel-1数据
  14. wamp5工具安装介绍
  15. OpenCV之VideoCapture的使用——打开网络摄像头/图像序列
  16. 【HDU 5755】Gambler Bo(高斯消元)
  17. 区块链技术的风险!(转载)
  18. java实现高德地图app_入门指南-高德地图手机版 | 高德地图API
  19. 网络安全- 专访丨互联网安全城市巡回赛冠军肖策:“大满贯”背后的秘密
  20. Exercise – SE Technical Boot Camp Hands-on Exercises

热门文章

  1. 互联网公司社会招聘Java工程师面试题整理(1)
  2. 虚拟机上安装CentOS7及相关配置
  3. 在linux的centos平台下安装vcs教程
  4. 细说Linux——文件系统管理
  5. Web项目:公民基本道德规范宣传页设计
  6. 《晋升:从项目经理到年薪百万的职场精英》-肖杨
  7. 12.MYSQL熟练使用存储过程
  8. vue项目如何通过电脑连接手机热点在手机上访问
  9. 2021千瓜美食行业数据报告(小红书平台)
  10. 宝贝成长记事(121)