进一步学习请看vim发布的帮助文档
VIM常用操作
k
h l
J
当前光标位置插入 i
所在行首位置插入 I
当前光标位置后面插入 a
在行尾编辑 A
当前行下面另起一新行 o
当前行上面另起一新行 O
删除换行符 J (即把一行连接到当前行)
删除光标所在字符 x
删除光标所在前一个字符 X
删除整行 dd
删除到行尾 D
删除当前光标所在字符后编辑 s
退格 Ctrl-h
删除当前行后编辑 S
撤消 u ,可以撤消多次
重做 Ctrl + R
重复上一个改变 . (Dot)
查前当前字的man页 相当于执行 : !man
屏幕左下角非空白处 L
屏幕中间非空白处 M
屏幕左上角非空白处 H
向后移动一个word的开头 W, w (这两个有稍微的区别,W 以空白区分字)
向前移动一个word B, b(这两个有稍微的区别)
移到当前word的最后一个字符 e
移动到当前行行尾 $
移动到当前行的第一个 ^
非空白字符上
移动到当前行的第一个字符上 0 (zero)
单字符搜索命令(向右) f : 命令"fx"在当前行上查找下一个字符x
单字符搜索命令(向左) F
跳转到匹配的括号去 % 包括 { } [ ] ( ) 具体可以处理哪 些括号可以
由'matchpairs'选项来定义: help mps
跳转到第一行 gg (or 1G)
跳转到最后一行 G
跳转到第 n 行 nG 如 5G
跳转到文件的百分之N行 N% 如 90%跳到接近文件尾的地方
移动到当前窗口的中间 M
当前在文件中的位置 CTRL-G
向上滚动半屏 CTRL-U
向下滚动半屏 CTRL-D
向上滚动一屏 CTRL-B
向下滚动一屏 CTRL-F
将光标所在行调整至页面中间 zz
下卷一行 Ctrl+e
上卷一行 Ctrl+y
简单搜索(向后) 如 /include 搜索单词 "include"
简单搜索(向前) 如 ?include
查找当前单词的下一个位置 *
查找当前单词的上一个位置 #
Visual模式
V (整行的选择)
Ctrl-v 选择一个区域内容
Shift-v 选择一个矩行区域
光标后粘贴 p
光标前粘贴 P
复制一行 Y
复制 y (需加一行辅助如 y3w 复制3个单词)
寄存器复制(a-z) 如复制3行放到寄存器 a中 "a3Y
寄存器粘贴 "aP
复制到剪切版 "+y
剪切到剪切版 "+x
从剪切版粘贴 "+gp
只读方式打开文件 Vim -R filename
折叠
环境变量 foldmethod 有6种值 manual、indent、expr、syntax、diff、marker
对着折叠的行展开 0 (Zero)
创建折叠区域 zf 后加上移动指令,如 zfj、 zf5k等
在括号处zf%,创建从当前行起到对应的匹配的括号上去((),{},[],<>等)。
折叠 zc
对所在范围内所有嵌套的 zC
折叠点展开折叠
展开折叠 zo
对所在范围内所有嵌套的 zO
处展开折叠
到当前打开的折叠的开始处。 [z
到当前打开的折叠的末尾处。 ]z
向下移动。到达下一个折叠的 zj
开始处。关闭的折叠也被计入。
向上移动到前一折叠的结束处。 zk
关闭的折叠也被计入。
删除 (delete) 在光标下的 zd (仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。)
折叠。
循环删除 (Delete) 光标下 zD (仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。)
的折叠,即嵌套删除折叠。
除去 (Eliminate) 窗口里 zE (仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。)
“所有”的折叠
窗口操作
水平分隔 split
垂直分隔 vsplit
新建一个窗口 new
关闭当前窗口 close
关闭其它窗口 only
增加当前窗口高度 Ctrl+W +
减小当前窗口高度 Ctrl+W -
指定固定高度 {height}Ctrl+W _
切换活动窗口 Ctrl+W w 或 Ctrl+W Ctrl+W
到左边窗口 Ctrl+W h
到右边窗口 Ctrl+W l
到上边窗口 Ctrl+W k
到下边窗口 Ctrl+W j
到顶部窗口 Ctrl+W t
到底部窗口 Ctrl+W b
排版
向右缩进 >>
向左缩进 <<
右移当前行所在的{....} >i}
内的所有代码(不含"{"和"}")
一个shiftwidth个空格
<i{ 相反 <i} 一样效果
右移当前行所在的{....} >a}
内的所有代码(含"{"和"}")
一个shiftwidth个空格
<a{ 相反 <a} 一样效果
大小写转换
行小写 guu
行大写 gUU
行翻转 g~~
标签页Vim在7以后的版本,开始支持标签页的功能
新建一个标签 :tabnew
转到下一个标签 :tabnext
转到上一个标签 :tabprevious
标签 mark--方便跳来跳去
m 标签指令,mx把当前位置标为x, x 可为 a-z A-Z
'x 跳至标签为 x 所在行的行首非空白处
`x 跳至标签为 x 所在行标签时的位置
编辑多个文件
:n 下一个文件
:N 上一个文件
:first 第一个文件
:last 最后一个文件
:qa 全部退出
映射表
:map Normal, Visual and Operator-pending
:vmap Visual
:nmap Normal
:omap Operator-pending
:map! Insert and Command-line
:imap Insert
:cmap Command-line
<silent> 不在命令行上显示该映射
例子:
映射< 为 <>
:imap < x<Esc>r<a><Esc>ha