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