【Vim Masterclass 笔记17】第八章 + S08L34:Vim 的可视化模式(一)

文章目录

写在前面

本篇开始进入第八章 Vim 可视化模式的学习,共两部分,本篇为第一部分,主要介绍了可视化模式的基本操作,并对块级可视化模式进行了重点介绍,给出了五个具体的演示案例。实操时发现开启该模式的组合键与 Windows 自带的粘贴键 Ctrl-v 冲突,因此体验感并不是很好,尤其对于需要切换不同操作系统的场景下。但瑕不掩瑜,只要一想到掌握 Vim 的可视化模式后,就可以彻底摆脱鼠标的束缚,多背一两个快捷键又算得了什么?不熟就多练,就这么简单。

L34 Visual Mode - Part 1


本节演示文件:vimclass/visual.txt

1 Vim 可视化模式的应用场景

Vim 的可视化模式与图形界面下的文本鼠标操作类似,甚至更强。常见的应用场景:

  • 选中多行垂直文本块,并支持对多行内容进行批量处理;
  • Vim 指令生效前,方便查看 Vim 都选中了哪些内容;
  • 启用可视化模式后,鼠标操作没有了,从而节约了大量键鼠切换时间。

2 Vim 的三种可视化模式

  1. 字符级(characterwise)可视化模式:通过 v 开启;
  2. 文本行(linewise)可视化模式:通过 V 开启;
  3. 区块级(blockwise)可视化模式:通过 Ctrl + V 开启(WSL 的 Ubuntu Vim 用的是 Ctrl + Alt + VWindows 的 Vim 则用的是 Ctrl + Q);

可视化模式的退出:任意位置按 Escape 键。

3 字符级可视化模式的基本操作

在可视化模式下,可以使用 motion 移动来选中某个区域,效果与 WindowsShift + 方向键 类似。但 Windows 仅支持单个字符的移动,最多配合 Ctrl 键实现基于单词的移动;而 Vim 中的所有 motion 移动都能用于定义某个选中区域。

【示例一】可视化 + 方向键

例如,将光标定位到字符 t 后,通过 V 键开启字符级可视化模式,再按 L 令光标右移:

【图 34-1:按 v 开启字符级可视化模式后,右移光标后的实测效果】

【示例二】可视化 + W

接着按 W 键扫过单词 start

【图 34-2:继续按 w 扫过单词 start 的视觉效果】

选定文字区域后,可以执行相应的命令,例如 d 命令删除选中内容。

【示例三】可视化 + 文本搜索

从光标当前位置(t 字符处)选中下一个字符 C 之间的内容,输入 /C 即可:

【图 34-3:字符级可视化模式下,输入 /C 可选中光标当前位置到下一处大写字符 C 之间的内容】

4 小写字母 o 的作用

默认情况下,开启可视化模式并选中某个区域后,当前光标会位于该区域的末尾。键入小写的 O 键后,光标会切换到该区域的起始位置,这样就能保留之前的内容,并沿反方向扩展该区域。

这里的 o 表示 o ther side of the region,即 另一边 。再按一次 O 键,光标又重新回到另一边。

如果不切换光标位置直接反向移动,之前选中的区域将被抹除。

5 可视化模式 + 文本对象操作

VAW:可视化选中当前光标所在单词

VAP:可视化选中当前光标所在段落

注意

正常模式下的很多操作与可视化模式的顺序是反的:正常模式的 yap 对应可视化模式的 vapy

正常模式先确定操作,再指定范围;可视化模式先确定范围,后追加操作。

6 文本行可视化模式的用法

在当前行的任意位置输入 ShiftV 将启用文本行可视化模式,并选中光标所在的一整行内容。

此时左右移动只会改变光标位置,当前行的选中区域一直不变;而上下移动则会将光标所在的行全部选中。

同理,使用小写字母 O 可以让光标从最后一行切换到首行,再按一次则还原。

7 快速选中上一次可视化模式选中的区域

使用 GV

8 可在选中区域执行的常见操作

~: Switch case,切换大小写
c: Change,变更
d: Delete,删除
y: Yank,复制
r: Replace,替换
x: Delete,删除当前字符
I: Insert,从行首进入插入模式
A: Append,从行尾进入插入模式
J: Join,连接文本行
u: Make lowercase,转为小写
U: Make uppercase,转为大写
>: Shift right,向右缩进
<: Shift left,向左缩进

9 区块级可视化模式的用法示例

实测发现,WSL 环境下,Ubuntu 系统安装的 v8.0VimCtrl + V 与宿主机 Windows 中的粘贴快捷键冲突,进入区块模式只能使用 Ctrl + Alt + V 来启用;。

与前两个可视化模式不同,在区块模式下,对于选中的矩形区域,光标在四个角落的定位可以用 O 键或者组合键 Shift + O 进行切换。其中------

  • O 键负责对角线上的两个光标位置间的切换;
  • Shift + O 则负责同一行上首尾光标位置的切换。

【示例一】用区块模式将指定内容批量改为大写形式

先用区块可视化模式选中要更改的文字区域:

【图 34-4:先用区块级可视化模式选中待更改区域】

接着按 U 将该区域的所有字符批量改为大写格式:

【图 34-5:按 Shift + U 实现选中文字批量转为大写格式】

【示例二】用区块级可视化模式批量选中非标准矩形内容

区块级可视化模式下,选中区域一般为矩形,但并不是只能选中矩形。例如:

【图 34-6:待选中的不规则文字区域】

实现方法:先选中最大的矩形区域,再按 $ 分别扩展到每一行的末尾:

【图 34-7:用区块级可视化模式选中不规则区域的效果图】

【示例三】在行尾批量添加文字内容

此时按 ShiftA(只能用大写的 A,小写 a 在可视化模式下无效)还可以批量添加文字,例如添加 end

【图 34-8:新追加到行尾的内容(当前为插入模式)】

然后按 Escape 回到正常模式,新增内容就批量追加到每行末尾了:

【图 34-9:在行尾批量添加文字后的效果(当前为正常模式)】

【示例四】在行首批量插入指定字符

试将如下构造函数中的变量名改为以 @ 开头的形式:

python 复制代码
class Person
  def initialize(nick_name, birthdate, telephone, title)
    nick_name=nick_name
    birthdate=birthdate
    telephone=telephone
    title=title
  end
end

最终效果如下:

markdown 复制代码
class Person
  def initialize(nick_name, birthdate, telephone, title)
    @nick_name=nick_name
    @birthdate=birthdate
    @telephone=telephone
    @title=title
  end
end

实现方法:光标定位到 nick_name 首字符,按 Ctrl + Q(Windows 环境的 Vim)进入区块级可视化模式,并按 3J 选中要变更的行,然后按 ShiftI 批量进入插入模式(和追加内容类似,这里仅支持大写的 I 进入插入模式,可视化模式下小写的 i 无效)。接着键入 N

【图 34-10:批量插入模式下,输入需要的内容 @ 的实测截图】

最后按 Escape 键完成各行的批量添加。

【示例五】用区块模式批量更改文字内容

试用区块级可视化模式将如下内容中的 john

markdown 复制代码
john.nick_name = "Happy"
john.birthdate = "4/4/1984"
john.telephone = "(555) 612-2000"
john.title = "Developer"

批量改为 bill

markdown 复制代码
bill.nick_name = "Happy"
bill.birthdate = "4/4/1984"
bill.telephone = "(555) 612-2000"
bill.title = "Developer"

实现方法:先将光标定位到第一个 john 的首字母,再启用区块级可视化模式,并选中所有的 john 部分;接着按 C 进入批量更改,输入 bill + Escape 即可。

【图 34-11:用 c 命令实现区块级可视化模式下的文本批量修改】

注意

i 命令和 a 命令不同,可视化模式下 c 无需使用大写形式。

相关推荐
exp_add3几秒前
一、1-2 5G-A通感融合基站产品及开通
笔记·5g
青椒大仙KI1117 分钟前
25/1/15 嵌入式笔记 初学STM32F108
笔记
Archippus2 小时前
分块莫队学习笔记
笔记·题解·oi
n北斗2 小时前
内聚耦合软件工程
笔记
安冬的码畜日常2 小时前
【Vim Masterclass 笔记16】S07L32 + L33:同步练习09 —— 掌握 Vim 宏操作的六个典型案例(含点评课内容)
笔记·vim·自学笔记·vim宏·同步练习
隼玉2 小时前
【STM32-学习笔记-7-】USART串口通信
笔记·stm32·学习
挥剑决浮云 -3 小时前
QT信号槽 笔记
开发语言·笔记·qt
明月清了个风3 小时前
数据结构与算法学习笔记----中国剩余定理
笔记·学习
岑梓铭3 小时前
考研408《操作系统》复习笔记,第七章《线程》
笔记·考研·操作系统·408