快速移动
配合数字一起使用,重复执行从而移动多步。
# 字符移动
k # 上,可先按数字,多步移动
j # 下
h # 左
l # 右
# 单词/词组移动
w/W # 下一个单词/词组开头,也可先按数字,多步移动
e/E # 下一个单词/词组结尾
b/B # 上一个单词/词组开头
ge/gE # 上一个单词/词组结尾
# 一个单词指以非空格符分割的单词(会把空格符也作为单词的一部分),通常包含a-zA-Z0-9,查看帮助:h word
# 一个词组指一个包含除了空字符(空字符包含空格,tab,EOL)之外的其他字符组成的字符串,即以空字符分割,查看帮助:h WORD
# 行内字符搜索移动(当前行导航)
f+指定的字符 # 光标移动到本行指定的字符上
t+指定的字符 # 光标移动到本行指定的字符的前一个字符
F+指定字符 # 逆向搜索移动到本行指定字符
T+指定字符 # 逆向搜索移动到本行指定字符的前一个字符
# 分号;搜索下一处,可先按数字,多步移动可先按数字,多步移动
# 逗号,搜索上一处,可先按数字,多步移动
# 水平移动(行内)
0 # 移动到行首
$ # 移动到行尾
^ # 移动到该行第一个非空白字符
g_ # 移动到该行行尾非空白字符
数字+| # 移动到本行指定列
# 句子:通常以.或!或?和跟着的换行符、空格、tab结尾的。帮助文档:h setence。
) # 跳到下一个句子
( # 跳到上一个句子
# 段落:大多数情况下,段落以空行开始和结尾。帮助文档::h paragraph。
{ # 跳到上一个段落
} # 跳到下一个段落
# 括号匹配导航
% # 跳到与该括号匹配的括号处
# 行号导航
gg # 移动到文件开头
G # 移动到文件结尾
数字+G 或 数字+gg # 跳转到文件的指定数字行
数字+% # 跳到文件的百分之'数字',比如50%跳到文件总行数的50%左右的行
ctrl-g # 查看文件总行数
# 当前页面内移动(窗格导航)
H # 光标移动到当前页面的顶部
M # 光标移动到当前页面的中间
L # 光标移动到当前页面的底部
nH # 光标移动到距离顶部n行的位置
nL # 光标移动到距离底部n行的位置
# 滚动
ctrl+f # 向下滚动一屏
ctrl+b # 向上滚动一屏
ctrl+d # 向下滚动半屏
ctrl+u # 向上滚动半屏
ctrl+e # 向下滚动一行
ctrl+y # 向上滚动一行
数字+ # 光标下移指定数字行
数字- # 光标上移指定数字行
zt # 将指定行移动到屏幕顶部,默认为光标所在行,先按数字可以指定行
zz # 将指定行移动到屏幕中间,默认为光标所在行,先按数字可以指定行
zb # 将指定行移动到屏幕底部,默认为光标所在行,先按数字可以指定行
位置标记Marks
- 标记作用:通过标记来保存位置,可以快速回到标记的位置。帮助文档
:h marks
- Vim已经提供的一些标记
'' # 在当前buffer中跳转回到上一次跳转前的最后一行 `` # 在当前buffer中跳转回到上一次跳转前的最后一个位置 `[ # 跳转到上一次修改或拷贝的文本的开头 `] # 跳转到上一次修改或拷贝的文本的结尾 `< # 跳转到最近一次可视模式下选择的部分的开头 `> # 跳转到最近一次可视模式下选择的部分的结尾 `0 # 跳转到退出Vim前编辑的最后一个文件
- 自定义位置标记:通过
mx
设置一个标记,其中x
通常可设置为a-z
或A-Z
。设置好标记后,可以通过`x精确回到标记的位置(行和列),或者用’x回到标记的行。- 举例
ma # 用a标签标记一个位置 `a # 精确回到a标签的位置 'a # 跳到a标签的行
a-z
的标签是局部标签,也就是作用域只在当前buffer,每个buffer都可以有自己的一套局部标签,一个buffer的标签不会影响另一个buffer的同名局部标签。A-Z
的标签是全局标签,所有buffer共享的一套标签,实现标签的跨文件使用,从而从一个buffer跳转到另一个buffer中标记的位置。- 使用
:marks
可以查看所有标签。
跳转
:tag # 跳到tag定义
- 查看当前跳转列表
:jumps
,帮助文档:h jump-motions
# 打开文件时跳转到指定行和指定列
vim test.zshrc -c "normal 12G8|" # 跳到12行8列