VI工作模式
插入模式 <--------> 命令模式 <--------> 编辑模式
插入命令
a在光标后附加文本
A在本行行末附加文本
i在光标前插入文本
I在本行开始插入文本
o在光标下插入新行
O在光标上插入新行
定位命令
hjkl $ 移至行尾 0 移至行首
HML 移动屏幕上端、中央、下端
:set nu 设置行号
:set nonum 取消行号
gg 到第一行
G 到最后一行
nG 到第n行
:n 到第n行
删除命令
x 删除光标所在处字符
nx删除光标所在处后n个字符
dd删除光标所在行,ndd删除n行
dG 删除光标所在行到末尾的内容
D删除光标所在行到行尾内容
:n1,n2d 删除指定范围的行
复制和剪切命令
yy、Y 复制当前行
nyy、nY复制当前行以下的n行
dd 剪切当前行
ndd剪切当前行以下的n行
p、P黏贴在当前光标所在 行下 或者 行上
替换和取消命令
r 取代光标所在处字符
R 从光标所在处开始替换字符,按ESC结束
u取消上一步操作
搜索和替换命令
/string 向前搜索指定字符串,向下/向上检索 n/N
忽略大小写 :set ic/noic
:%s/old/new/g 全文替 换指定字符串
:n1,n2s/old/new/g 在一定范围内替换指定字符串
g交互方式替换,替换不会提示是否替换,如果换成c,就会提示是否替换;
保存退出命令
:w 保存
:w new_filename 另存为指定文件
:wq 保存修改并退出
ZZ 快捷键,保存修改并退出
:q! 不保存修改并退出
:wq! 保存修改并退出(文件所有者忽略文件爱你的只读属性)
应用实例
:r /ect/issue 将另一文件导入到当前编辑的文件中
:! ls /root/ 执行命令
导入文件和执行命令放在一起执行
:r !date 将系统时间导入到光标所在位置
:r !ls /etc 将命令执行结果导入到当前文件的中
定义快捷键 :map 快捷键 触发命令
范例: 注释 :map ^P( ctrl + v 和 ctrl + p, ctrl+v+p) I(大写i,跳到行首)#<ESC>
去掉 :map ^B 0x( 0跳到行首,x删除)
定义快捷键,插入邮箱地址
:map ^Els@sina.com
连续行注释:
:n1,n2s/^/#/g
:n1,n2s/^#//g
:n1,n2s/^/\/\//g 2个转义符
替换:
:ab sammail samlee@sina.com
:unab sammail
编辑配置文件 ~/.vimrc
set nu
map ^P I#<ESC>
ab mymail ls@sina.com