【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 键来区分。 ↩︎

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础数据结构--二叉树

一、二叉树的定义 二叉树是 n( n > 0 ) 个结点组成的有限集合&#xff0c;这个集合要么是空集&#xff08;当 n 等于 0 时&#xff09;&#xff0c;要么是由一个根结点和两棵互不相交的二叉树组成。其中这两棵互不相交的二叉树被称为根结点的左子树和右子树。 如图所示&am…

力扣-数据结构-7【算法学习day.78】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;建议灵神的题单和代码随想录&#xff09;和记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关…

Android着色器SweepGradient渐变圆环,Kotlin

Android着色器SweepGradient渐变圆环&#xff0c;Kotlin import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.graphics.SweepGradient import android…

QT---------GUI程序设计基础

代码UI化设计&#xff08;QT&#xff09; 实例功能概述 假设我们要创建一个简单的计算器应用程序。该应用程序具有以下功能&#xff1a; 包含数字按钮&#xff08;0-9&#xff09;、操作符按钮&#xff08;、-、*、/&#xff09;、等于按钮&#xff08;&#xff09;和清除按…

torch.nn.functional的用法

文章目录 介绍激活函数示例 损失函数示例 卷积操作示例 池化示例 归一化操作示例 Dropout示例 torch.nn.functional 与 torch.nn 的区别 介绍 torch.nn.functional 是 PyTorch 中的一个模块&#xff0c;提供了许多函数式的神经网络操作&#xff0c;包括激活函数、损失函数、卷…

关于Nginx

1.Nginx的配置 proxy_pass http: 当你需要将请求分发到多个后端服务器时&#xff0c;需要实现负载均衡功能&#xff0c;可以使用upstream指令定义一组服务器&#xff0c;并在proxy_pass中引用这个服务组名称。。如果不需要负载均衡&#xff0c;只需要将请求转发到单一的后端…

redis用途都有哪些

Redis&#xff0c;作为一个开源的高性能键值对数据库&#xff0c;其用途广泛且功能强大。 1. 缓存&#xff08;Caching&#xff09;&#xff1a; • Redis常被用作缓存层&#xff0c;存储那些频繁访问但不易改变的数据&#xff0c;如用户会话、商品详情等。 • 通过将这些数据存…

Gemma2 2B 模型的model.safetensors.index.json文件解析

Gemma2 2B 模型的 model.safetensors.index.json 文件解析 在使用 Gemma2 2B 模型或其他大型预训练模型时&#xff0c;model.safetensors.index.json 文件起到了索引的作用&#xff0c;它帮助我们了解模型的结构、参数存储方式以及如何加载模型的具体权重。本博客将深入解析该…

JSON结构快捷转XML结构API集成指南

JSON结构快捷转XML结构API集成指南 引言 在当今的软件开发世界中&#xff0c;数据交换格式的选择对于系统的互操作性和效率至关重要。JSON&#xff08;JavaScript Object Notation&#xff09;和XML&#xff08;eXtensible Markup Language&#xff09;是两种广泛使用的数据表…

期权懂|期权入门知识:开通50ETF期权需要什么条件?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 开通50ETF期权需要什么条件&#xff1f; 一、基本资格要求 &#xff08;1&#xff09;年龄限制&#xff1a;投资者必须年满18周岁&#xff0c;具备完全民事行为能力。 &#…

实景三维点云处理专业软件ArcGIS根据DSM生成地表点云集

常见的实景三维处理软件及其特色功能如下&#xff1a; 一、专业实景三维建模软件 Agisoft Metashape 高精度建模&#xff1a;能够生成高精度的三维模型&#xff0c;精度可以达到厘米级甚至毫米级&#xff0c;适用于需要详细测量和分析的项目&#xff0c;如文物保护和建筑测量。…

实战指南:Shiro、CAS打造完美单点登录体验

引言 想象一下&#xff0c;在日常工作中&#xff0c;我们经常需要进行系统认证和授权。当用户尝试登录一个网站时&#xff0c;他们需要提供用户名和密码&#xff0c;网站会检查这些信息&#xff0c;确认用户是谁。这就是认证的过程。 一旦用户被认证&#xff0c;他们可能会尝…

cuda-cuDnn

cuda sudo /bin/sh cuda_11.7.0_515.43.04_linux.run cudnn cuDNN Archive | NVIDIA Developer Linux 系统 CUDA 多版本共存以及切换 – 颢天 安装cuda # 如果已经安装过驱动&#xff0c;驱动不需要再安装&#xff0c;取消勾选 安装cuDNN&#xff0c;cuda-cuDNN对应关系见…

QComboBox中使用树形控件进行选择

事情是这样的&#xff0c;要在一个ComboBox中通过树形结构进行内容的选择。 默认的QComboBox展开是下拉的列表。因此需要定制一下。 效果就是这样的 实现上面效果的核心代码就是下面这样的 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { treenew…

【网络协议】路由信息协议 (RIP)

未经许可&#xff0c;不得转载。 路由信息协议&#xff08;Routing Information Protocol&#xff0c;简称 RIP&#xff09;是一种使用跳数&#xff08;hop count&#xff09;作为路由度量标准的路由协议&#xff0c;用于确定源网络和目标网络之间的最佳路径。 文章目录 什么是…

LoRA微调系列笔记

系列文章目录 第一章&#xff1a;LoRA微调系列笔记 第二章&#xff1a;Llama系列关键知识总结 第三章&#xff1a;LLaVA模型讲解与总结 文章目录 系列文章目录LoRA&#xff1a;Low-Rank Adaptation of Large Language Models目的&#xff1a;依据&#xff1a;优势&#xff1a;…

SRS 服务器入门:实时流媒体传输的理想选择

在当今视频流媒体需求爆炸式增长的时代&#xff0c;如何选择一款高效、稳定且功能强大的流媒体服务器成为了许多开发者和企业关注的焦点。而 SRS&#xff08;Simple Realtime Server&#xff09;作为一款开源的流媒体服务器&#xff0c;以其卓越的性能和灵活的功能&#xff0c;…

C++第五六单元测试

1【单选题】在公有派生类的成员函数不能直接访问基类中继承来的某个成员&#xff0c;则该成员一定是基类中的&#xff08; C &#xff09;。&#xff08;2.0分&#xff09; A、公有成员B、保护成员C、私有成员D、保护成员或私有成员 注意从类外访问与从派生类中访问 2【单…

使用Python可视化有压缩格式的Bitmap(BMP)图像调色板数据

使用Python可视化有压缩格式的Bitmap BMP图像调色板数据 参考文章一、调色板数据二、测试代码三、测试结果 参考文章 有压缩格式的Bitmap(BMP)图像显示调色板数据和图像数据Bitmap(BMP)图像信息分析主要说明带压缩的形式Bitmap(BMP)图像信息验证 一、调色板数据 Color Palette…

「Mac畅玩鸿蒙与硬件49」UI互动应用篇26 - 数字填色游戏

本篇教程将带你实现一个数字填色小游戏&#xff0c;通过简单的交互逻辑&#xff0c;学习如何使用鸿蒙开发组件创建趣味性强的应用。 关键词 UI互动应用数字填色动态交互逻辑判断游戏开发 一、功能说明 数字填色小游戏包含以下功能&#xff1a; 数字选择&#xff1a;用户点击…