vim移动
字符移动
- k 上移 +
- h 左移
- l 右移
- j 下移
- 你也可以使用键盘上的方向键来移动,但这么做h j k l的存在就失去了意义,之所以使用h j k l来控制方向,其主要目的是让你的手不离开键盘中心,从而提高效率
- tips:在命令前加上数字代表命令执行次数,如:5k,表示上移5行
- 在长句子内移动在你编辑电子邮件或其他段落式文本的时候, 你可能注意到移动方向跳的行数比你料想的多. 这是因为你的段落对vim来说在很长的同一个行里. 用h, j, k, l移动前输入g可以让移动相对于屏幕看上去的行数而不是vim内部的行数.
单词移动
- W w 移动到下一个单词开头
- E e 移动到下一个单词结尾
- B b 倒退到上一个单词开头
- 需要注意的是,E会忽略标点符号,如:I‘m,e会当成两个单词,E则不会.同样,在命令前加上数字代表执行次数,如:2w,表示往下移动2个单词
整行移动
- 0 移动到行首
- $ 移动到行末
- 移动到下一行开头
- 移动到上一行开头
这里需要注意的是+ -和上面的j k有什么不同之处
- j k也是移动到上一行和下一行,但它们移动的是光标所在的位置,+ -不管你的光标在何处,总是移动到下一行或上一行的行首
- n+:光标下移n行
- n-:光标上移n行
- n$:光标移至第n行尾
用z调整光标
- z 将光标所在行移动到屏幕顶端
- zz 把光标下的文字置于屏幕中央
- z- 将光标所在行移动到屏幕低端
- zt 将当前行置于屏幕顶端
- zb 将当前行置于屏幕底端
在屏幕中移动
- H 移动到屏幕顶端的行
- M 移动到屏幕中央的行
- L 移动到屏幕底端的行
- nH 移动到屏幕顶端往下的第n行
- nL 移动到屏幕顶端往上的第n行
在当前行移动x
- ^ 移动到当前行的第一个非空格处
- n| 移动到当前行的第n列
- 这里的^与上面的0通常情况下表示的位置是一样的
- 而n|,个人感觉还没有h l方便,慢慢的数出行数还不如直接按着h l 左右移
根据文本块移动
- 所谓的文本块也就是句子、段落、小节等 ( 移动到当前句子开头
- ) 移动到下一个句子开头
- { 移动到当前这一段开头
- } 移动到下一段开头
- [[ 移动到当前这一节的开头
- ]] 移动到下一节的开头
根据行号来移动
- Ctrl+g 显示当前行信息
- nG 转至第n行
- G 转至文本末尾
- gg 移至文本开头
- 如果你不知道当前是多少行的话就可以用Ctrl+g来查看;如果想转到第800行,可以用800G;其实z命令也可以做到,并且把光标移动到第一行;tips:``反引号可以返回到使用G之前的位置
移动到一个指定的字符
- "f" 表示 "Find"。 例如,假定你在下面例子行的行首,而你想移动到单词 "human" 的h那里
- "F" 命令用于向左查找.
- "tx" 命令与 "fx" 相似,但它只把光标移动到目标字符的前一个字符上。提示:"t" 表示 "To"。这个命令的反向版本是 "Tx"。
- 这四个命令可以通过 ";" 命令重复,"," 命令则用于反向重复
- advanced commands in Vim: t,f,m,e,J
移动光标
- CTRL+e 移动光标所在行的位置,比如我光标在第10行,我想光标不动,但是所在行向上移
- CTRL+y 同上,但是向下移
- % match of next brace, bracket, comment
插入模式下的移动
" insert mode shortcut
inoremap < C-h > < Left > # 插入模式下向左移一位
inoremap < C-j > < Down ># 插入模式下向下移一位
inoremap < C-k > < Up ># 插入模式下向上移一位
inoremap < C-l > < Right > # 插入模式下向右移一位
inoremap < C-d > < DELETE ># 插入模式下删除
inoremap <C-l> <Esc>o # 插入模式下插入空白行