以问答的方式学习一下vi的使用,边看本文边进行实践是一种比较有效的学习方式。
一、如何进入vi编辑器?
在系统提示字符(如$、#)下敲入vi <档案名称>,vi 可以自动帮你载入所要编辑的文件或是开启一个新文件(如果该文件不存在或缺少文件名)。进入 vi 后萤幕左方会出现波浪符号,凡是列首有该符号就代表此列目前是空的。
二、关于vi的两种模式?
vi存在两种模式:指令模式和输入模式。在指令模式下输入的按键将做为指令来处理:如输入a,vi即认为是在当前位置插入字符。而在输入模式下,vi则把输入的按键当作插入的字符来处理。指令模式切换到输入模式只需键入相应的输入命令即可(如a,A),而要从输入模式切换到指令模式,则需在输入模式下键入ESC键,如果不晓得现在是处於什麽模式,可以多按几次[ESC],系统如发出哔哔声就表示已处于指令模式下了。
三、如果退出vi?
在指令模式下键入:q,:q!,:wq或:x(注意:号),就会退出vi。其中:wq和:x是存盘退出,而:q是直接退出,如果文件已有新的变化,vi会提示你保存文件而:q命令也会失效,这时你可以用:w命令保存文件后再用:q退出,或用:wq或:x命令退出,如果你不想保存改变后的文件,你就需要用:q!命令,这个命令将不保存文件而直接退出vi。
四、在指令模式对文件进行删除和修改的一些命令?
首先按Esc进入指令模式。
x: 删除光标所在字符,依旧停留在指令模式。
dd :删除光标所在的列,依旧停留在指令模式。
dw:删除光标所在字,依旧停留在指令模式。
r :修改光标所在字元,点r 后接着输入要修正为的字符。
R: 进入取替换状态,新增文字会覆盖原先文字,进入替换模式,直到按 [ESC] 回到指令模式下为止。
s: 删除光标所在字元,并进入输入模式。
S: 删除光标所在的行,并进入输入模式。
c :功能和d相同,区别在于完成删除操作后进入INSERTMODE
cc:也是删除当前行,然后进入INSERT MODE
五、Vi中查找及替换命令?
/pattern 从光标开始处向文件尾搜索pattern
?pattern 从光标开始处向文件首搜索pattern
n 在同一方向重复上一次搜索命令
N 在反方向上重复上一次搜索命令
% 查找配对的括号
:s/p1/p2/g 将当前行中所有p1均用p2替代,若要每个替换都向用户询问则应该用gc选项
:n1,n2s/p1/p2/g 将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g 将文件中所有p1均用p2替换
.*[]^%~$ 在Vi中具有特殊含义,若需要查找则应该加上转义字符"\"
六、vi中如何进行复制与粘贴操作?
首先同样保证进入指令模式。
yy命令复制当前整行的内容到vi缓冲区
yw复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词
y$复制光标所在位置到行尾内容到缓存区
y^复制光标所在位置到行首内容到缓存区
#yy例如:5yy就是复制5行
#yw例如:2yw就是复制两个单词
如果要复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如:3,5y复制第三行到第五行内容到缓存区。
P 将复制的内容粘贴在当前光标后面的位置上
七、vi中如何显示行号?
在末行模式(按Esc进入指令模式,输入:就可进入末行模式),输入set number.即可显示行号。
八、几个不同的从指令模式切换到输入模式的命令?
新增 (append)
a :从光标所在位置後面开始新增资料,光标后的资料随新增资料向後移动。
A:从光标所在行最後面的地方开始新增资料。
插入 (insert)
i:从光标所在位置前面开始插入资料,光标后的资料随新增资料向後移动。
I :从光标所在行的第一个非空白字元前面开始插入资料。
开始 (open)
o :在光标所在行下新增一列并进入输入模式。
O: 在光标所在行上方新增一列并进入输入模式。
九、vi中如何恢复误操作?
u 撤销最后执行的命令
U 修正之前对该行的操作
Ctrl+R Redo
十、如何重复上一个操作?
. (点操作) 重复上一次操作
十一、vi中移动光标的操作?
k 上
h l 左 右
j 下
^ 移动到该行第一个非空格的字符处
w 向前移动一个单词,将符号或标点当作单词处理
W 向前移动一个单词,不把符号或标点当作单词处理
b 向后移动一个单词,把符号或标点当作单词处理
B 向后移动一个单词,不把符号或标点当作单词处理
( 光标移至句首
) 光标移至句尾
{ 光标移至段落开头
} 光标移至段落结尾
H 光标移至屏幕顶行
M 光标移至屏幕中间行
L 光标移至屏幕最后行
0 到行首
$ 到行尾
gg 到页首
G 到页末
行号+G 跳转到指定行
n+ 光标下移n行
n- 光标上移n行
Ctrl+g 查询当前行信息和当前文件信息
fx 向右跳到本行字符x处(x可以是任何字符)
Fx 向左跳到本行字符x处(x可以是任何字符)
tx 和fx相同,区别是跳到字符x前
Tx 和Fx相同,区别是跳到字符x后
C-b 向上滚动一屏
C-f 向下滚动一屏
C-u 向上滚动半屏
C-d 向下滚动半屏
C-y 向上滚动一行
C-e 向下滚动一行
nz 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
十二、vi的选项设置?
all 列出所有选项设置情况
term 设置终端类型
ignorance 在搜索中忽略大小写
list 显示制表位(Ctrl+I)和行尾标志($)
number 显示行号
report 显示由面向行的命令修改过的数目
terse 显示简短的警告信息
warn 在转到别的文件时若没保存当前文件则显示NOwrite信息
nomagic 允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan 禁止vi在搜索到达文件两端时,又从另一端开始
mesg 允许vi显示其他用户用write写到自己终端上的信息