引言
使用了快半年的ideaVim了,是时候反馈社区了~~
vim文本对象中大部分的文本对象都很容易理解。本文主要针对的是其中比较少用和比较难理解的句子和段落,进行代码的展示和理解。
参考文献
vim帮助文档
正文
这里我们需要先了解他们的定义:
句子s
一个句子以 ‘.’、’!’ 或者 ‘?’ 结尾并紧随着一个换行符、空格或者制表符。结束标点 和空白字符之间可以出现任何数量的闭括号和引号: ‘)’、’]’、’"’ 和 ‘’’。段落和小节 的边界也视为句子的边界。 如果 ‘cpoptions’ 包含 ‘J’ 标志位,那么标点之后的空格至少要出现两个,而且制表符 不被视为空白字符。
在编码中我们的句子并不代表一行,它严格遵守上面的定义。
段落p
一个段落以每个空行或段落宏命令开始,段落宏由 ‘paragraphs’ 选项里成对出现的字符 所定义。它的缺省值为 “IPLPPPQPP TPHPLIPpLpItpplpipbp”,也就是宏 “.IP”、".LP" 等 (这些是 nroff 宏,所以句号一定要出现在第一列)。小节边界也被视为段落边界。 注意 空白行 (只包含空白的行) 不是 段落边界。 也要 注意: 这不包括首列出现的 ‘{’ 或 ‘}’。但如果 ‘cpoptions’ 里包含 ‘{’ 标志 位,那么首列 ‘{’ 可用作段落边界 posix 。
案例
例如现在光标如图:
思考按下vis ,我们会选中什么? 在这里句子是按照段落的边界为边界的。
我们回到原本的状态按下vip :
现在在原有的基础上加了一个句号。 这时vis 便选中了空格以前的部分作为句子。
总结
句子看起来在代码中用起来食之无味。在我一开始的理解中,句子就应该是一行,但是又想明白了因为行已经有很多快捷的操作。例如选中一行:V ,重复的:yy dd 之类的,确实不需要再多此一举。
段落可以在空行之间使用: { 或 } 跳转,更为常用。
|