深入帮助

回忆上节课内容

  • 上次制作了 oeasy.txt
  • vim oeasy.txt 打开了文件
  • :f[ile] 查询了当前文件 的信息
  • 正常模式或命令模式(Normal mode) 切换到 命令行模式 (Command-Line mode) 要使用 :
  • 命令行模式(Command-Line mode) 按 回车 执行命令,执行完了就回来了

  • 我们已经可以在两个模式(命令模式底线命令模式 模式)之间切换
  • 我们这次想要了解更多的帮助信息

运行帮助

vim 中运行 :help

  • 我们可以使用 h、j、k、l 进行移动
  • 方向如上图所示
  • 这个时候 hjkl 不是输入字符而是移动方向的命令
  • 不光是这四个字符
  • 所有的键盘字符都对应命令
  • 这就是为什么默认的正常模式 (Normal mode) 也被称作命令模式

命令模式

  • 命令模式可以直接按键来执行命令
  • 比如移动
  • 还有很多各种命令

  • 命令模式 (Normal mode) 和 命令行模式 (Command-Line mode) 不同

    • 命令模式 (Normal mode) 直接按键执行
    • 而命令行模式 (Command-Line mode) 在底部行输入命令后按 回车 执行
  • 模式不同,对应的操作不同
  • 这也是 vim 上手最难的原因

学习曲线

  • vim 是公认的非常陡峭的学习曲线
  • 不过突破上去了之后,效率是相当高的
  • 多易必多难
  • 最开始看起来容易的东西,比如 ide
  • 什么都给你配好了,但是你对于底层完全失去了理解和控制,到最后反而是最难
  • 我们一点点翻越这陡峭的山,征服 vim

但是为什么是 h、j、k、l 对应方向呢?

起源

  • vim 起源于 vi
  • vi 早期是 Bill Joy 在 adm3A 上制作和使用的
  • adm3A 是一台终端
  • adm3A 的键盘没有方向键
  • 所以这个习惯就延续的到了今天️

  • 我们可以看到上图键盘上的 h、j、k、l 按键上面对应的方向

现在还需要用 h、j、k、l 按键控制光标么?

键盘核心区

是的! 现在还可以使用 h、j、k、l 按键控制光标。

  • 在使用 vim 时,咱们可以把手放在键盘核心区有助于提高效率

    • 将左手食指放在 f 上
    • 将右手食指放在 j 上

在上面图片中展示的现代 101 键盘中有加入了方向键:

  • 在右手的右下面的非核心区
  • 笔记本键盘方向键也需要物理移动手的位置
  • 所以这种移动会降低效率,那我们能用鼠标定位么?

使用鼠标

想在 vim 中使用鼠标控制,我们先需要进行基本的配置:

  • 首先我们在 vim 中搜索帮助,输入 :h mouse,可以看到如下图所示的界面:

  • 现在我们进行主题设置
  • 从上图中我们可以看到,vim 提示我们执行 :set mouse=a,就可以用鼠标了!!!

    • 我们可以使用鼠标移动光标
    • 使用滚轮可以翻页
    • 还可以使用鼠标点击相关的主题链接

这些现代科技真的很不错,使用鼠标后操作更便捷了,但是鼠标其实会更影响效率,因为鼠标会让我们的手离开键盘。

然而 vi 就是想让用户可以实现,手不离开键盘核心区域就完成所有的编辑工作:

  • 方向移动是最常用的操作
  • 他想让你相对灵活的右手位置在键盘核心区完全不动
  • 只需要按下手指就完成相应的移动操作
  • 而且比鼠标还快速

位置记忆

  • 用 l 来表示右边很难记忆
  • 怎么办呢?有用户想到了这个

  • 东 洛杉矶
  • 南 爪哇岛
  • 西 黄河
  • 北 共青城

  • 用熟了其实很简洁
  • 逐渐将操作变成肌肉记忆,不要走脑子

现在我们有一个新问题,当年在没有鼠标的时候,Bill Joy 是如何跳转超链接主题的呢?

键盘跳转

  • 运行 :help 回到主题开头
  • 我们可以看到 bars 这样的链接
  • 使用 h、j、k、l 移动光标
  • 把光标移动到链接上
  • 是 ctrl+] 就可以跳入链接
  • ctrl+o 可以跳出链接,回到原位置 older position
  • 我们可以试试反复跳跃‍♀️

两套手册

  • 在翻阅 vim 的 manual 的时候
  • 我们发现 vim 有两套 manual

用户手册

  • 一套是用户手册

    • 像一本书一样
    • 从头读到尾
    • 从简单到复杂
    • 适合初学

引用手册

  • 另一套是引用手册

    • 精确的描述每个主题
    • 以及主题内容是如何工作的
    • 适合查询

总结

  • 我们这次看了

    • 正常模式
    • 命令行模式
    • 以及他们切换的方式
  • 了解了帮助文件的正确打开方式
  • h、j、k、l 命令的历史来源
  • 在文档中使用鼠标(并不建议)
  • 使用全键盘方式跳入跳出超链接
  • 帮助文件的两种手册
  • 不过说到这里我们还是没改文档啊啊啊啊!
  • 好饭不怕晚?
  • 我们下次再说!

oeasy教您玩转vim - 4 - # 深入帮助的更多相关文章

  1. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  9. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

  10. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

随机推荐

  1. 提升WordPress网站加载速度的8个小技巧

    提升WordPress网站加载速度是至关重要的,它不仅可以提高用户体验,还有助于SEO排名.以下是提升WordPress网站加载速度的8个小技巧,希望能帮助到大家. 优化图片: 使用适当大小和格式的图 ...

  2. Flask-Limit详细说明:接口限流

    速率限制通常作为服务的防御措施予以实施.服务需要保护自身以免过度使用(无论是有意还是无意),从而保持服务可用性.在Flask项目开发过程中,遇到了需要对接口进行限制的需求,又不想去造轮子,这时候就需要 ...

  3. React 的 KeepAlive 探索

    什么是 KeepAlive? 用过 Vue 的童鞋都知道 Vue 官方自带了 Keep-Alive 组件,它能够使组件在切换时仍能保留原有的状态信息,并且有专门的生命周期方便去做额外的处理.该组件在很 ...

  4. Azkaban快速入门

    先说一些废话 因为之前自己工作中有用过Azkaban作为自动化任务调度工具,所以想参考自己之前的使用经验,总结一下关于Azkaban的使用,方便大家使用Azkaban快速实现企业级自动化任务 如何选择 ...

  5. ztree.js 禁止点击事件和鼠标禁用

    先看样式 var _t = this; var setting = { view: { fontCss: { color: "#5E5F61" }, showIcon: true, ...

  6. vue自定义指令 - directive

    https://cn.vuejs.org/v2/guide/custom-directive.html 除了核心功能默认内置的指令,Vue也允许注册自定义指令.有的情况下,对普通 DOM 元素进行底层 ...

  7. kvm链接克隆虚拟机迁移到openstack机器的实验

    总结 如果是完整克隆的那种虚拟机,是可以直接在openstack使用的,如果镜像格式没问题的话. 因为kvm虚拟机大部分都是链接克隆出来的镜像,不可用直接复制使用,所以需要创建新的镜像文件 创建空盘: ...

  8. 开源一款功能强大的 .NET 消息队列通讯模型框架 Maomi.MQ

    目录 文档说明 导读 快速开始 消息发布者 IMessagePublisher 连接池 消息过期 事务 发送方确认模式 独占模式 消费者 消费者模式 事件模式 分组 消费者模式 消费.重试和补偿 消费 ...

  9. Do not access Object.prototype method 'hasOwnProperty' from target object

    hasOwnProperty 判断对象是否为空 在使用 hasOwnProperty 判断对象是否为空时遇到了一下问题,总结一下 // Do not access Object.prototype m ...

  10. 从JDK8升级到JDK17

    一.概述 鉴于JDK8已经是老古董,还有性能问题,兼且各个公司已经不再维护1.8的JDK,所以升级公司的核心产品之一的后端到JDK到17是相对要紧的事情. 通过升级到jdk17,具有以下好处: 不要在 ...