vi编辑命令
1、插入命令
命令 | 作用 |
a | 在光标后附加文本 |
A | 在本行行末附加文本 |
i | 在光标前附加文本 |
I | 在本行开始插入文本 |
o | 在光标下插入新行 |
O | 在光标上插入新行 |
2、定位命令
命令 | 作用 |
h、方向左键 | 左移一个字符 |
j、方向下键 | 下移一行 |
k、方向上键 | 上移一行 |
l、方向右键 | 右移一个字符 |
$ | 移至行尾 |
0(数字0) | 移至行首 |
命令 | 作用 |
H | 移至屏幕上端 |
M | 移至屏幕中央 |
L | 移至屏幕下端 |
命令 | 作用 |
:set nu | 设置行号 |
:set nonu | 取消行号 |
gg G |
到第一行 到最后一行 |
nG |
到第n行 |
:n |
到第n行 |
3、删除命令
命令 | 作用 |
x | 删除光标所在处字符 |
nx | 删除光标所在处n个字符 |
dd | 删除光标所在行,ndd删除n行 |
dG | 删除光标所在行到文件末尾的内容 |
D | 删除光标所在处到行尾 |
:n1,n2d | 删除指定范围的行 |
4、复制和剪切命令
命令 | 作用 |
yy、Y | 复制当前行 |
nyy、nY | 复制当前行一下n行 |
dd | 剪切当前行 |
ndd | 剪切当前行一下n行 |
p、P | 粘贴在当前光标所在行下或行上 |
5、替换和取消命令
命令 | 作用 |
r | 取代光标所在处字符 |
R | 从光标所在处开始替换字符,按Esc结束 |
u | 取消上一步操作 |
6、搜索和替换命令
命令 | 作用 |
/string | 向前搜索指定字符串,搜索时忽略大小写:set ic; 取消忽略大小写命令:set noic |
n | 搜索指定字符串的下一个出现位置;小n从前往后找,大N从后往前找. |
:%s/old/new/g | 全文替换指定字符串(/g表示不需要确认,globle;如果是/c表示需要确认,方可替换;) |
:n1,n2s/old/new/g | 在一定范围内替换指定字符串 |
7、保存退出命令
- :wq 保存退出
- shift + zz 保存退出
- ZZ 保存退出
- :wq! 强行保存退出(只有文件的所有者或者管理员root才可以;)
- :q 不保存退出
- :w 仅仅做保存
- :w /home/arcerzhang 另存为到/home/arcerzhang目录下
8、应用实例
- 导入文件:r 文件名
- :r /etc/issue
- 在vi中执行命令:!命令
- 导入文件与在vi中执行命令一起操作:r !date,将当前的系统时间导入到当前文件中;
- 定义快捷键:map 快捷键 触发命令
- 范例:
- map ^P I#<ESC> [命令含义解读:定义快捷键ctrl + p,当按下crtl + p键时,自动跳转到行首,并插入#注释,之后退回到命令行模式](unmap ^P,取消快捷键)
- map ^B 0x [命令含义解读:定义快捷键ctrl + b,当按下ctrl + b 键时,自动将行首的注释给去掉](unmap ^B取消快捷键)
- map ^E ijun.qing.zhang@163.com [命令含义解读:按下ctrl + e ,在光标前面插入邮箱地址jun.qing.zhang@163.com](取消快捷键)
- 注意:如何按键按出^?(ctrl +v即可,比如定义快捷键ctrl + p,就是ctrl + v + p;)
- 连续行注释
- :n1,n2s/^/#/g [将第n1行至第n2行,用#进行注释;](注意:^符号与定义快捷键中的ctrl +v不同,这里可以直接使用shift + ^即可;)
- :n1,n2s/^#//g [将第n1行至第n2行的注释#,进行取消;]
- :n1,n2s/^/\/\//g [将第n1行至第n2行,添加注释//]
- :n1,n2s/^\/\///g [将第n1行至第n2行,取消注释//]
- 替换
:ab sammail samlee@lampbrother.net 替换命令,当输入sammail时,自动转换成samlee@labmpbrother.net
:unab sammail [取消ab的定义]
9、vim配置文件的宿主目录
~/.vimrc