我的理解是,在正常模式下,命令gqip
告诉vim使用formatoptions
作为规则来格式化由空白分隔的当前段落。但我找不到任何关于命令本身的信息来查看其他可能的类似用例。更具体地说,我想知道的是,如果将命令gqip
分解为g
、q
、i
和p
,这些单独的组件会如何赋予命令行为?
gq{motion}
(:help gq
(格式化{motion}
覆盖的行。
运动通常可以是移动光标的任何命令,在这种情况下,它覆盖初始和最终光标位置之间的所有内容;文本对象";。
:help text-objects
列出了所有的文本对象,特别是:
ip;内部段落";,选择[count]段(请参阅|段落|(。异常:空行(仅包含空白(也是一个段落边界。在"视觉"模式下使用时,它将按线条显示。
这个问题说明了依赖从随机来源收集的随机、断开连接的信息片段而不是正确学习Vim的最大问题之一。
gqip
实际上是gq
,一个算子,而ip
,一个运动。
";运算符";以及";"运动";在$ vimtutor
的第2课中介绍,并在用户手册的第4章:help 04.1
中进一步讨论,而文本对象的概念在同一章:help 04.8
中进一步介绍。
学习Vim甚至不是";像";学习一门语言,它是学习一种语言,用户手册的结构遵循常见的语言教学技术:一开始,用户会收到一些基本命令("删除"、"扬克"、"到下一个单词"等,一个词汇表(,并展示如何组合这些命令(一个 语法一旦用户内化了一些词汇和某些语法,他们就可以很容易地获得新命令,并立即将它们与以前获得的命令组合成更复杂的"命令";句子";,就像一个语言学习者。 FWIW,这是整个 10.7格式化文本 当您键入纯文本时,如果每行的长度为自动修剪以适应窗口。为了在插入文本,设置"文本宽度"选项: 您可能还记得,在示例vimrc文件中,此命令用于每个文本文件。因此,如果您正在使用vimrc文件,那么您已经使用它。要检查"textwidth"的当前值: 现在,行将被打断,最多只需要72个字符。但是当你在行的一半插入文本,或者删除几个单词时,插入行会变得太长或太短。Vim不会自动重新格式化文本。告诉Vim格式化当前段落: 这从";gq";命令,这是一个运算符。下面是";ap";,代表"文本"的文本对象;一段";。段落与下一段用空行隔开。 注:包含空白的空行不分隔段落。这很难注意到! 代替";ap";你可以使用任何运动或文本对象。如果你的段落正确地分开,可以使用此命令格式化整个文件: "带你到第一行,";gq";是格式运算符;G〃;这个跳到最后一行的动作。 如果你的段落没有明确定义,你可以只格式化行您可以手动选择。将光标移动到要设置格式的第一行。从命令";gqj";。这将格式化当前行和下面的行如果第一行是短的,下一行的单词会被追加。如果太长,单词将移到下一行。光标移动到第二行。现在您可以使用"quot;以重复该命令。继续这样做直到您到达要格式化的文本的末尾。 有了:help 10.7
,它恰好覆盖了gqap
,它很容易外推到任何gq
+运动,这要归功于您在第4章中所学到的:set textwidth=72
:set textwidth
gqap
gggqG
:help user-manual
提供的基础知识,gqip
不可能是个谜。