vi
编辑
| 命令 | 含义 | 
|---|---|
| r | 替换单一字符(在非insert模式下) | 
| J | 将当前行和下一行合并 | 
| cc | 改变一整行 | 
| cw | 改变最后一个单词 | 
| c$ | 改变光标到最后一个单词 | 
| u | undo | 
| ctrl-r | redo | 
| . | 重复上一个命令 | 
| ~ | 切换大小写 | 
| g~iw | 切换当前单词的大小写 | 
| gUiw | 当前单词大写 | 
| guiw | 将当前单词改为小写 | 
| >> | 向右缩进当前行 | 
| << | 向左缩进当前行 | 
| == | 自动缩进当前行 | 
插入
| 命令 | 含义 | 
|---|---|
| i | 在光标处进入插入 | 
| I | 在当前行行首的非空字符处插入 | 
| a | 在光标之后插入 | 
| A | 在行尾插入 | 
| o | 在当前行下新开一空白行 | 
| O | 在当前行前新开一空白行 | 
| esc | 退出insert模式 | 
| Cursor | Movement | 
| ctrl-f | 向上翻页 | 
| ctrl-b | 向下翻页 | 
| % | {} 、()、[]之间相互跳转,看代码利器 | 
| w | jump to end of words(标点) | 
| W | jump by words | 
| e | jump to end of words(标点) | 
| E | jump to end of words | 
| b | jump backward by words(标点) | 
| B | jump backward by words | 
| 0 | 行首(含空白字符) | 
| ^ | 行首第一个非空字符 | 
| $ | 行尾 | 
| gg | 第一行 | 
| gd | 跳到方法或变量的声明处 | 
| nG | 跳到第n行 | 
| fx | 跳到当前行的x字符 | 
| ; | 重复上一个f命令 | 
| tx | 和fx很像,但是跳到x之前的一个字符 | 
查找替换
| 命令 | 含义 | 
|---|---|
| /pattern | 模式匹配 | 
| ?pattern | 模式匹配(倒着来) | 
| n | 重复查找 | 
| N | 重复查找倒序 | 
| s/old/new/ | 替换当前航第一个old -> new | 
| s/old/new/g | 替换当前行所有 | 
| s/old/new/gc | 每个替换都需要确认 | 
| 1,$s/old/new/g | 替换第一行到最后一行, 1,$等价于% | 
    
剪切复制
| 命令 | 含义 | 
|---|---|
| dd | 剪切一行 | 
| dw | 删除当前单词 | 
| x | 删除光标当前字符 | 
| X | 删除光标之前的字符 | 
| D | 删除光标所在到行尾 | 
| yy | 复制一行 | 
| 2yy | 复制两行 | 
| yw | 复制光标当前单词 | 
| y$ | 复制光标到行尾所有字符 | 
| p | 粘贴 | 
| P | 在光标之前粘贴 | 
退出
| 命令 | 含义 | 
|---|---|
| w | 保存 | 
| wq | 保存并退出 | 
| x | 保存并退出 | 
| q | 退出,如果不保存会失败 | 
| q! | 强制退出 | 
多文件操作
| 命令 | 含义 | 
|---|---|
| e xxx | 在一个新的buffer中编辑xxx | 
| bn | 切换到下一个buffer | 
| bd | 删除一个buffer(关闭文件) | 
| sp xxx | 在新的buffer中打开文件并分割窗口 | 
| ctrl-w s | 分割窗口 | 
| ctrl-w w | 切换窗口 | 
| ctrl-w q | 退出窗口 | 
| ctrl-w v | 垂直分割窗口 | 
| table xxx | 编辑文件在一个新的tab | 
| gt | 下一个tab | 
| gT | 之前的tabs | 
| tabr | 第一个tab | 
| tabl | 最后一个tab | 
| tabm n | move当前tab之后的第n个 | 
显示行号
- 方法一:
 
1、显示当前行行号,在VI的命令模式下输入:nu
2、显示所有行号,在VI的命令模式下输入:set nu
- 方法二:
 
使用vi编辑~/.vimrc文件,在该文件中加入一行”set nu”,添加内容不含引号, 命令如下:vi ~/.vimrc
- 方法三:
 
在UBUNTU中vi的配置文件存放在/etc/vim目录中,配置文件名为vimrc 在Fedora中vi的配置文件存放在/etc目录中,配置文件名为vimrc
在Red Hat Linux 中vi的配置文件存放在/etc目录中,配置文件名为vimrc
使用vi编辑该文件,在该文件中加入一行”set nu”,添加内容不含引号。如Ubuntu命令:vi /etc/vim/vimrc
块编辑模式
1.ctrl + v 进入虚拟模式
2.上下移动
3.I (大写的i)进行编辑
4.ESC,使其对所有行生效
ps
显示当前文件名 ctrl + g 或者 :f
拷贝多行
方法一: 直接使用yy 和 p
直接5yy 然后p
方法二: 使用标签和缓冲区
本文件内:
光标移到起始行,输入ma
光标移到结束行,输入mb
光标移到粘贴行,输入mc
然后 :'a,'b co 'c
把 co 改成 m 就成剪切了
不同文件内:
光标移到起始行,输入ma
光标移到结束行,输入mb
然后:'a, 'b w filename
在文件二:
光标移到需要赋值的行,输入:
:r filename
光标移到结束行,输入mx
光标移到起始行,输入"ay'x 复制放到a缓冲区中  
光标移到需要复制的行,输入"ap
参考
http://www.freeos.com/guides/lsst/misc.htm#commonvi
[vim命令速查卡一]http://coolshell.cn/airticles/150.html
[vim命令速查卡二]http://coolshell.cn/airticles/5479.html
[拷贝多行]http://www.chinaunix.net/old_jh/4/910342.html
[拷贝多行]http://blog.csdn.net/xiyuan1999/article/details/5680102