VIM/VI的工作模式
一、插入文本
命令 | 描述 |
i | 在当前字符前插入文本 |
I | 在行首插入文本 |
a | 在当前字符后添加文本 |
A | 在行末添加文本 |
o | 在当前行后面插入一空行 |
O | 在当前行前面插入一空行 |
R | 以改写方式输入文本 |
$ | 移动至行尾 |
0 | 移动至行首 |
命令 | 作用 |
H | 移动到屏幕上端 |
M | 移动到屏幕中央 |
L | 移动到屏幕下端 |
二、定位命令
命令 | 作用 |
:set nu | 设置行号 |
:set nonu | 取消行号 |
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 | 搜索指定字符串的下一个出现位置 |
:%s/old/new/g | 权威替换指定字符串 |
:n1,n2s/old/new/g | 在一定范围内替换指定字符串 |
1.搜索
忽略大小写
:set ic
/string
取消大小写忽略:
:set noic
2.替换
old:被替换的字符
new:替换成的字符
七、保存退出:shift+zz
只保存,不退出 :w /home/back.bak
对于只有读权限的文件,只有管理员和该文件的所有者才能通过:wq! 强行更改并保存,其他用户无法更改。
八、常用用法
1. 导入其他文件
:r [文件名]
2. 在Vi中执行命令并显示,不用退出
:! [命令]
注意:1和2组合使用:将命令的执行结果导入到Vi
范例: 将当前时间导入到Vi中
:r !date
3. 定义快捷键:map 快捷键触发命令
范例:
:map ^P I#<ESC> (^ = ctrl+v+p 实现方法) (I 定位到行首)
实现(Ctrl + p):定位到行首,插入#,退出
:map ^B 0x
定位到行首,并删除第一个字符
4.连续行注释:
:n1,n2s/^/#/g 尖角号(^):表示行首
连续行取消注释:
:n1,n2s/^#//g 行首的#用空代替
如果注释是两个斜杠(C语言):
:n1,n2s/^/ \ / \ / /g 反斜杠(\):转义符
5.替换 (大量的快捷键无法记忆)
:ab mymail jk20101002@126.com
取消定义
:unab mymail
以上的快捷键在退出Vi后就消失,要想让他们保存下来,则改变其Vi配置的配置文件(~/.vimrc)
范例:vim ~/vimrc
set nu
map ^p I#<ESC>
ab mymail 2010@126.com