Learn Vim 第十一章:可视模式

Learn Vim 第十一章:可视模式

💡 原文中文,约4400字,阅读约需11分钟。
📝

内容提要

本文介绍Vim可视模式的三种类型(字符、行、块),涵盖导航、语法、Ex命令应用、跨多行编辑、递增数字、选择上次区域、从插入模式进入及选择模式,并建议优先使用普通模式操作以提高效率。

🔎

延伸解读

可视模式与普通模式的语法差异

可视模式下的操作符语法与普通模式相反:普通模式是“动词+名词”,而可视模式是“名词+动词”。在可视模式下,先高亮选择文本块(名词),再执行操作(动词),如d删除、x删除、r替换等。这种差异意味着在可视模式下,操作符作用于整个高亮区域,而非单个字符。理解这一区别有助于避免混淆,并更有效地利用可视模式进行批量编辑。

可视模式与Ex命令的结合

可视模式允许对高亮文本块执行Ex命令,例如替换命令:s/const/let/g。执行时,Vim会自动使用'<和'>标记作为范围,表示上次可视选择的起止位置。用户还可以手动修改这些标记,例如将范围改为'<,$以从选择起点到文件末尾执行命令。这一功能使得对特定文本块进行批量操作更加灵活,无需手动输入行号。

逐块可视模式的多行编辑技巧

逐块可视模式(Ctrl-v)特别适合跨多行编辑,例如在每行末尾添加分号或递增数字。通过组合移动命令(如j、$)和插入命令(A或I),可以一次性修改多行。此外,:normal命令也能实现类似效果,例如:normal! A;可在每行末尾添加分号。递增数字时,使用g Ctrl-A可对高亮的多行数字进行递增,且可通过设置nrformats+=alpha使字母也支持递增。

选择模式与可视模式的对比

选择模式(gh、gH、gCtrl-h)更接近常规编辑器的行为:高亮文本后直接输入字符会替换高亮内容,而可视模式则执行操作符(如y复制)。选择模式不支持普通模式命令,因此功能受限。作者个人不使用选择模式,但了解其存在有助于理解Vim的多样性。对于习惯常规编辑器的用户,选择模式可能更直观,但可视模式在Vim中更为强大和常用。

Q&A

Vim可视模式有哪几种?如何切换?

Vim有三种可视模式:逐字符可视模式(v)、逐行可视模式(V)和逐块可视模式(Ctrl-v)。在可视模式中,可以按v、V或Ctrl-v切换到另一种模式。退出可视模式可以按Esc、Ctrl-C或再次按当前模式的键。

在Vim可视模式中,如何扩展或缩小选择范围?

在可视模式中,可以使用动作(motion)如h、j、k、l来移动光标,从而扩展或缩小高亮区域。如果需要在选择区域的开头和结尾之间跳转,可以使用o或O键,这样光标会在两端切换,方便向任意方向扩展选择。

Vim可视模式的语法规则是什么?与普通模式有何不同?

可视模式的语法规则是“名词+动词”,即先选择文本块(名词),再执行操作(动词),与普通模式的“动词+名词”相反。例如,在可视模式下,先高亮文本,再按d删除。此外,普通模式下的一些命令如x和r在可视模式下会作用于整个高亮区域。

如何在Vim可视模式下对选中的文本应用Ex命令?

在可视模式下,选中文本后输入冒号(:),命令行会自动出现范围'<,'>,然后输入Ex命令即可。例如,选中前两行后运行:s/const/let/g,可以只替换选中部分的内容。

如何使用Vim的块可视模式进行跨多行编辑?

使用块可视模式(Ctrl-v)可以跨多行编辑。例如,要在每行末尾添加分号,将光标放在第一行,按Ctrl-v进入块可视模式,向下移动选择多行,按$跳到行尾,然后按A输入分号,最后按Esc退出。也可以使用:normal命令,如高亮所有行后输入:normal! A;。

如何在Vim中递增多行数字?

使用块可视模式选中要递增的数字,然后按g Ctrl-A即可递增。例如,选中多行中的数字“1”,按g Ctrl-A,它们会依次变为2、3、4等。Ctrl-X和Ctrl-A也可以递增字母,但需要设置nrformats选项包含alpha。

如何快速重新选择上次的可视模式区域?

可以使用gv命令重新选择上次的可视模式区域。另外,可以使用标记'<和'>分别跳转到上次可视模式选择的开始和结束位置,这些标记也可以用于Ex命令的范围。

如何从插入模式进入可视模式?

在插入模式下,按Ctrl-O进入普通模式挂起状态,然后按v、V或Ctrl-v即可进入相应的可视模式。屏幕左下角会显示--(insert) VISUAL--。

Vim的选择模式与可视模式有什么区别?

选择模式与可视模式类似,但行为更接近常规编辑器:在选中文本后直接输入字符会替换选中内容。选择模式有三种:gh(字符)、gH(行)、gCtrl-h(块)。在可视模式中,输入y会复制,而在选择模式中会替换。

为什么说频繁使用可视模式可能是一种反模式?

因为可视模式操作通常需要更多击键,效率较低。例如,删除一个单词,普通模式只需diw(3次击键),而可视模式需要viwd(4次击键)。建议优先使用普通模式操作,除非可视模式确实更合适。

🏷️

标签

➡️

继续阅读