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 # 插入模式下插入空白行