基础移动
1 | h j k l |
当移动的命令为小写时,连续的标点也会被视为单词。
w
移动到下一个单词的开头 wordb
上一个单词的开头 backwarde
下一个单词的末尾 endge
上一个单词的末尾 go end
但是当移动的命令为大写时,夹在字母中间的标点会被视为单词的一部分:
W
B
E
gE
还有比较实用的移动是搜索 (find)下一个字符并移动:
f{character}
搜索到下一个 character 字符,然后光标移动到其上。F{character}
搜索上一个 character 字符,移动到其上t{character}
搜索到下一个 character 字符,然后光标移动到它之前。 untilT{character}
搜索到上一个 character 字符,然后移动到它之前。
输入 ;
快速查找下一个相同的字符,输入 ,
查找上一个相同的字符。
1 | 例如 fd;; |
Advanced Movings
行内移动:
0
直接移动到开头^
直接移动到当前行第一个非空白字符$
行末g_
最后一个非空白字符
行间移动:
}
跳过下一个段落(段落是连续的行,中间没有空行隔开){
类似,但是跳到上一个段落之前ctrl + d
(down) 往下翻半页ctrl + u
(up) 往上翻半页
搜索并移动:(之前提到的 f{character}
之内在行内搜索单个字符)
/{pattern}
搜索下一个匹配 pattern 的字符串并移动到那里。可以是字符串,也可以是正则?{pattern}
类似,但是是上一个匹配的字符串- 输入完后会高亮匹配的字符串,输入
Enter
进行跳转 - 再输入
n
跳转到下一个匹配的字符串,N
则是上一个 (next) /<enter>
直接输入斜杠然后回车,vim 会执行上一次搜索过的 pattern。?<enter>
也是同理。- 或者,输入
*
搜索下一个当前光标所在的单词,#
则是上一个
文件跳转
gd
(goto definition) 跳转到光标所在的东西的定义(例如函数定义、变量定义)gf
(goto file) jump to a file in an import
Some More
gg
文件开头G
文件末尾%
如果光标不在括号上,跳转到包含当前单词的左括号上;如果在左/右括号上,跳到与之匹配的另一个括号上{line}gg
快速跳转到行