Vi 对初学者而言, 第一印象总是不好, 觉得它难用. 其实, 大家在用惯了办公室软件之后, 再回过头来用这些未见过的怪物, 难免无法适应, 这是很正常的. 但别忘了, 各位都将是学校中重要网管的人员,您的角色不再是纯粹的使用者, 而是一位面对复杂网络的管理者及问题解决者, 你必须能够亲手操控你的系统, 设定你的系统, 调整你的系统, 而这个过程, 你就不得不去面对 Vi.
进入vi后 有两种模式
1.编辑模式
2.命令模式
进入vi后默认是命令模式,所以不要乱按 就会得到dd的警告声,要输入文字的话 请按a后i 就可以开始输入文字拉!
输入结束后 请按esc键回命令模式
输入q就是退出
输入wq就是存盘后退出
输入q!放弃存盘强行退出
Vi 的使用
一. 开启文件, 关闭文件
vi 文件名 开启文件
: 进入命令列的方法
q 离开 (命令列)
wq 存盘然后离开 (命令列)
q! 放弃存盘, 强迫离开 (命令列)
ZZ 存盘然后离开 (不在命令列使用)
:e 文件名 在 Vi 中开启档案
二. Vi 的操作模式:
Vi 有二种主要的操作模式, ESC 键为单向的切换键(由本文输入模式回到编辑命令模式)
编辑命令模式 : 要 vi 做一些特定目的的动作. 如插入,附加,取代,修改,删除,移动光标,搜寻等等. 若是存盘等动作, 则需在命令列中下达,
欲切换至命令列, 需先按 :
本文输入模式 : 在此模式下, 任何字符, 皆被视为输入的数据.
一开始进入 Vi 之后, 即进入编辑命令模式, 你输入的每一个字符, 皆被预视为一个指令. 有效的指令会被接受, 若是无效的指令, 会产生
beep beep 声, 以示警告.
若想做输入的动作, 必须切换为本文输入模式, 切换的方法, 只要单按一个特殊意义的字符键即可, 如下所示:
按 i 或 I 插入状态
按 a 或 A 附加状态
按 R 取代状态R 会进行连续字符取代
按 s 或 S 删除一个字符;删除光标所在那一列
按 cw, c2b, c$, c0 修改状态
按 o 或 O 新增空白列
你不必一下子全用上, 只要会 i, a, o 这个三个模式即可胜任愉快, 因为大部份时候, 你也只用这三个.
OK, 现在你可以试着在本文输入模式下, 键入一些资料看看. 然后, 按 ESC 切换回编辑命令模式.
三. 移动光标:
Vi 为了适用于各种不同的终端机模式, 因此以字键的方式来操控光标.
k j h l 上 下 左 右
Enter 换列
w b 往前一个 word ; 倒退一个 word
0 $ 至该列开头 ; 至该列尾端
+ - 往下一列; 往上一列
请记住一个要诀:
在 Vi 中, 大部份的命令都可以在其前面加上数字, 该数字表示重复该命令的次数.
例如: 8l 表示往右移动 8 个字符, 3w 表示往前移动三个 word, 2b 表示倒退 2 个 word
注: word 的定义, 连续英数字元形成一个 word, 而其它特殊符号则每一个字符便是一个 word(除非连续特殊字符), 例如: --classify 中含有 2 个 word, 一个是 -- ; 一个是 classify 而 -x, 则有 3 个 word. 在特殊的终端机模式下, 方向键也是可以使用的. 如 linux 或 vt100. 其实大部份时候, 你仍可以保有使用方向键的习惯. 但大概只有 local 下才能使用 PgUp , PgDn, End, Home 等键喔! 不过, 若你所使用的终端机模式不支持方向键, 那么上表中的按键, 就相当重要了.
四. 卷页:
^f 往下一页 (forward)
^b 往上一页 (before)
^d 往下半个屏幕(down)
^u 往上半个屏幕(up)
五. 跳列:
你可以指定跳至某一列位置. 跳动之前, 先查看一下目前所在列数是多少.
^g 可以显示目前的位置, 如: "ls.txt" line 53 of 264 --20%-- col 16-23
上面表示, 目前是在第 53 列, 全部共有 264 列, 占该档百分之20的位置, 目前的光标, 实际是在第23行, 但只算成第16行, 因为中间有使用
tab 键.
80G 或 80gg 跳至第 80 列
G 跳至文件尾
gg 跳至文件头
六. 删除: (但不会进入本文输入模式)
x 删除一个字符
dd 删除一行
r 取代一个字符
以上皆针对光标目前的所在位置产生作用.
还有 dw, db, de, d0, d$ 等命令, 但你不须一下子全用上. 上表中这三个够用了.
记住一个要诀: Vi 的命令繁多, 但你真正用上手的不必多, 而且这些也就够了.
七. undo (回复动作):
若你对上一个动作反悔了, 可以使用 undo 的功能:
u 取消上一个动作所产生的改变
U 取消光标所在那一列所有的改变
:e! 取消所有的改变, 回复至未修改之前
八. 关键词搜寻/取代:
/ 关键词 往下搜寻关键词
? 关键词 往上搜寻关键词
n 重复搜寻命令(不管往下或往上)
N 和 n 相反方向
cw字符串 以该字符串取代原有的关键词
n. 继续取代该字符串的动作
%s/目标/取代/g 将目标字符串全换成取代字符串
九. 选取、复制与搬移:
Y 或 yy 选取光标所在那一列
5Y 或 5yy 选取光标列所在共5列(5 只是一个例子, 可改用其它数字)
p 将选取的内容, 复制至光标之后
P 将选取的内容, 复制至光标之前
cw, x, dd 等删除命令 会将被删除的内容放入 buffer 中, 配合 p 或 P 即可做出搬移的效果.
十. 暂时跳出 Vi:
在编辑过程中, 你可能想要执行其它命令, 方法如下:
:! 命令 执行该令命
:sh 暂时跳出 Vi, 欲回 Vi 按 ^d 或 exit