正常模式一般用于浏览文本,其实也就是通过键盘命令让光标在文本中跳来跳去,在任何模式下按一次或两次<Esc>会进入正常模式。
vim对光标的定位操作非常精确和高效,这是它的一个非常好用的地方。但是,由于按键和按键组合太多太复杂,会让好多初学者望而却步。
其实,vim的光标定位是有规律的,就好像当初学五笔打字一样,看起来要记很多字根,其实键盘上字根的排列是非常有规律的,一旦清楚这些规律,学习就会心里有数很多。
对于vim来说,它的很多操作都遵循<数量><动作><单位>这样的模式,这3者可以互相组合,<数量>不能单独存在。比如w是光标向右移动1个单词,而3w则是光标向右移动3个单词;dw是删除光标后面一个单词,而3dw是删除光标后面3个单词。
上述的<动作>主要用在插入模式,下篇文章讲;<单位>从小到大包括字符、单词、行、句子、段落、屏幕、页面和文件。
下面给出这些<单位>对应的基本光标定位指令:
| 单位 | 命令 | 说明 |
| 字符 | h | 左移1个字符 |
| l | 右移1个字符 | |
| 单词 | w、W | 移动到下一个单词的开头,大写是以空格分隔的单词 |
| b、B | 移动到上一个单词的开头 | |
| e、E | 移动到当前单词的末尾 | |
| 行 | j | 向下移动1行 |
| k | 向上移动1行 | |
| 0 | 移动到行首 | |
| ^ | 移动到行首第一个非空白字符 | |
| $ | 移动到行尾 | |
| <n>| | 移动到当前行第n列,比如12|是移动到第12列 | |
| <n>G | 移动到第n行,比如12G是移动到第12行 | |
| + | 移动到下一行第一个非空白字符处 | |
| - | 移动到上一行第一个非空白字符处 | |
| 句子 | ) | 移动到句尾 |
| ( | 移动到句首 | |
| 段落 | } | 移动到段尾 |
| { | 移动到段首 | |
| 屏幕 | H | 移动到屏幕最上面一行 |
| M | 移动到屏幕中间一行 | |
| L | 移动到屏幕最下面一行 | |
| <Ctrl>+e | 屏幕向下滚动一行,光标不动 | |
| <Ctrl>+y | 屏幕向上滚动一行,光标不动 | |
| zt | 将当前行移动到屏幕顶端 | |
| zz | 将当前行移动屏幕中间 | |
| zb | 将当前行移动到屏幕底端 | |
| 页面 | <Ctrl>+f | 向下滚动一页 |
| <Ctrl>+b | 向上滚动一页 | |
| <Ctrl>+d | 向下滚动半页 | |
| <Ctrl>+u | 向上滚动半页 | |
| 文件 | gg | 移动文件开头 |
| G | 移动文件末尾 | |
| <n>% | 移动到文件n%处,比如30%是定位到文件30%处 |
//TODO: %, [[ ]] [] ][....
【参考】
原文:http://www.cnblogs.com/zzqcn/p/4656518.html