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