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

文章目录

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

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


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

1 光标的上下左右移动

【图 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】用法示例】

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

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

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

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

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

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

禁用 ruler:set norulerEnter

拓展

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

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

1 目标

练习光标在文件内的各种移动定位操作 [1](#1)

2 具体操作

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

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

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

J[2](#2) 10 次来让光标下移 10 行。此时光标位于下面这行:

markdown 复制代码
You can also press and hold a navigation key so that it repeats.

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

markdown 复制代码
To move to the right, press "l".

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

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

markdown 复制代码
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)。

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


bash 复制代码
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 键来区分。 ↩︎

相关推荐
特种加菲猫1 小时前
指尖上的魔法:优雅高效的Linux命令手册
linux·笔记
wuxuanok2 小时前
Web后端开发-分层解耦
java·笔记·后端·学习
wuxuanok2 小时前
Web后端开发-请求响应
java·开发语言·笔记·学习
诗句藏于尽头3 小时前
内网使用rustdesk搭建远程桌面详细版
笔记
蜡笔小电芯3 小时前
【C语言】指针与回调机制学习笔记
c语言·笔记·学习
丰锋ff3 小时前
瑞斯拜考研词汇课笔记
笔记
DKPT5 小时前
Java享元模式实现方式与应用场景分析
java·笔记·学习·设计模式·享元模式
KoiHeng8 小时前
操作系统简要知识
linux·笔记
巴伦是只猫9 小时前
【机器学习笔记Ⅰ】11 多项式回归
笔记·机器学习·回归
DKPT12 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式