基础
j,k,h,l
# 下,上,左,右
- Ctrl+F # 下一页
- Ctrl+B # 上一页
- Ctrl+D # 下半页
- Ctrl+U # 上半页
- Ctrl+E # 屏幕下滚一行
- Ctrl+Y # 屏幕上滚一行
w
# 到下一个单词(word)的开头W
# 到下一个单词(WORD)的开头e
# 到当前单词(word)的结尾E
# 到当前单词(WORD)的结尾b
# 到上一个单词(word)的开头B
# 到上一个单词(WORD)的开头
- word 包括字符串、数字、下划线
- WORD 包括非空白的字符,即用空格分开的
- 例:192.168.1.3 包括7个word,1个WORD
0
# 到行首$
# 到行尾^
# 到当前行第一个非空白处g_
# 到当前行最后一个非空白处
{
# 到当前段(paragraph)开始处}
# 到下一段(paragraph)开始处[[
# 到当前块(section)开始处]]
# 到下一块(section)开始处(
# 到当前句(sentence)开始处)
# 到下一句(sentence)开始处
高级
H
# 光标移到当前页第一行首(home)M
# 光标移到当前页中间行首(middle)L
# 光标移到当前页最后行首(last)
z<ENTER>
# 将光标所在行重绘为屏幕第一行z-
# 将光标所在行重绘为屏幕最后行z.
# 将光标所在行重绘为屏幕中间行
:0
# 到文件顶部(第一行)gg
# 到文件顶部1G
# 到文件顶部:$
# 到文件底部(最后)GG
# 到文件底部
50%
# 到文件50%的位置75%
# 到文件75%的位置10l
# 从当前位置向后10个字符10<space>
# 从当前位置向后10个字符:goto 20
到文件的第20个字符10|
到当前行第20个字符
:set number
# 显示行号:set nu
# 显示行号:set nonumber
# 不显示行号:set nonu
# 不显示行号:set numberwidth=5
# 设置行号占5个字符宽度,默认为4
:100
# 到100行100gg
# 到100行100G
# 到100行
%
# 到匹配的字符,包括 (){}[][(
# 到前一个不匹配的 ([)
# 到前一个不匹配的 )[{
# 到前一个不匹配的 {[}
# 到前一个不匹配的 }
SHIFT-<Right Arrow>
# 插入模式下跳到右面一个单词(word)SHIFT-<Left Arrow>
# 插入模式下跳到左面一个单词(word)
(TODO:上面这个应该是在插入模式下按Shift+箭头是为选中,gvim 7.3下是这样)
专家
:jumps
# 查看跳转历史Ctrl+O
# 后退一步Ctrl+I
# 前进一步3Ctrl+O
# 后退三步3Ctrl+I
# 前进三步
gj
# 到下一可视行(visual line)(一行文字太多会分为多个可视行)gk
# 到上一可视行g^
# 到可视行行首g$
# 到可视行行尾gM
# 到可视行行中
$ vim +100 <filename>
# 到文件第100行$ vim +/search-term <filename>
# 到文件顶端第一个匹配的地方$ vim +?search-term <filename>
# 到文件底端第一个匹配的地方$ vim -t TAG
# 到tag
ma
# 创建当前位置的书签a`a
# (反引号)到书签a的位置'a
# (单引号)到书签a的行首mX
# 创建当前位置的书签X`X
# (反引号)到书签X的位置
- m{mark-name},创建本地书签为m后跟一个小写字母
- m{mark-name},创建全局书签为m后跟一个大写字母(多个文件时使用)
marks
# 显示所有书签marks a
# 显示书签a的详细信息
`"
# 到上次退出前最后编辑的位置,默认书签`[
# 到前一次修改或粘贴的第一个字符,默认书签`]
# 到前一次修改或粘贴的最后一个字符,默认书签`<
# 到前一次选中区的第一行,默认书签`>
# 到前一次选中区的最后一行,默认书签`.
# 到最后一次修改的位置,默认书签'.
# 到最后一次修改行行首,默认书签`^
# 到最后一次插入模式时光标所在的位置,默认书签