模式切换
1.进入命令行模式
Esc
在任何模式下回到正常模式
进入插入模式
i
在当前光标之前插入I
在整行之前插入a
在当前光标之后插入A
在整行最后插入cw
删除一个单词并进入插入模式cc
删除一整行并进入插入模式r
替换当前字符R
连续替换多个字符
选择、复制、剪切和粘贴
v
进入可视模式,可以移动光标进行行选择V
进入可视模式,可以移动光标进行行选择(选择整行)Ctrl + v
进入可视模式,可以移动光标进行列选择- 可视模式下,选择后使用
y
,复制选中内容,使用x
或者d
剪切选中内容,使用p
粘贴选中内容 yy
复制一整行,前面可以加数字复制多行,即nyy
dd
剪切一整行,前面可以加数字剪切多行,即ndd
yw
表示拷贝从当前光标到光标所在单词结尾的内容.D
表示删除从当前光标到光标所在行尾的内容.dw
表示删除从当前光标到光标所在单词结尾的内容.y0
表示拷贝从当前光标到光标所在行首的内容.d0
表示删除从当前光标到光标所在行首的内容.y$
表示拷贝从当前光标到光标所在行尾的内容.d$
表示删除从当前光标到光标所在行尾的内容.yfa
表示拷贝从当前光标到光标后面的第一个a字符之间的内容.dfa
表示删除从当前光标到光标后面的第一个a字符之间的内容.
查找与替换
/
后输入要查找的内容,进行前向匹配?
后输入要查找的内容,进行后向匹配n
查找下一项N
查找上一项:nohls
取消高亮:set ignorecase
忽略大小写:set nignorecase
关闭忽略大小写f(F)x
在光标所在行进行向前(后)查找,并跳到字符x处*(#)
当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的
下(上)一个单词. 同样, 再输入 n 查找下一个匹配处, 输入 N 反方
向查找.g*(g#)
此命令与上条命令相似, 只不过它不完全匹配光标所在处的单词, 而
是匹配包含该单词的所有字符串gd
查找与光标所在单词相匹配的单词, 并将光标停留在文档的非注释段中第一次出现这个单词的地方:s/aa/bb/g
将光标所在行出现的所有包含 aa 的字符串中的 aa 替换为 bb:%s/aa/bb/g
将文档中出现的所有包含 aa 的字符串中的 aa 替换为 bb:12,23s/aa/bb/g
将从12行到23行中出现的所有包含 aa 的字符串中的 aa 替换为 bb:12,23s/^/#/
将从12行到23行的行首加入 # 字符:%s= *$==
将所有行尾多余的空格删除:g/^\s*$/d
将所有不包含字符(空格也不包含)的空行删除
代码折叠与缩进
zf
折叠代码zo
打开折叠zr
关闭折叠zc
关闭折叠>
向右缩进>
向左缩进=
自动化进行选中部分代码排版:set shiftwidth=4
设置自动缩进 4 个空格, 当然要设自动缩进先.:set sts=4
即设置 softtabstop 为 4. 输入 tab 后就跳了 4 格.:set tabstop=4
实际的 tab 即为 4 个空格, 而不是缺省的 8 个.:set expandtab
在输入 tab 后, vim 用恰当的空格来填充这个 tab.
光标移动
h
向左移动j
向下移动k
向上移动l
向右移动0
移动到行首$
移动到行尾^
移动到一行的句首w
移动到下一个单词b
移动到上一个单词H
移动到屏幕首行M
移动到屏幕中间L
移动到屏幕最低行gg
移动到文档首行G
移动到文档尾行Ctrl + f
向前翻页Ctrl + b
向后翻页:n
跳转到第k行%
跳转到光标对应处反括号,包括()[]{}等''
跳转到上一次标记处`.
跳转到上一次修改点'.
跳转到上一次修改行Ctrl + ]
跳转到函数定义处(需要有ctags配合)Ctrl + o
和Ctrl + t
返回 (同上)K
查看光标所在处的帮助文档
快捷输入
Ctrl + N(P)
通过向上向下搜索匹配单词并且补全Ctrl + x + l
快速补齐整行内容Ctrl + x + f
快速补齐路径:abbr a b
通过缩写a来替代输入b
多窗口操作
(v)sp filename
分(竖)横屏打开新文件:ls
查看打开了哪些文件:b file
跳转到文件file处Ctrl + w + +
扩大窗口Ctrl + W + -
缩小窗口Ctrl + W + h
移动到窗口左边Ctrl + W + j
移动到窗口下边Ctrl + W + k
移动到窗口上边Ctrl + W + l
移动到窗口右边
其他命令
u
撤销操作Ctrl + r
反撤销操作:! cmd
执行终端命令:g/^/exec "s/^/".strpart(line(".")." ", 0, 4)
在行首插入行号:runtime! syntax/2html.vim
转换 txt 成 html,根据默认的颜色配置来转- vim中的很多命令可以通过数字键的组合实现重复操作