【Vim Masterclass 笔记02】第3章:Vim 核心知识 + L08:Vim 核心浏览命令 + L09:Vim 核心浏览命令同步练习

文章目录

  • Section 3:Vim Essentials(Vim 核心知识)
    • S03L08 Essential Navigation Commands
      • 1 光标的上下左右移动
      • 2 上 / 下翻页
      • 3 基于单词前移
      • 4 基于单词后移
      • 5 重新定位视图中的文本(页面重绘)
      • 6 定位到所在行的行首
      • 7 光标定位到某行
      • 8 查看当前行统计信息
    • S03L09 Exercise 02 Essential Navigation Commands
      • 1 目标
      • 2 具体操作
        • 1. 打开 nav.txt 文件
        • 2. 练习光标逐行或逐个字符移动
        • 3 按页移动光标练习
        • 4 按单词移动光标练习
        • 5 练习将光标移动到指定的行上
        • 6 自主练习
        • 7 退出 vim

Section 3:Vim Essentials(Vim 核心知识)


S03L08 Essential Navigation Commands

本节练习 Vim 浏览内容的基本操作。

1 光标的上下左右移动

图 8.1 Vim 控制光标上下左右的键盘操作

【图 8.1 Vim 控制光标上下左右的键盘操作】

即便键盘上的四个方向键失灵,HJKL 依然有效。应当熟悉 Vim 控制方向的方式,双手不离主键盘。

记忆法:H在最左边,L最右,J似鱼钩,剩下K则向上

abcd

2 上 / 下翻页

上一页:Ctrl + FForward)

下一页:Ctrl + BBackward)

3 基于单词前移

Vim 支持的文本对象(text object):单词(words)、句子(sentences)、段落(paragraphs)、块(blocks)……

按单词前移:

  • w:按单词逐个前移,标点也算一个独立的单词;
  • W:按单词逐个前移,标点不算独立的单词,予以忽略。改用 空白 作单词分隔符;

Vim 中的单词:即一个 非空的字符序列

4 基于单词后移

类比前移:

  • b:按单词逐个后移,标点也算一个独立的单词;此时空白、标点都算分隔符;
  • B:按单词逐个后移,标点不算独立的单词,予以忽略。改用 空白 作单词分隔符;

5 重新定位视图中的文本(页面重绘)

页面重绘:z + Enter

作用:将光标所在行调整至页面偏上的位置(具体偏上多少可以手动配置)。

6 定位到所在行的行首

  • 0:此时 缩进也算内容,光标移动到当前行第 1 列;
  • ^:此时 缩进不算内容,光标移动到当前行第 1 个非空字符;(类似正则表达式)

7 光标定位到某行

  • gg:前跟行号则到指定行;单独使用则定位到 第一行
  • G:前跟行号则到指定行;单独使用则定位到 最后一行
  • :LineNumberEnter:命令行模式下,冒号+目标行号,回车即定位到指定行

例如:

  • 定位到 末尾行G:$Enter(联想正则表达式)
  • 定位到 首行gg1gg:1Enter 甚至是 0gg:0Enter(类比 :$<Enter>,唯独不能用 :^<Enter>)(其实可能也表示 0 无效)

8 查看当前行统计信息

组合键:Ctrlg

图 8.2 组合键【Ctrl + g】用法示例

【图 8.2 组合键【Ctrl + g】用法示例】

缺点:不能实时刷新结果,需手动重算。

改进:命令模式下启用 ruler:set rulerEnter

实测效果:(支持状态信息实时更新)

图 8.3 命令模式下启用 ruler 展示状态信息

【图 8.3 命令模式下启用 ruler 展示状态信息】

此时再用 Ctrl + G,则显示:

图 8.4 启用 ruler 后的状态栏效果验证

【图 8.4 启用 ruler 后的状态栏效果验证】

禁用 ruler:set norulerEnter

拓展

Vim 命令模式中的配置项,激活与禁用都有固定格式——

  • 启用::set [option_name]
  • 禁用::set no[option_name]
  • 切换::set [option_name]!(开/关,取反操作,逻辑非)

S03L09 Exercise 02 Essential Navigation Commands

1 目标

练习光标在文件内的各种移动定位操作 1

2 具体操作

1. 打开 nav.txt 文件

打开本地命令行,用 vim 打开 nav.txt 文件:

cd Downloads
cd vimclass
vim nav.txt
2. 练习光标逐行或逐个字符移动

图 9.1 控制光标上下左右移动的键盘操作

【图 9.1 控制光标上下左右移动的键盘操作】

J2 10 次来让光标下移 10 行。此时光标位于下面这行:

You can also press and hold a navigation key so that it repeats.

K 键 4 次上移 4 行,光标则移至下面这行的起始位置:

To move to the right, press "l".

L 键 8 次移动到单词 “to.” 上、

再按 J 键 2 次移动到如下这行:

To move to the left, press "h".

注意观察光标是怎么保持在同一列上的(即光标相对该行左端的距离与之前一致)。

然后连续按 H 键,将光标移动到行首。

最后,按住 K 键,将光标移动到文件的起始位置。

3 按页移动光标练习

Ctrl + F 下翻一页。

Ctrl + B 上翻一页。

按住 Ctrl,并不断按下 F 键抵达文件的末尾位置。页面下翻的次数会根据当前屏幕尺寸的不同而有所浮动。切记:文件中的波浪符 ~ 表示该行已超出该文件末尾(the tildes represents lines beyond the end of the file)。

最终效果大致如下(具体也要视当前屏幕尺寸而定)。注意那些波浪符号:


This training is being provided by LinuxTrainingAcademy.com.
~
~
~
~
~
~
~
~

向上翻页则通过按住 Ctrl 键并按下 B 实现。

4 按单词移动光标练习

将光标移至下面这行。一个简单的做法是按住 K 键不放,直到光标抵达该行;要是走过了,再按 J 键回到这行:

  Far far away, behind the wild mountains, far from the countries Vokalia and

按小写的 W 键 4 次。光标移至该行的第一个逗号(,)位置;再按 W 5 次,则移至该行第二个逗号(,)位置。

按小写的 B 键 8 次,回到本句第一个单词(Far)。注意,此时逗号也被视为一个单词。

再按大写的 W 键 3 次,向前移至单词 “behind” 处。注意,其间光标不会在逗号处停留;再按大写的 W 键 4 次,则前移至单词 “far” 处。

想要返回本行中的第一个单词,需要反复按大写的 B 键 7 次。

5 练习将光标移动到指定的行上

键入 GG 移至文件首行。

按下大写的 G 键移至文件最后一行。

再键入 1GG 回到文件首行。注意该操作是否与 GG 保持一致。然后键入 29GG 移至第 29 行。

也可以用大写的 G 键定位到具体某行,如按下 3ShiftG

接着再用命令行模式移至第 44 行。键入 :44Enter。然后键入 :$Enter 移至最后一行。

要确认光标已在最后一行,键入 CtrlG 来显示当前文件的相关信息(状态栏应该可以看到 100% 字样)

6 自主练习

如果您愿意的话,可以用本节所学知识在文件中任意导航,体会其中的乐趣。

7 退出 vim

完成本节文件内容导航练习后,按 :q!Enter 键退出。


  1. 本节练习另附精美排版 PDF 格式,阅读体验更佳,详见:vimclass/Exercise-02-EssentialNavigationCommands.pdf ↩︎

  2. 默认情况下,所有单个字母的按键格式均为该字母的小写形式;若为大写,会单独添加 Shift 键来区分。 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/947801.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2025工作管理综合指南:Jira、Confluence等Atlassian工具套件在工作管理中的应用

在高效的工作场所中&#xff0c;沟通、协作与协调是驱动团队效能与生产力提升的核心要素。企业需构建无缝信息流、顺畅的交接与标准化的流程&#xff0c;以确保无论团队采用何种工作模式——面对面、远程或混合——都能实现高效运作。一套强大的工作管理解决方案&#xff0c;作…

MyBatis-plus sql拦截器

因为业务需求&#xff0c;重新写了一套数据权限。项目中用的是mybtis-plus&#xff0c;正好MyBatis-Plus提供了插件数据权限插件 | MyBatis-Plus&#xff0c;那就根据文档来实现这个需求。 实现&#xff1a; 实现MultiDataPermissionHandler 首先创建MultiDataPermissionHan…

vue导入导出excel、设置单元格文字颜色、背景色、合并单元格(使用xlsx-js-style库)

npm i xlsx-js-style <template><button click"download">下载 Excel 表格</button><el-table :data"tableData" style"width: 100%"><el-table-column prop"date" label"日期" width"180…

Ansys Discovery 中的网格划分方法:探索模式

本篇博客文章将介绍 Ansys Discovery 中可用于在探索模式下进行分析的网格划分方法。我们将在下一篇博客中介绍 Refine 模式下的网格划分技术。 了解 Discovery Explore 模式下的网格划分 网格划分是将几何模型划分为小单元以模拟系统在不同条件下的行为的过程。这是通过创建…

Android布局layout的draw简洁clipPath实现圆角矩形布局,Kotlin

Android布局layout的draw简洁clipPath实现圆角矩形布局&#xff0c;Kotlin 通常&#xff0c;如果要把一个相对布局&#xff0c;FrameLayout&#xff0c;或者线性布局等这样的布局变成具有圆角或者圆形的布局&#xff0c;需要增加一个style&#xff0c;给它设置圆角&#xff0c;…

【中间件】docker+kafka单节点部署---zookeeper模式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言消息中间件介绍1. KRaft模式2. zookeeper模式2.1. 单节点部署安装验证 前言 最近生产环境上准备部署ELFK日志监控&#xff0c;先在测试环境部署单节点kafka验证…

38 Opencv HOG特征检测

文章目录 HOGDescriptor 构造函数setSVMDetector 设置支持向量机&#xff08;SVM&#xff09;检测器&#xff0c;用于目标检测。compute 用于计算图像区域的HOG描述符。detectMultiScale 多尺度检测目标。示例 HOGDescriptor 构造函数 HOGDescriptor(); HOGDescriptor(const S…

音视频-----RTSP协议 音视频编解码

流媒体协议详解&#xff1a;RTSP、RTP、RTCP、SIP、SDP、RTMP、WebRTC、WebSocket-CSDN博客 上文讲解比较清楚 多媒体编解码基础知识 一文详解WebRTC、RTSP、RTMP、SRT-腾讯云开发者社区-腾讯云 RTP :(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传…

著名的软件都用什么语言编写?

你是否曾经好奇&#xff0c;身边那些耳熟能详的软件&#xff0c;它们究竟是用什么语言编写的&#xff1f;从操作系统到浏览器、从数据库到编程工具&#xff0c;每一款软件背后都承载着开发者们的智慧与技术选型。那么&#xff0c;究竟哪些编程语言成就了这些世界级的软件呢&…

高效自携式潜水装备,助力水下探索|鼎跃安全

水域安全是水上作业、救援和科研活动的重要保障&#xff0c;面对复杂多变的水下环境&#xff0c;一套轻便、高效的全能的智能设备&#xff0c;能在极大的程度上给潜水活动提供保障。传统潜水装备因体积庞大、操作复杂&#xff0c;已无法满足多样化任务需求。自携式潜水装备凭借…

uni-app深度解码:跨平台APP开发的核心引擎与创新实践

在当今数字化浪潮中&#xff0c;移动应用市场呈现出爆炸式增长。为了满足不同用户群体在不同操作系统上的需求&#xff0c;跨平台 APP 开发成为众多开发者的首选策略。uni-app 作为一款领先的跨平台开发框架&#xff0c;以其独特的优势和创新的实践在众多同类产品中脱颖而出。它…

【74HC192减法24/20/72进制】2022-5-17

缘由用74ls192设计一个72进制的减法计数器&#xff0c;需要有逻辑电路图-硬件开发-CSDN问答

第十届“挑战杯”大学生课外学术科技作品竞赛解析及资料

“挑战杯”被誉为大学生科技创新创业的“奥林匹克”盛会&#xff0c;它汇聚了来自各个学科、各个年级的精英人才。在这里&#xff0c;同学们带着对未知的好奇和对知识的渴望&#xff0c;组成一个个团队&#xff0c;向难题发起挑战。现在&#xff0c;第十届“挑战杯”大学生课外…

Linux实验报告14-Linux内存管理实验

目录 一&#xff1a;实验目的 二&#xff1a;实验内容 1、编辑模块的源代码mm_viraddr.c 2、编译模块 3、编写测试程序mm_test.c 4、编译测试程序mm_test.c 5、在后台运行mm_test 6、验证mm_viraddr模块 一&#xff1a;实验目的 (1)掌握内核空间、用户空间&#xff…

趣味编程:心形曲线

目录 1.序言 2.代码展示 3.代码详解 3.1 头文件包含 3.2 绘制坐标轴函数 3.3 main 函数主体部分 4. 小结 1.序言 2025年的第一篇博客就用这个笛卡尔心形图开篇吧&#xff0c;寓意着新年大家能够有心有所属&#xff0c;祝诸位程序猿 / 程序媛 能够早点遇到自己的另一半。…

Ansys Aqwa 中 Diffraction Analysis 的疲劳结果

了解如何执行疲劳分析&#xff0c;包括由 Ansys Aqwa 计算的海浪行为。 了解疲劳分析 大多数机器故障是由于负载随时间变化&#xff0c;而不是静态负载。这种失效通常发生在应力水平明显低于材料的屈服强度时。因此&#xff0c;当存在动态载荷时&#xff0c;仅依赖静态失效理…

CAD图块是什么?如何进行CAD图块分解?

CAD图块是CAD软件中的一个重要概念&#xff0c;它指的是由一组图形元素&#xff08;如点、线、弧、圆、多边形等&#xff09;组合而成的整体。在CAD画图中&#xff0c;为了能够简化操作、提高效率&#xff0c;保持设计的一致性&#xff0c;很多时候&#xff0c;我们会选择建立C…

黑马JavaWeb开发跟学(十四).SpringBootWeb原理

黑马JavaWeb开发跟学 十四.SpringBootWeb原理 SpingBoot原理1. 配置优先级2. Bean管理2.1 获取Bean2.2 Bean作用域2.3 第三方Bean 3. SpringBoot原理3.1 起步依赖3.2 自动配置3.2.1 概述3.2.2 常见方案3.2.2.1 概述3.2.2.2 方案一3.2.2.3 方案二 3.2.3 原理分析3.2.3.1 源码跟踪…

被催更了,2025元旦源码继续免费送

“时间从来不会停下&#xff0c;它只会匆匆流逝。抓住每一刻&#xff0c;我们才不会辜负自己。” 联系作者免费领&#x1f496;源&#x1f496;码。 三联支持&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 更多内容敬请期待。如有需要源码可以联系作者免…

Python基础语法(上)

目录 一、print函数及常量表达式 1.print函数 2.常量表达式 二、变量 1.定义变量的规则 2.python的动态类型特性 3.字符串 三、注释 四、input函数 1.input函数 2.变量类型转换 五、运算符 1.算数运算符 2.关系运算符 &#xff08;1&#xff09;整形的比较 &am…