基本上 vi 共分为三种模式,分别是『一般模式』、 『编辑模式』与『指令列命令模式』三种:
一般模式:游标移动、搜寻、取代,删除字元,删除整行,复制整列、粘贴整列;
编辑模式:可输入任何字元;
指令列模式:读取、储存档案,其他额外功能。
模式转换:
一般模式进入编辑模式:按下『i, I, o, O, a, A, r, R』等字母之后才会进入编辑模式;按下『Esc』这个按键即可退出编辑模式
一般模式进入指令列模式:输入『 : 或 / 或 ? 』就可以将光标移动到最底下那一行
使用vi文字处理器的一般步骤:
①使用vi进入一般模式:vi 档案名 (进入一般模式,左下角会显示这个档案目前的状态)
②按下 i 进入编辑模式,开始编辑文字 (进入编辑模式,左下角会出现 –INSERT- 的画面,那就是可以输入任意字符的提示)
③按下 [ESC] 按钮回到一般模式。(在编辑模式下如果编辑完毕了,可以按下ESC键退出,回到一般模式)
④在一般模式中按下 :wq 储存后离开 vi (注意:按下:键该光标就会移动到最底下一行去)
一般模式:移动光标的方法
0:这是数字0:移动到这一行的最前面字符处(常用)
G:移动到这个档案的最后一行(常用)
gg:移动到这个档案的第一行,相当于1G 啊!(常用)
nG:n 为数字。移动到这个档案的第n 行。例如20G 则会移动到这个档案的第20 行(可配合:set nu使用)
n<Enter>:n 为数字。光标向下移动n 行(常用)
一般模式:搜寻与取代
搜寻:
/word:向光标之下寻找一个字符串名称为word 的字符串
?word:向光标之上寻找一个字符串名称为word 的字符串
n:重复前一个搜寻的动作。举例来说:如果刚刚我们执行/vbird 去向下搜寻vbird 这个字符串,则按下n 后,会向下继续搜寻下一个名称为vbird 的字符串。如果是执行?vbird 的话,那么按下n 则会向上继续搜寻名称为vbird 的字符串!
N:与n 刚好相反
取代:
:n1,n2s/word1/word2/g :n1 与n2 为数字。在第n1 与n2 行之间寻找word1 这个字符串,并将该字符串取代为word2
:1,$s/word1/word2/g :从第一行到最后一行寻找word1 字符串,并将该字符串取代为word2
:1,$s/word1/word2/gc:从第一行到最后一行寻找word1 字符串,并将该字符串取代为word2 !且在取代前显示提示字符给使用者确认是否需要取代!
一般模式:删除、复制与贴上
删除:
nx:n为数字,连续向后删除n个字符;
dd:删除游标所在的那一整列
ndd :n为数字。删除光标所在的向下n 列。如20dd 则是删除光标所在列下面的20列
d1G:删除光标所在到第一行的所有数据
dG:删除光标所在到最后一行的所有数据
d$:删除游标所在处,到该行的最后一个字符
d0:那个是数字的0 ,删除游标所在处,到该行的最前面一个字符
复制:
yy:复制游标所在的那一行
nyy:n为数字。复制光标所在的向下n 列
y1G:复制光标所在列到第一列的所有数据
yG:复制光标所在列到最后一列的所有数据
y0:复制光标所在的那个字符到该行行首的所有数据
y$:复制光标所在的那个字符到该行行尾的所有数据
粘贴:
p, P :p为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!
举例来说,我目前光标在第20 行,且已经复制了10行数据。则按下p后,那10行数据会贴在原本的20 行之后,亦即由21行开
始贴。但如果是按下P 呢?那么原本的第20 行会被推到变成30行。
复原和重做:
u:复原前一个动作。 (很常用的复原操作)
[Ctrl]+r:重做上一个动作
指令列命令模式:
:set nu:显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu:与set nu 相反,为取消行号!
:w:将编辑的数据写入硬盘档案中
:w!:若档案属性为只读时,强制写入该档案。不过,到底能不能写入,还是跟您对该档案的档案权限有关啊!
:q:离开vi
:q!:若曾修改过档案,又不想储存,使用! 为强制离开不储存档案。
:e!:将档案还原到最原始的状态!
ZZ:若档案没有更动,则不储存离开,若档案已经经过更动,则储存后离开!
:w [filename]:将编辑的数据储存成另一个档案(类似另存新档)
:r [filename]:在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
修改完之后,突然反悔了,要全部复原,有哪些方法?
(1)简单的方法可以一直按u回复到原始状态,(2)使用不储存离开:q! 之后,再重新读取一次该档案
在 vi 底下作了很多的编辑动作之后,却想还原成原来的档案内容,应该怎么进行?
直接按下 :e! 即可恢复成档案的原始状态!
Vim的额外功能:
目前大部分vim取代vi的功能了!如果您使用vi后,却看到画面的右下角有显示目前光标所在的行列号码,那么您的vi已经被 vim 所取代了。
基本上,vim的一般用法与vi完全一模一样。
区块选择:
v 字符选择,会将光标经过的地方反白选择!
V 行选择,会将光标经过的行反白选择!
[Ctrl]+v 区块选择,可以用长方形的方式选择资料
y 将反白的地方复制起来
d 将反白的地方删除掉
多窗口功能: (这样能实现多档案编辑的功能)
在指令列模式输入:『:sp {filename}』
如果想要在新窗口启动另一个档案,就加入档名;否则仅输入 :sp 时,出现的则是同一个档案在两个窗口间
多窗口情况下的按键功能
[ctrl]+wj 按键的按法是:先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 j ,则光标可移动到下方的窗口。
[ctrl]+wk 同上,不过光标移动到上面的窗口。
[ctrl]+wq其实就是 :q 结束离开啦!举例来说,如果我想要结束下方的窗口,那么利用 [ctrl]+wj 移动到下方窗口后,按下 :q 即可离开,也可以按下 [ctrl]+wq 啊!