1.1 简介
vi是 Linux/UNIX 系列 OS 中通用的一种全屏编辑器。VIM是vi的升级版本。比vi好用而且方便很多。
vim分为两种状态,即命令状态和编辑状态;
在命令状态下,所键入的字符系统均作命令来处理,如:q 代表退出vim编辑工具;而编辑状态则是用来编辑文本资料的。
1.2 vim状态转换
当你进入vim时,会首先进入命令状态。
在命令状态下,按”i”或”a”或者“S/s”可以进入编辑状态,在编辑状态,按ESC 键进入命令状态。
1.3 vim插入文本
常见的插入指令 如下:
命令 | 功能 |
a | 从光标后面开始添加文本 |
A | 从光标所在行的末尾开始添加文本 |
i | 从光标前面开始插入文本 |
I | 从光标所在行的开始处插入文本 |
o | 在目前光标所在的下一行处插入新的一行 |
O | 在目前光标所在处的上一行插入新的一行 |
s | 删除游标所在字符,并进入编辑模式 |
S | 删除游标所在的行,并进入编辑模式 |
r | 输入字符,取代光标所在的那一个字符 |
R | 一直取代光标所在的字符,直到按下ESC 为止 |
1.4 删除与修改
x 删除光标处的字符
dd 删除光标所在的整行
3dd 删除光标所在行以及下面的两行
D 或 d$ 删除光标到行尾的文本,常用语删除注释语句
d^或 d0 删除光标到行首的文本
1.5 光标的移动
可以通过键盘上的四个方向键,以及home, end, page up, page down 键移动光标,在此不必多说。但在远程登录模式下, vim不支持PageUp、 PageDown、 Home、 End 等功能键!
h 或 向左方向键(←) → 光标向左移动一个字符
j 或 向下方向鍵(↓) → 光标向下移动一个字符
k 或 向上方向鍵(↑) → 光标向上移动一个字符
l 或 向右方向鍵(→) → 光标向右移动一个字符
w 光标往后移一个字
b 光标往前移一个字
^ 光标移动到行首
$ 光标移动到行尾
Ctrl+f 向下翻一页 forward
Ctrl+b 向上翻一页 back
Ctrl+d 向下翻半页 down
Ctrl+u 向上翻半页 up
gg 光标定位到文档头
G 光标定位到文档尾
H 光标定位到当前页首
L 光标定位到当前页的最后一行的行首
[n]+ 光标向后移动 n 行,[n]表示一个整数,比如 10+
[n]- 光标向前移动 n 行,[n]表示一个整数,比如 10-
[n]G 光标定位到第 n 行行首, [n]表示一个整数,比如 10G
1.6 替换与查找
(1)查找 -- /[str]
查找字符串str, [str]表示要查找的字符串,回车后会加亮显示所有找到的字串,接着命令 n移动到下一个找到的字符串,命令 N 移动到上一个找到的字符串。
示例:
/hello
(2)部分替换 -- :s/[src]/[dst]
说明:只能替换光标之所在的行;
选项 | 功能 |
/i | 忽略大小写 |
/g | 全部匹配 |
/c | 替换时提示 |
示例:
:s/hello/world/ig //替换一行
:3,6 s/[src]/[dst]/ig //(3-6 行中找)
(3)全部替换
:%s/[src]/[dst]/g 将文档中所有src 的字符串替换为 dst 字符串
:%s/^ //g 将文档每一行的行首的空格去掉
:n.ms/[src]/[dst]/g 将文档中n行和m行之间的所有src 的字符串替换为 dst 字符串
1.7 块操作
v进入可视化块选择状态,选中块之后,可以对块进行删除(d),复制(y),剪切(x)
命令 | 作用 |
yy | 复制光标所在的整行 |
[n]yy | 从光标开始往下复制n 行,[n]表示一个整数 |
p | 将复制后的文本粘贴到光标处 |
u | 撤销上次操作 |
ctrl + r | 恢复上次操作 |
1.8 保存与编辑
:q | 在未修改文档的情况下退出 |
:q! | 放弃文档的修改,强行退出 |
:w | 保存 |
:wq | 保存并退出 |
:w file | 保存到另一个文件下 |
1.9 其他
:help命令 查看该命令的帮助提示
:%!xxd 十六进制模式
:%!xxd –r 返回文本模式
如果在编辑过程中不小心按了Ctrl+s,vi会处于僵死状态,按 Ctrl+q 可以恢复。
执行vi +3 main.c //表示定位到 main.c 的第 3 行
执行vi +/printf main.c //表示定位到第一个 printf 处
在命令模式下输入:new 2.c //表示再打开一个 vi,是横向的 用 vnew 2.c 表示纵向
在命令模式中输入gg=G 可以自动对齐
下一小节:linux的编译器gcc、g++的使用