【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^。

2 具体操作

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

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

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

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

相关推荐
Pandaconda5 小时前
【Golang 面试题】每日 3 题(二十一)
开发语言·笔记·后端·面试·职场和发展·golang·go
Zhichao_975 小时前
【UE5 C++课程系列笔记】21——弱指针的简单使用
笔记·ue5
Naiva6 小时前
ESP32-C3 入门笔记08:多帧数据解析
笔记·notepad++
东京老树根10 小时前
Excel 技巧02 - 如何批量输入百分号 (★),如何输入百分号并指定小数位数,如何批量删除百分号,如何批量删除小数最后的0?
笔记·学习·excel·vba
warrah12 小时前
rabbitmq——岁月云实战笔记
笔记
细心的莽夫14 小时前
Spring 复习笔记
java·笔记·学习·spring·java-ee
颖风船14 小时前
(初学者)STM32 MP157中LED触发器笔记
笔记·stm32·嵌入式硬件
魔理沙偷走了BUG14 小时前
【数学建模笔记】评价模型-基于熵权法的TOPSIS模型
笔记·数学建模
挥剑决浮云 -14 小时前
STM32学习之 模块初始化和常用GPIO函数笔记
笔记·stm32·学习
笑鸿的学习笔记15 小时前
qt-C++笔记之动画框架(Qt Animation Framework)入门
c++·笔记·qt