正常模式:可以使用快捷键命令,或按:输入命令行。
插入模式:可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。
可视模式:1.正常模式下按v可以进入可视模式,在可视模式下,移动光标可以选择文本。2.按V进入可视行模式,总是整行整行的选中。3.ctrl+v进入可视块模式。
替换模式:正常模式下按R,进入替换模式,按esc回到正常模式。按r,替换光标处的字符,一次只能替换一个字符。
切换:ctrl+z 将当前任务退到后台(会发送SIGTSTP信号),fg回到最近退到后台的任务,相当实用,如用vim编辑时可以先临时退出编辑,然后再fg回来编辑。
(2)启动Vim
vim -c cmd file 在打开文件前,先执行指定的命令;
vim -r file 恢复上次异常退出的文件;
vim -R file 以只读的方式打开文件,但可以强制保存;
vim -M file 以只读的方式打开文件,不可以强制保存;
vim -y num file 将编辑窗口的大小设为num行;
(3)文档操作
:e file --关闭当前编辑的文件,并开启新的文件。
:e! file --放弃对当前文件的修改,编辑新的文件。
:e -- 重新加载当前文档。
:e! -- 重新加载当前文档,并丢弃已做的改动。
:e# 或ctrl+^ -- 回到刚才编辑的文件,很实用。
:w -- 保存修改。
:wq -- 保存并退出。
ZZ -- 保存并退出。
:x -- 保存并退出。
:q! ——不保存并退出当前窗口。
:f或ctrl+g -- 显示文档名,是否修改,和光标位置。
:f filename -- 改变编辑的文件名,这时再保存相当于另存为。
:saveas newfilename -- 另存为
:Sex -- 水平分割一个窗口,浏览文件系统;
:Vex -- 垂直分割一个窗口,浏览文件系统;
(4)基本移动
在normal模式下的移动:
0 移动到行首。
g0 移到光标所在屏幕行行首。
$ 移动到行尾(shift+4)。
g$ 移动光标所在屏幕行行尾。
n| 把光标移到递n列上。
nG 到文件第n行。
H 把光标移到屏幕最顶端一行。
M 把光标移到屏幕中间一行。
L 把光标移到屏幕最底端一行。
gg 到文件头部。
G 到文件尾部。
:n<cr> 移动到第n行。
:$<cr> 移动到最后一行。
(5)剪切和复制、粘贴
y 复制在可视模式下选中的文本。
yy or Y 复制整行文本。
y$ 从光标当前位置复制到行尾。
y0 从光标当前位置复制到行首。
ygg 复制光标以上的所有行。
yG 复制光标以下的所有行。
:m,ny<cr> 复制m行到n行的内容。
[n]x 剪切光标右边n个字符,相当于d[n]l。
[n]X 剪切光标左边n个字符,相当于d[n]h。
d 删除(剪切)在可视模式下选中的文本。
D 删除(剪切)当前位置到行尾的内容。
d0 删除(剪切)当前位置到行首的内容
[n] dd 删除(剪切)1(n)行。
:m,nd<cr> 剪切m行到n行的内容。
dgg 剪切光标以上的所有行。
dG 剪切光标以下的所有行。
p 在光标之后粘贴。
P 在光标之前粘贴。
(6)查找、替换
/something 在后面的文本中查找something。
?something 在前面的文本中查找something。
n 向后查找下一个。
N 向前查找下一个。
:s/old/new - 用new替换当前行第一个old。
:s/old/new/g - 用new替换当前行所有的old。
:n1,n2s/old/new/g - 用new替换文件n1行到n2行所有的old。
:%s/old/new/g - 用new替换文件中所有的old。
:%s/^/xxx/g - 在每一行的行首插入xxx,^表示行首。
:%s/$/xxx/g - 在每一行的行尾插入xxx,$表示行尾。
所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写(ignore)。
(7)撤消与重做(normal模式)
u 取消一个改动。
[n]u 取消一(n)个改动。
U: 取消当前行中所有的改动。
:undo 5 -- 撤销5个改变。
:undolist -- 你的撤销历史。
ctrl + r: 重做最后的改动。
:earlier 4m -- 回到4分钟前
:later 55s -- 前进55秒
(8)多行缩进缩出
正常模式下,按shift+>;光标所在行会缩进。
如果先按了n,再按shift+>,光标以下的n行会缩进。
对应的,按shift+<,光标所在行会缩出。
然后按shift+v,可以看到该行已被选中,且左下角提示为“可视”
按shift+>,按shift+< 可以将选中的内容前后缩进一个tab值,
还有一种方式:就是输入:2,8>再回车,即可将2至8行后缩进一个tab
(9)显示与隐藏
set nu 显示行号
set nonu 取消显示行号
(10)执行外部命令
:! cmd 执行外部命令。
:!! 执行上一次的外部命令。
:sh 调用shell,用exit返回vim。
:r !cmd 将命令的返回结果插入文件当前位置。
:m,nw !cmd 将文件的m行到n行之间的内容做为命令输入执行命令。
:r !date 在光标处插入当前日期与时间。同理,:r !command可以将其它shell命令的输出插入当前文档。