一、引言
在Linux中,vi(Visual Interface)是标准的编辑器,功能强大到不逊于任何最新的编辑器。无论在Linux中还是在Unix中,vi的使用方法都是完全相同的。vim(Vi Improved)在vi的基础上增加了很多新特性。
二、模式
vim的工作模式有三种,用户在不同模式下可以进行不同的操作
命令模式:控制屏幕光标的移动,字符、字或行的删除、移动和复制
插入模式:插入模式可以对文本内容进行文字输入
命令扩展模式:保存,退出等命令的输入
模式切换
ESC键进入命令模式
命令模式下,“:”冒号进入命令扩展模式
命令模式 –> 插入模式
i insert, 在光标所在处输入
I 在当前光标所在行的行首输入
a append, 在光标所在处后面输入
A 在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
锁定:Ctrl+s
解锁:Ctrl+q
(锁定过程中,可以接受来自键盘的输入,但是不显示在屏幕上)
三、打开与关闭文件
打开文件:vim [OPTION]…FILE…
+# 打开文件后,光标位于第#行的行首
+/PATTERN 打开文件后,光标位于第一个匹配到的行
+ 光标位于最后一行
-b 以二进制的方式打开文件
-m 只读打开文件
-e 直接进入命令扩展模式
关闭文件:
扩展模式
:q 退出 :
q! 强制退出,丢弃做出的修改
:wq 保存退出
:x 保存退出
命令模式
ZZ:保存退出
ZQ:不保存退出
四、扩展模式
创建一个命令提示符,位于屏幕左下角、
常用命令:
w 写(存)磁盘文件
wq 写入并退出
x 写入并退出
q 退出
q! 不存盘退出,即使更改都将丢失
r FILE 读文件内容到当前文件中
w FILE 将当前文件内容写入另一个文件
!command 强制执行命令
r!command 在vi中临时执行命令
地址定界
:/PATTERN1/,/PATTERN2/
# 指定行
#,# 起始行到结束行
#,+# 指定行开始到向下的一些行
. 当前行
$ 最后一行
$-1 倒数第二行
% 全文,所有行,等于1,$
编辑命令:
d 删除匹配的内容
y 复制匹配的内容
w FILE 将范围内的行另存至指定文件中
r FILE 在制定位置插入指定文件中的所有内容
查找并替换:
s/PATTERN/STRING/修饰符(分隔符可以改变)
修饰符:
i 忽略大小写
g 全局替换,否则默认情况下,每行只替换第一次出现的字符
gc 全局替换,替换前询问是否替换
五、命令模式
字符间的跳转:
h:左 l:右 j:下 k:上
单词间的跳转
w:下一个单词词首
e:当前或下一个单词的词尾
b:当前或前一个单词的词首
页的跳转
H:页首
M:当前页中间行
L:页底
行首行尾跳转:
^ 跳转至行首的第一个非空白字符
O 跳转至行首
$ 跳转至行尾
行间移动:
#G(或扩展模式:#) 跳转到第#行
G 最后一行
1G或gg 第一行
句间移动
): 下一句 (: 上一句
段落间的移动
}: 下一段 {:上一段
翻屏操作
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
字符编辑
x: 删除光标处的字符;
#x: 删除光标处起始的#个字符
xp: 交换光标所在处的字符及其后面字符的位置
~:转换大小写
替换命令(r, replace)
r: 替换光标所在处的字符
R:切换成REPLACE模式
删除命令:
d: 删除命令,可结合光标跳转字符,实现范围删除;
d$: 删除到行尾
d^:删除到非空行首
d0:删除到行首
dw:删除下一个单词
de:删除当前单词
db:删除前一个单词
dd: 删除光标所在的行
#dd:多行删除
D:从当前光标位置一直删除到行尾,留空行,等同于d$
复制命令
y:复制,用法同d命令
粘帖命令
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下 方;否则,则粘贴至当前光标所在处的后面
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上 方;否则,则粘贴至当前光标所在处的前面
六、vim的寄存器
vim中有26个命名寄存器和一个无名寄存器,常存放不同的剪贴板内容,可以在不同的会话中共享。分别用a-z表示,例如:3"tyy表示复制三行到寄存器t中,"tp则表示将寄存器t中的内容粘贴。若未指定寄存器,将使用无名寄存器。
vim中还有10个数字寄存器,用0-9表示,0表示最近复制的内容,1表示最近删除的内容。当新的文本变更或删除时,1会转存到2中并以此类推。数字寄存器不能在不同会话中共享。
七、多文件模式
vim FILE1 FILE2 FILE3 …
:next 下一个
:prev 前一个
:first 第一个
:last 最后一个
:wall 保存所有
:qall 退出所有
:wqall 保存所有并退出
八、多窗口模式
多文件分割
vim -o|-O FILE1 FILE2 …
-o: 水平分割
-O: 垂直分割
在窗口间切换:Ctrl+w, Arrow
单文件窗口分割:
Ctrl+w,s: split, 水平分割
Ctrl+w,v: vertical, 垂直分割
Ctrl+w,q:取消相邻窗口
Ctrl+w,o:取消全部窗口
:wqall 退出
原创文章,作者:zhanghuanyu,如若转载,请注明出处:http://www.178linux.com/32529