1 Vi 和 Vim 简介
vi编辑器是 Unix 和 Linux 系统中标配的纯文本编辑器,相当于 windows 系统中的记事本,但是在功能上要甩记事本几条街。 而 Vim 则是 Vi 的加强版,具有代码补全、错误提示及高亮显示等丰富的功能。
2 Vi 的使用
2.1 Vi 的三种模式
【1】一般模式
当使用 vi 处理一个文件时,打开文件就是处于一般模式。我们只可以移动光标、删除字符、复制和粘贴操作,但无法对文件进行编辑。
【2】编辑模式
在一般模式下,按下『i , I , o , O , a , A , r , R』中任意一个按键即可进行编辑模式,进入编辑模式的标志为 terminal 的左下角会出现【INSERT 或 REPLACE】,按下『ESC』后会退出编辑模式进入一般模式。
【3】底行命令模式
在一般模式下,按下『 : , / , ? 』中任意一个按键进入底行命令模式,在该模式下可以对文件进行保存、退出以及将文件另存为等操作,还可以设置编辑环境,如列出行号等。
2.2 Vi 三种模式下常用的操作
【1】一般模式
<a>移动光标的方法</a>
操作 | 说明 |
---|---|
h 或 向左方向键(←) | 光标向左移动一个字符 |
j 或 向下方向键(↓) | 光标向下移动一个字符 |
k 或 向上方向键(↑) | 光标向上移动一个字符 |
l 或 向右方向键(→) | 光标向右移动一个字符 |
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 |
0 | 移动到这一行的最前面字符处 |
$ | 移动到这一行的最后面字符处 |
G | 移动到这个文件的最后一行 |
gg | 移动到这个档案的第一行 |
n+<ENTER> | n 为数字。光标向下移动 n 行 |
<a>搜索/替换内容</a>
操作 | 说明 |
---|---|
/word | 向光标之下查找一个字符串名称为 word 的字符串。 |
?word | 向光标之上查找一个字符串名称为 word 的字符串 |
n | 正向进行上一次的查找动作 |
N | 反响进行上一次的查找动作 |
:n1,n2s/word1/word2/g | 在第 n1 与 n2 行之间查找 word1 这个字符串,并将该字符串替代为 word2 |
:1,$s/word1/word2/g | 从第一行到最后一行查找 word1 字符串,并将该字符串替代为word2 |
:1,$s/word1/word2/gc | 从第一行到最后一行查找 word1 字符串,并将该字符串替代为word2 !且在替代前显示提示字符给使用者确认 (conform) 是否需要替代 |
<a>删除、复制、赞贴</a>
操作 | 说明 |
---|---|
x, X | 在一行字当中,x 为向后删除一个字符, X为向前删除一个字符 |
nx | 连续向后删除 n 个字符 |
dd | 删除游标所在的那一整列 |
ndd | 删除光标所在的向下 n 列 |
yy | 复制游标所在的那一行 |
nyy | 复制光标所在的向下 n 列 |
p,P | p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行 |
u | 复原前一个动作(撤销) |
[Ctrl] + r | 重做上一个动作 (反撤销) |
. | 重复前一个动作 |
【2】编辑模式
操作 | 说明 |
---|---|
i, I | 插入:在目前的光标所在处插入输入之文字,已存在的文字会向后退; 其中, i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』 |
a, A | a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』 |
o, O | o 为『在目前光标所在的下一行处插入新的一行』; O 为在目前光标所在处的上一行插入新的一行 |
r, R | 取代:r 会取代光标所在的那一个字符;R 会一直取代光标所在的文字,直到按下 ESC 为止 |
Esc | 退出编辑模式,回到一般模式中 |
【3】底行命令模式
操作 | 说明 |
---|---|
:w | 保存 |
:w! | 强制保存 |
:q | 退出不保存 |
:q! | 强制退出不保存 |
:wq! | 强制保存退出 |
:w [filename] | 另存为 |
:set nu | 显示行号 |
:set nonu | 取消行号 |
3 Vim 额外的功能
3.1 vim 简单说明
目前大部份的 distribution 中的 vi 都已经被 vim 所取代,如果您使用 vi 后,发现右下角会显示当前光标所在的行号,那么您当前使用的已经是vim。
其中:
- 左下角的 76L表示整个文件共有76行,2705个字符。
- 右下角的 [ 7,11 ]表示当前光标所在的位置,Top 表示当前这个画面是整个文件的最上方。
3.2 vim 额外功能
【1】区块选择
操作 | 说明 |
---|---|
v | 字符选择,将光标经过的字符选中 |
V | 行选择,将光标经过的行选中 |
[Ctrl] + v | 区块选择 |
y | 将选中的字符复制 |
d | 将选中的字符删除 |
【2】多窗口功能
先看看多窗口长什么样
操作 | 说明 |
---|---|
:sp [fileName] | 将一个窗口分屏,如果有加 fileName, 表示开启一个新档案,否则显示同一个文件内容(同步显示) |
[ctrl]+wj | 先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 j ,则光标可移动到下方的窗口 |
[ctrl]+wk | 同上,不过光标移动到上面的窗口。 |
[ctrl]+wq | 结束当前窗口,先按住[ctrl]+w 再按 q |
4 环境设置
操作 | 说明 |
---|---|
:set nu / nonu | 显示行号/取消行号 |
:set autoindent / noautondent | 是否自动缩排(换行后和上一行的第一个非空格符对齐) |
:set backup / nobackup | 自动备份,当对一个文件(fileName)进行修改时,这个文件的源文件将会另存为 (fileName~)备份下来。 |
:set backspace=(0,1,2) | 进入编辑模式后,设置退格键(Backspace),当 backspace = 2 时,可以删除任意值,当 backspace=1或0时,只能删除刚刚输入的值,不能删除原本存在的字符。 |
:set all | 查看当前的环境设置参数 |
:syntax off / on | 是否根据程序的相关语法显示不同的颜色 |