oeasy教您玩转vim - 4 - # 深入帮助
深入帮助
回忆上节课内容
- 上次制作了
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 - # 深入帮助的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- 提升WordPress网站加载速度的8个小技巧
提升WordPress网站加载速度是至关重要的,它不仅可以提高用户体验,还有助于SEO排名.以下是提升WordPress网站加载速度的8个小技巧,希望能帮助到大家. 优化图片: 使用适当大小和格式的图 ...
- Flask-Limit详细说明:接口限流
速率限制通常作为服务的防御措施予以实施.服务需要保护自身以免过度使用(无论是有意还是无意),从而保持服务可用性.在Flask项目开发过程中,遇到了需要对接口进行限制的需求,又不想去造轮子,这时候就需要 ...
- React 的 KeepAlive 探索
什么是 KeepAlive? 用过 Vue 的童鞋都知道 Vue 官方自带了 Keep-Alive 组件,它能够使组件在切换时仍能保留原有的状态信息,并且有专门的生命周期方便去做额外的处理.该组件在很 ...
- Azkaban快速入门
先说一些废话 因为之前自己工作中有用过Azkaban作为自动化任务调度工具,所以想参考自己之前的使用经验,总结一下关于Azkaban的使用,方便大家使用Azkaban快速实现企业级自动化任务 如何选择 ...
- ztree.js 禁止点击事件和鼠标禁用
先看样式 var _t = this; var setting = { view: { fontCss: { color: "#5E5F61" }, showIcon: true, ...
- vue自定义指令 - directive
https://cn.vuejs.org/v2/guide/custom-directive.html 除了核心功能默认内置的指令,Vue也允许注册自定义指令.有的情况下,对普通 DOM 元素进行底层 ...
- kvm链接克隆虚拟机迁移到openstack机器的实验
总结 如果是完整克隆的那种虚拟机,是可以直接在openstack使用的,如果镜像格式没问题的话. 因为kvm虚拟机大部分都是链接克隆出来的镜像,不可用直接复制使用,所以需要创建新的镜像文件 创建空盘: ...
- 开源一款功能强大的 .NET 消息队列通讯模型框架 Maomi.MQ
目录 文档说明 导读 快速开始 消息发布者 IMessagePublisher 连接池 消息过期 事务 发送方确认模式 独占模式 消费者 消费者模式 事件模式 分组 消费者模式 消费.重试和补偿 消费 ...
- Do not access Object.prototype method 'hasOwnProperty' from target object
hasOwnProperty 判断对象是否为空 在使用 hasOwnProperty 判断对象是否为空时遇到了一下问题,总结一下 // Do not access Object.prototype m ...
- 从JDK8升级到JDK17
一.概述 鉴于JDK8已经是老古董,还有性能问题,兼且各个公司已经不再维护1.8的JDK,所以升级公司的核心产品之一的后端到JDK到17是相对要紧的事情. 通过升级到jdk17,具有以下好处: 不要在 ...