vim 从嫌弃到依赖(5)——普通模式的一些操作
通过前面几章内容的铺垫,基本已经介绍完了普通模式的大部分内容,按照进度下面会依次介绍插入模式、命令模式、选择模式的一些操作。根据不同模式提供功能的多少和使用频率,篇幅会有长有短。本来这篇文章应该介绍插入模式的。但是我在整理最近写的内容的时候发现我忘记了一些不太常用但是很好用的一些小技巧,所以这篇文章我们还是停留在普通模式下。
快速翻阅文本
跳转光标的操作,之前介绍过 h j k l w等操作,但是在阅读代码的时候,仅仅根据这几个操作,效率着实有点低,即使使用类似 数字 + j/k 的方式来进行行间跳转,效率也一般。这里再介绍几个操作
- ctrl + f: 向下翻页
- ctrl + b: 向上翻页
这里没有什么具体的例子,各位小伙伴只需要找到一个大一点的文件试试就能看到效果

除了使用这种翻到下一页或者上一页的操作之前,还可以相对于光标滚屏
- zt: 将光标所在行移动到窗口顶端
- zb: 将光标所在行移动到窗口底端
- zz: 将光标所在行移动到窗口中央

这个提供两个问题:
- 为什么没有将他们放到前面跟
h j k l这类的操作一块讲呢,当然是因为我忘记了啊。。。。这个理由虽然很重要,但是并不是主要理由。大家可以先猜猜。 - 既然这个操作能大幅度提高我们阅读代码的效率,那为什么使用频率还会这么低呢
有兴趣的小伙伴可以先不看后面的解答,自己操作一下,特别是在认真阅读代码的时候。可能就会有跟我下面说的一样的体验
好了,现在公布我的答案:
- 针对问题一,我的答案是,这几个操作并不属于
motion那一类,小伙伴们在试验的时候可以仔细观察一下光标,光标相对于窗口的位置其实并没有发生变化。 - 大家在阅读代码的时候使用它们会不会觉得跳转太多了,每次跳转都感觉跟前面读过的衔接不上呢。体验非常不好,还不如我一直使用
jjjjjjjjj甚至10j之类的操作。现在我采取折中的办法,就是翻页的快捷键我用,但是我将其映射为了10j(如何映射快捷键以及如何定制自己的vim在后面说)
撤销
撤销在普通模式下使用 u,反撤销使用 Ctrl+r
vim的撤销是撤销上次修改,结合之前介绍的. 命令的部分,我们可以知道上次修改指的是从进入插入模式那一刻起到退回到普通模式为止,进行的一系列的修改。根据这个特征,我们可以很方便的定义撤销哪些内容。例如在写这篇文章的时候我进入插入模式进行编写。然后在需要构思的地方退回到普通模式,想到了一些再次进入插入模式编辑,一旦发现有问题就可以在普通模式下撤销上次的修改。
例如下面的例子:
- 我们先使用
cw替换一个单词,然后删除一行。

- 使用
u恢复上一次的修改,也就是恢复删除的一行

- 使用
ctrl + r执行反撤销,即再次删除上次恢复的一行

u和ctrl+u是操作符,它们符合之前介绍的operat = 数字 + operator的公式,因此如果想要恢复到最开始的状态,可以使用2u

普通模式下对数字文本进行递增递减操作
假设我们这么一段代码
var foo = 5 + i;
现在希望改为
var foo = 10 + i;
我们当然可以使用cw 来删除5,然后在插入模式下写入10。但是这里要介绍一个新的方法——使用 Ctrl + a 来在数字文本上进行递增操作,它也是一个操作符。符合之前的公式。这里假设光标在 5 的位置,然后执行 5 Ctrl+a 来实现将5这个数字文本递增5个的操作

递减操作使用 Ctrl x 。
下面请各位试试这么几种情况:
- 如果光标不在数字位置,执行
Ctrl a会发生什么呢? - 假设代码中有不止一个位置有数字,光标也不在某个具体数字上,执行
Ctrl + a又会发生什么呢? - 当前行没有数字,在后面几行有数字,执行
Ctrl a会发生什么呢?
下面公布答案
如果光标不在数字所在位置,该命令会在本行往后查找第一个出现数字的地方,并将光标跳转到该处,然后执行加1的操作。
花了这么多篇幅总算将普通模式下的一些操作说完了,后面将会进入按照顺序分别讲述,插入模式、选择模式、命令模式。请感兴趣的小伙伴关注一下本专栏,有想要了解的内容也欢迎留言,等我按计划更新完了我想写的内容之后会考虑安排上的,在此谢谢小伙伴的捧场
vim 从嫌弃到依赖(5)——普通模式的一些操作的更多相关文章
- Vim技巧之四大模式_普通模式
Vim技巧之四大模式_普通模式 一见不钟情的普通模式 普通模式以下的强悍操作 什么是操作符 什么是动作命令 误操作怎么办 那种操作更划算 普通模式下的神奇大招 Vim技巧之四大模式_普通模式 众所周知 ...
- 转载:vim的复制,删除,粘贴,块操作以及快速替换功能
掌握如下命令有什么好办法,我可以告诉你唯手熟尔!!多看多练对于VIM而言,复制,删除,粘贴的操作应该是非常多的.这次也做一个总结,关于处理VIM下的复制,删除,粘贴等操作.学会使用帮助文件,命令的帮助 ...
- Vim使用技巧(1) -- 普通模式技巧 【持续更新】
直观的来一张键盘图先 符号快捷键 . //重复上次修改 ^ //光标快速跳转到当前行开头 $ //光标快速跳转到当前行结尾 f{char} //光标快速跳转到当前行下一个{char}字符,{char} ...
- VIM中简化删除,光标移动和查找操作
# 一.命令行模式下简化删除 1. 向后删除单个字符:[x] 2. 向前删除单个字符:[X] 3. 删除从光标开始到单词结尾:[dw] 删除从光标后的2个单词:[d2w] 4. 删除整个单词:[daw ...
- (一)、vim及gvim添加多行注释及删除多行注释块操作
一.添加多行注释 选中要注释的行(连续的多行): Ctrl + v进入块选择模式: 按住I(大写)进入行首插入模式: 插入注释符: 按Esc回到命令模式. 或者 1. 进入命令行模式,按ctrl ...
- vim 让人爱不释手的编辑器之神
VIM 基本介绍 vim诞生已有20多年,它常被人称之为编辑器之神,vim的操作理念可以说是独具一格而又出类拔萃,使用vim能极大的提升文本处理效率,因此熟练掌握vim应该是每个程序员都应该做到的事情 ...
- 玩转Vim 编辑器
一:VIM快速入门 1.vim模式介绍 以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数 ...
- 跟我一起学习VIM
跟我一起学习VIM - The Life Changing Editor 前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教程.虽然准备有限,但分享过程中大家大多带着一种惊叹 ...
- VIM插件攻略
工欲善其事,必先利其器.一个强大的开发环境可以大大提高工作效率.好吧,我知道这是废话...不过,我想一定有很多跟我一样打算进入Linux平台开发的新手,一开始都为找不到一个像Windows下的VS那样 ...
- VIm 一些常用的设置
一些常用的vim设置 以下内容皆来源于网络,感谢原作者.如果引用出处错误,请告知以便修改. 1. vim的几种模式和按键映射 转载自:[1] Map是Vim强大的一个重要原因,可以自定义各种快捷键 ...
随机推荐
- Hugging Face 入选 Time《时代周刊》2023 全球前 100 最具影响力的公司
喜报 Hugging Face 入选 Time<时代周刊>2023 全球前 100 最具影响力的公司 继续为梦想努力 继续为开源贡献 榜单链接: https://time.com/100c ...
- HDU - 2181 :哈密顿绕行世界问题
Descriptions: 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市. Input 前20行的第i行有3个数,表示与第i个 ...
- ZOJ 3537 Cake (凸包 + 区间DP && 最优三角形剖分)
题目链接:Here 题意: 给定 \(n\) 个点的坐标,先问这些点能否组成一个凸包,如是凸包,问用不相交的线来切这个凸包使得凸包只由三角形组成,根据 \(cost_{i, j} = |x_i + ...
- 《IT项目管理知识》出书了,特点:全是干货
大纲目录,及内容如下.本书属于付费内容
- 项目使用 GlobalExceptionHandler 自定义异常 一
博主原创,未经允许不得转载: 每个项目都有自己的一套异常类的定义.总结一下,项目中使用自定义异常比较好的封装. 1.定义项目中统一使用的异常类,用于捕获项目中的自定义异常等: package com. ...
- 13-Verilog for Design
Verilog for Design 设计人员知道写的RTL可以综合成么样的电路 设计人员对于硬件系统进行描述 验证人员搭建验证环境对设计人员描述的硬件系统进行验证 对Standcell,模拟/定制I ...
- 【Gerrit】操作技巧
多笔提交依赖 1. cherry-pick 同步的多笔代码前后有依赖,如第M笔提交是基于第N笔修改的,直接同步过去会有冲突,所以同步M笔提交时需要基于N笔提交,即写入第N笔commit-id 上述填的 ...
- 【rt-thread】board.h 文件中的内存大小配置如何决定
确认RAM种类及性质 使用STM32F429IGT6芯片,根据数据手册RAM大小是256KB,常规RAM是 256 - 64 在board.h中配置内存大小 在board.h中配置256则会出错在接口 ...
- 搭建 github 报错 Permission denied (publickey)
将 key 加入 github 出现如下问题 这是本地仓 user.name user.email 与 github 注册信息不一致造成 将本地仓 user 信息与 github 修改一致,出现如下问 ...
- jenkins构建报错: Send build artifacts over SSH' changed build result to UNSTABLE
原因包括: ssh配置的用户没有相关的权限. 最好是配置root用户