基础移动
1 | h j k l |
当移动的命令为小写时,连续的标点也会被视为单词。
w移动到下一个单词的开头 wordb上一个单词的开头 backwarde下一个单词的末尾 endge上一个单词的末尾 go end
但是当移动的命令为大写时,夹在字母中间的标点会被视为单词的一部分:
WBEgE
还有比较实用的移动是搜索 (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快速跳转到行