Vim笔记(1)-光标移动

简介

  • Vim是一款功能丰富而强大的文本编辑器, 其代码补全、编译及错误跳转等方便编程的功能特别丰富, 在程序员中得到非常广泛的使用, Vim能够大大提高程序员的工作效率

  • Vim有三种模式, NormalInsertVirtual 模式, 打开时处于 Normal 模式, 此时不能插入内容, 但是可以移动光标并进行一些删除或查找操作. Virtual 模式下可以选中部分文本然后操作

  • i 可以切换到 Insert 模式, v 可以切换到 Virtual 模式, <Esc><Ctrl-[><Ctrl-C> 可以切换到 Normal 模式( <Ctrl-C> 表示 CtrlC 一起按), 这三种都可以, 但是我更推荐 <Ctrl-C>, 因为离得比较近

  • 还有一种命令行模式支持各种高级的 Vim 操作, 可以通过以下几个提示符进入命令行模式 : $:/?=

基本移动操作

按键操作 含义
h 光标左移一步
l 光标右移一步
j 光标下移一行
k 光标上移一行

在键盘上的位置如下所示:

      ↑
← h j k l →
    ↓

快速移动操作

根据单词进行水平移动

按键操作 含义
w 光标移动到下一个单词的第一个字符( word, 算两个单词 )
b 光标移动到上一个单词的第一个字符( word, 算两个单词 )
W 光标移动到下一个单词的第一个字符( word, 算一个单词 )
B 光标移动到上一个单词的第一个字符( word, 算一个单词 )
e 光标移动到下一个单词的最后一个字符 ( 规则和 w 类似 )
ge 光标移动到上一个单词的最后一个字符 ( 规则和 b 类似 )
E 光标移动到下一个单词的最后一个字符 ( 规则和 W 类似 )
gE 光标移动到上一个单词的最后一个字符 ( 规则和 B 类似 )

根据具体的字符移动

按键操作 含义
f{character} 在光标所在行移动, 移动到下一个指定的字符所在
F{character} 在光标所在行移动, 移动到上一个指定的字符所在
t{character} f{character} 类似, 不过在指定字符的上一格
T{character} F{character} 类似, 不过在指定字符的下一格

技巧 : 使用完一次上述命令后, 按 ; 可以重复执行命令, , 可以回退

水平移动

按键操作 含义
0 移动到当前行的第一个字符, 包括空格
^ 移动到当前行的第一个非空格字符(常用)
$ 移动到当前行的最后一个字符, 包括空格
g_ 移动到当前行的最后一个非空格字符(常用)

垂直移动

按键操作 含义
} 向下跳转整个段落
{ 向上跳转整个段落
<Ctrl-D> 向下移动半页
<Ctrl-U> 向上移动半页

高级移动操作

根据字符串匹配来移动

按键操作 含义
/{pattern} 进行正向查找, 例如 /hello 就会查找从当前光标往下的所有 hello 字符串, 按 Enter 即可移动到单词位置
?{pattern} 进行反向查找, 移动方向相反

技巧 : 以上两种方式都会找出全文的匹配字符串, 按下回车后所有字符串一般都会高亮, 如果你想取消高亮, 就在 Normal 模式下输入 :noh 即可; 如果你想在所有匹配的字符串移动, n 可以移动到下一个匹配到的字符串位置, N 可以移动到上一个匹配到的字符串位置

定量移动

  • 可以通过 数字+移动命令 的方式进行定量移动, 如 5j 就是向下移动 5 行, 3/hi 可以在按下 Enter 后跳到第三个匹配到的字符串位置

核心移动操作

按键操作 含义
gg 光标移动到文件的顶部
{line}gg 移动到具体的一行, 如: 12gg 移动到第 12 行的第一个非空格字符
G 移动到文件的末尾
% 进行括号匹配跳转