星期一, 八月 10, 2020

VIM学习笔记 在文本对象间移动(motion-object)

motion_Ninja
 Originally from Practical Vim by Drew Neal

使用以下命令,可以按照文本对象(Text Objects)为单位来快速移动;同时,对于浏览C、Java代码和HTML、Markdown等标签语言文档,也更加友好和高效。当然,以下命令也接受[count]参数,以跳转多个对象。

按文本对象移动

对象命令描述
句子(反向一个句子
)正向一个句子
段落{反向一个段落
}正向一个段落
小节]]正向一个小节或到后一个出现在首列的 '{'
][一个小节或到后一个出现在首列的 '}'
[[反向一个小节或到前一个出现在首列的 '{'
[]反向一个小节或到前一个出现在首列的 '}'

句子(sentence),是以 '.'、'!' 或者 '?' 结尾并紧随着一个换行符、空格或者制表符。结束标点和空白字符之间可以出现任何数量的闭括号和引号: ')'、']'、'"' 和 '''。段落和小节的边界也视为句子的边界。

段落(paragraph),是以每个空行或段落宏命令开始,段落宏由 'paragraphs' 选项里成对出现的字符所定义。它的缺省值为 "IPLPPPQPP TPHPLIPpLpItpplpipbp",也就是宏 ".IP"、".LP"等 (这些是 nroff 宏,所以句号一定要出现在第一列)。小节边界也被视为段落边界。注意,空白行不是段落边界。

小节(section),是以每个首列出现的换页符(<C-L>,<FF>)或小节宏命令开始。小节宏由 'sections' 选项里成对出现的字符所定义。它的缺省值是 "SHNHH HUnhsh",也就是宏 ".SH"、".NH"、".H"、".HU"、".nh" 和 ".sh"。

按其他对象移动

对象命令描述
括号[{反向第一个的未匹配的 '{'
]{正向第一个的未匹配的 '{'
[}反向第一个的未匹配的 '}'
]}正向第一个的未匹配的 '}'
[(反向第一个的未匹配的 '('
](正向第一个的未匹配的 '('
[)反向第一个的未匹配的 ')'
])正向第一个的未匹配的 ')'
方法
(method)
[m反向第一个方法的开始处
[M反向第一个方法的结束处
]m正向第一个方法的开始处
]M正向第一个方法的结束处
#if #else
#endif
[#反向第一个未匹配的 "#if" 或 "#else"
]#正向第一个未匹配的 "#else" 或 "#endif"
注释[*反向第一个注释的开始 "/*"
[/
]*正向第一个注释的结束 "*/"
]/

操作实例

如果感觉以上介绍云山雾罩,那么不妨对照以下操作实例,请注意:

  • 绿色,标志光标初始位置;
  • 红色,标志光标移动到的目的位置;
  • 橙色,标志光标移动的轨迹;
  • 图片来源于of-vim-and-vigor.blogspot.com

motion_large_objects

Ver: 2.0 | YYQ<上一篇 | 目录 下一篇>