1、一般模式
移动
h或方向左 ------------------- 左移动
j或方向下-------------------- 下移动
k或方向上------------------ 上移动
l或方向右 ------------------- 右移动
crtl+f 向下移动一页(常用)
ctrl+b 向上移动一页(常用)
crtl+d 向下移动半页
crtl+u 向上移动半页
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行
n<space> 移动到这一行的第n个字符
0 移动到这一行的头端(常用)
$ 移动到这一行的末端(常用)
G移动到这个文件的最后一行(常用)
nG 移动到这个文件的第n行,常与:set nu一起用
gg 移动到这个文件的第一行,同1G(常用)
n<Enter> 光标向下移动n行(常用)
搜索
/word 从光标位置开始,向下搜索一个名为word的字符串(常用)
?word 从光标位置开始,向上搜索一个名为word的字符串(常用)
n 表示重复前一个搜索动作(常用)
N 表示反向重复前一个搜索动作(常用)
搜索替换
:n1,n2s/word1/word2/g 表示在n1和n2行之间搜索到word1并用word2替换(常用)
:1,$s/word1/word2/g 表示在第一行和最后一行之间搜索到word1并用word2替换(常用)
:1,$s/word1/word2/gc 表示在第一行和最后一行之间搜索到word1并用word2替换,但是在替换的时候给用户提示(常用)
删除,复制,粘贴
x 在一行中,向后删除一个字符,相当与[Del](常用)
X 在一行中,向前删除一个字符,相当与[Backspace](常用)
nx 连续向后删除n个字符
dd 删除光标所在的那一行(常用)
ndd 删除光标所在的向下n行(常用)
d1G 删除光标所在位置到第一行的所有数据
dG 删除光标所在位置到最后一行到所有数据
d$ 删除光标所在位置到该行最后一个字符的数据
d0 删除光标所在位置到该行第一个字符的数据
yy 复制光标所在的那一行(常用)
nyy 复制光标所在行的向下n行(常用)
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到最后一行的所有数据
y$ 复制光标所在行到该行最后一个字符的数据
y0 复制光标所在位置到该行第一个字符到数据
p 将复制的数据粘贴到光标的下一行(常用)
P 将复制的数据粘贴到光标的上一行(常用)
J 将光标所在行与下一行的数据结合成同一行
u 复原前一个操作,相当与撤销(常用)
crtl+r 重做上一个操作(常用)
. 小数点 ,重复前一个操作,例如重复粘贴,重复删除等(常用)
2、编辑模式
i 在光标所在前方处插入字符(常用)
I 在光标所在行的头部插入字符(常用)
a 在光标所在后方插入字符(常用)
A 在光标所在行的尾部插入字符(常用)
o 字母o,在光标所在的下一行处插入新的一行(常用)
O 字符O,在光标所在的上一行处插入新的一行(常用)
r 替换光标所在的那一个字符(常用)
R 一直替换光标所在的文字,直到按下Esc(常用)
3、命令模式
:w 将编辑的数据保存(常用)
:w! 如果文件属性为只读,则强行写入,具体能不你写入与文件权限有关。
:q 离开vi (常用)
:q! 强制离开不存储文件
:wq 存储后离开(常用)
:e! 将文件还原到最初状态
ZZ 若文件没有更改,则不存储离开,若文件以更改,则存储后离开。
:w filename 相当与另存为文件。
:r filename 在编辑数据中,读入另外一个文件的数据,即内容加载在光标所在行后面
:n1,n2 w filename 将此文件的第n1到n2行另存为filename文件
:!command 暂时离开vi 执行command的显示结果,例如 :! ls /home 即可在vi中查看文件信息
:set nu 显示行号
:set nonu 取消行号
Vim的Visual Block功能 (用键盘的上下左右可见效果,鼠标看不出来)
v 字符选择,光标经过的地方反白选择
V 行选择,光标经过的行反白
crtl+v 块选择,一块一块的地方
y 复制反白地方
d 删除反白地方
多文件编辑
打开多个文件
vim filename1 filename2 filename3 ......
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出当前vim打开的所有文件
多窗口编辑
:sp filename 打开一个新窗口,如果加了filename,表示在新窗口打开一个新文件,否则表示两个窗口为同一文件内容。
crtl+w+j 按下crtl+w 后,放掉再按j,则移动到下方窗口。
crtl+w+k 同上,移动到上方窗口。
crtl+w+q 结束离开
一些常用的Vim环境设置
:set nu 设置行号
:set hlsearch 设置搜索的字符串反白,如果不想就设置为:set nohlsearch
:set autoindent 设置自动缩排,不自动缩排:set noautoindent
:set backup 是否自动备份,一般用nobackup,否则会生成一个备份文件filename~
:set ruler 设置右下角是否显示状态
:set showmode 设置左下角显示状态如--INSERT--
:set backspace=(012) 一般来说,用i进入编辑模式后可以用退格键来删除字符,但某些版本不允许,此时可以用backspace来设置,当backspace=2时,可以删除任何字符。0或1时,只能删除刚输入的字符。
:set all 显示所有的环境设置
:syntax (off / on) 是否开启语法显色。
经验:
不必每次都要设置,可以自己建立一个配置文件:如下
vim ~/.vimrc
:set hlsearch
:set backspace=2
:set autoindent
:set ruler
:set showmode
:syntax on