1. vi 的使用
基本上vi 共分为三种模式,分别是一般模式、编辑模式与指令列命令模式。这三种模式的作用分别是:
- 一 般模式:
以vi 打开一个档案就直接进入了一般模式,这是默认的模式。
- 编辑模式:
在一般模式中可以进行删除、复制、贴上等动作,但是无法编辑文件内容的。按下【i, I,o, O,a,A,r,R】等任何 一个字母之后才会进入编辑模式。通常在linux 中,按下这些按键时,在画面的左下方会出现Insert 或Replace 的字样,此时才可以进行编辑。而如果回到一般模式,则必须要按下[Esc]按键即可退出编辑模式。
- 指令列命令模式:
在一般模式当中,输入【:/ ?】三个中的任何一个按钮,就可以将光标移到到最底下一行。在这个模式当中,可以提供你搜索资料的动作,而读取、存盘、大量取代字符、离开vi、显示行号等等则是在此模式中达成的。
2. 按键说明
2.1 一般模式可用的按钮说明,光标移动、复制贴上、搜索取代
2.1.1 光标移动的方法
ctrl + f : 屏幕向下移动一页,相当于Page Down 按键
ctrl + b : 屏幕向上移动一页,相当于Page Up 按键
0或功能键【Home】: 移动到这一行的最前面字符处
$ 或功能键【End】:移动到这一行的最后面字符处
G:移动到这个档案的最后一行
gg:移动到这个档案的第一行
nG:n 为数字。移动到这个档案的第n行
n<Enter>: n为数字。光标向下移动n行
2.1.2 搜寻与取代
/word: 向光标之下寻找一个名称为word的字符串。
?word: 向光标之上寻找一个名称为word的字符串。
n: 这个n 是英文按键。代表重复前一个搜寻的动作。
N: 这个N是英文按键。与n刚好相反,为反向进行前一个搜寻动作。
:n1,n2s/word1/word2/g:n1 与n2为数字。在第n1 与n2行之间寻找word1这个字符串,并 将该字符串取代为word2.举例来说,在100到200行之间搜寻vbird并取代为VBIRD,则:
:100,200s/vbird/VBIRD/g
:1,$s/word1/word2/g: 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2.
: 1,$s/word1/word2/gc: 从第一行到最后一行寻找word1 字符串,并将该字符串取代为word2.且在取代前显示提示字符给用户确认是否需要取代。
2.1.3 删除、复制与粘贴
x,X: 在一行字当中,x为向后删除一个字符,X为向前删除一个字符。
nx: n 为数字,连续向后删除n个字符。
dd: 删除游标所在的那一整行。
ndd: n为数字。删除光标所在的向下n行。
d1G:删除光标所在到第一行的所有数据
dG: 删除光标所在到最后一行的所有数据
d0:删除光标所在处,到该行的最前面一个字符
d$:删除光标所在处,到该行的最后一个字符
yy: 复制光标所在的那一行
nyy: n为数字。复制光标所在的向下n行。
y1G: 复制光标所在行到第一行的所有数据
yG: 复制光标所在行到最后一行的所有数据
y0:复制光标所在的那个字符到该行行首的所有数据
y$:复制光标所在的那个字符到该行行尾的所有数据
p,P: p为将已复制的数据在光标下一行贴上,P则为贴在光标上一行
J: 将光标所在行与下一行的数据结合成同一行
c: 重复删除多个数据,例如向下删除10行,10cj
u: 复原前一个动作
ctrl + r: 重做上一个动作
.: 重复前一个动作。
2.2 一般模式切换到编辑模式的可用的按钮说明
2.2.1 进入插入模式
i,I: i为从目前光标所在处插入,I为在目前所在行的第一个非空格符处开始插入
a,A: a为从目前光标所在的下一个字符处开始插入,A为从光标所在行的最后一个字符处开始插入
o,O: o 为在目前光标所在的下一行处插入新的一行;O为在目前光标所在处的上一行插入新的一行
2.2.2 进入取代模式
r,R: r只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下Esc为止
2.3 指令列的存储、离开等指令
:w : 将编辑的数据写入硬盘档案中
:w! : 如文件属性为只读时,强制写入该档案。不过,到底能不能写入,还是跟你对该档案的档案权限有关
:q : 离开vi
:q! :若曾修改过档案,又不想存储,使用!为强制离开不存储档案。
:wq : 储存后离开,若为:wq! 则为强制储存后离开
ZZ : 这是大写的Z,若档案没用更改,则不存储离开;若档案已经更改过,则存储后离开。
:w [filename] : 将编辑的数据存储成另一个档案
:r [filename] : 在编辑的数据中,读入另一个档案的数据。亦即将filename 这个档案内容加到游标所在行后面。
:n1,n2 w [filename] : 将n1 到n2 的内容存储成filename 这个档案
: ! command : 暂时离开vi 到指令列模式下执行command 的显示结果
3. vim 的额外功能
3.1区块选择
区块选择的按键意义
v: 字符选择,会将光标经过的地方反白选择
V: 行选择, 会将光标经过的行反白选择
[Ctrl]+v: 区块选择,可以用长方形的方式选择
y: 将反白的地方复制起来
d: 将反白的地方删除起来
3.2 多档案编辑
我们知道vi 内可以使用:r filename 来读入某个档案的内容,不过,这样毕竟是将整个档案读入。如果只是想要部分内容呢,这是多档案同时编辑就很有用了。
多档案编辑的按键:
:n : 编辑下一个档案
:N :编辑上一个档案
:files : 列出目前这个vim 的开启的所有档案
3.3多窗口功能
两个档案同时在一个屏幕上面显示,多窗口情况下的按键功能
:sp [filename] : 开启一个新窗口,如果有加filename, 表示在新窗口开启一个新档案,否则表示两个窗口为同一个档案内容
Ctrl + w + ↓ : 按键的方法: 先按下ctrl 不放,再按下w 后放开所有的按键,然后再按 ↓ 或j, 则光标可移动到下方的窗口。
Ctrl + w + ↑ : 光标移动到上面的窗口
Ctrl + w + q : 离开