2024年1月14日发(作者:)
vi介绍编
(1) vi快速入门
◎前言
我是pico的使用者,在我是redhat linux使用者的时候,
当时我觉得pico给我的感觉很亲切,功能也很强大.
了FreeBSD之後,突然发现竟然没有pico,需要额外安装
pine才能够取得.但这也无妨,反正安装很快...
直到有一天,当我要做取代的动作..这时....pico就....
於是我投向了vi ...去了解他的规则表示式,
一个简单的小动作 让繁琐的工作瞬间解决.
不但如此..vi 是所有unix-like都有的编辑器...不用额外安装
让您在不同系统上也能够很快的进入状况.
◎FAST STARTUP
若您之前不曾使用过全萤幕的编辑器,那麽您可能连一些简单的编辑都有问题.
如此您可能要找一个已经稍微了解vi使用的人来带领您.
vi是一个萤幕编辑器,这表示了vi几乎用去了萤幕上的
每一行空间来展示档案的内容,除了萤幕上的最後一行.
这一行是用来让您发号命令给vi及vi给你一些相关档案资讯时用的.
其他您必须了解的是vi是一个模式型编辑器.举例来说:
你能输入文字或者是执行命令,但是你必须在正确的模式才能够执行.
您一刚开始编辑一个档案时,您处在命令模式(command mode).
有一些命令能够让您切换到输入模式(input mode).
然而,只有一个键能够让您离开输入模式,那就是键盘左上的
若您不了解您目前处於何种模式,您可以持续的按,直到vi发出声音警告您,
如此您已经回到命令模式.当您尝试做了一些vi所不允许的事情,
正常来说vi会发出"哔"声(本机操作时)
要开始编辑一个档案您可以这样做:
$ vi file_name <按enter键>
然後输入 :set verbose mode
然後vi会提醒您:
:set the mode option may never be turn on
:虽说如此 但对初学者来说 有多些讯息提示总比没有好
放心 离开vi後就会恢复原先的noverbose mode
如此可以让vi当你产生错误时给予你多一些的讯息并当您猛按
,会在萤幕的最下端显示如下的讯息,提醒您已在命令模式.
Already in comman mode
:命令皆需要在命令模式下实行.
△简易移动命令
h 将标往左移动一个字元.
j 将标往下移动一行.
k 将标往上移动一行.
l 将标往右移动一个字元.
<方向键> 上下左右键也应该可以发挥作用.
:若纯粹使用windows 内建的telent方向键无法使用..
所以知道hjkl的用处也不错啦..
△简易搜寻命令
/text 搜寻text字串
若今天我要搜寻panda则是 /panda , / 为搜寻命令.
△模式切换
a 在标後可以新增开始新增
i 在标前可以开始新增文字
o 在标的下方新增一行,并可以开始输入文字.
O 在标的上方新增一行,并可以开始输入文字.
:经个人使用发现 模式切换只要记住几个就好 依照一般输入习惯,
建议初学者记住a,O就好 (虽然到最後您会在不知不觉中全部记下)
尤其是O看似没有o好用,但是今天若您想要在最上方新增一行时,
记得O这个指令真是方便阿..
△文字处理命令
:
yy 标所在行.
p 在标所在的下一行贴上所的资料.
删除:
dd 将标所在行删除.
x 将标所在的那个字元删除.
储档:
:w 以原档案名称储存档案.
:w file_name 另存新档,档名为file_name
离开:
:q 离开编辑及vi,若您已经编辑过档案vi会拒绝您离开.
:q! 强制离开vi 不论情况
: 所谓的一行 有可能在萤幕上是很多行(因为萤幕的一行摆放不下)
只要没有换行符号产生 那就称之为一行,用标移动您就会明.
◎小结:以上这些只是基础的vi功能,熟悉了这些,您已经会了简单的文书处理,
已经可以逐渐摆脱pico之类的编辑器,投向vi的怀抱.
过一阵子,当您渐渐了解vi的强大,ㄏㄏ...
◎参考资料: man vi
(2) 参数简介
◎ex, vi, view - text editors
◎SYNOPSIS
vi [-eFGlRrSv] [-c cmd] [-t tag] [-w size] [file ...]
ex [-eFGRrSsv] [-c cmd] [-t tag] [-w size] [file ...]
◎DESCRIPTION
ex和vi是相同程式但不同介面,ex是一行处理的(line-oriented),
vi是以全萤幕为基准的(screen oriented).二者能相互切换.
View相当於vi使用-R(唯读)参数
◎OPTIONS
-e 以ex模式开始编辑,如同用ex编辑一般。
vi -e filename 等同於 ex filename
-F 当第一次编辑时,不要让vi整个档案。
(预设是整个档案,以避免当您在编辑时,他人更改这个档案。)
-R 以唯读模式开启,如同以vipw开启档案,或在命令列中设定readonly参数。
-r 重新取得某个特定档案,若没有指定档案,档案表列会被重新取得。
若没有该指定档案,档案会被视为没有-r参数编辑。
-S 以安全编辑模式启动,不允许所有的外部程式存取。
-s 进入batch模式,只能应用在ex编辑。batch模式在执行ex scripts非常有用。
一些及时资讯及其他使用者导向的讯息被忽略(不显示),
没有开始档案或环境变数被读取。
-w 设定基本的视窗大小,用以定义显示的行数。
-v 以vi模式开始编辑,如同vi 或view命令。
ex/vi从标准输入读取讯息,在vi介面, 若标准输入不是一个终端机,会产生错误。
在ex介面,若标准输入不是终端机,无论如何ex会试着从他读取命令。
然而,此时会以batch模式进行,如同-s参数被指定。
◎参考资料: man vi
(3) vi命令
◎VI COMMANDS
以下命令皆在vi命令模式下执行。
为避免ex:符号与ex命令混淆 所有要输入的指令皆用蓝色表示
不显示ex:(举例说明的英文缩写)
:
有些命令小写也可以用
移动命令:
+ 标往下移动到下一行第一个非空白字元。
CTRL+Y 每移动一次 Y就按一次
(当然您的标须位在至少能够向上动的位置)
$ 将标移动到该行尾.
( 标往上移动到下一句子.
) 标往下移动到下一句子.
- 标移动到上一行第一个非空白字元.
0(数字) 移动标到该行的第一个字元(包含空白).
< 移动该行向左移动一个tab键距离,按第二次後开始动作.
> 移动该行向右移动一个tab键距离,按第二次後开始动作.
B 往上移动标到下一个字的开始.
E 标往後移动到下一个字的最後一个字元.
nG 移动到某行,n为行数,若没有指定则为档案的最後一行.
H 移动标到档案第一行行首.
L 将标移动到萤幕的最下一行.
M 将标移动到萤幕的中间行.
W 往下移动标到下一个字的开始.
^ 移到该行第一个非空白字元.
e 移动到该字的最後一字母.
f<字元> 行中向後搜寻该字母并移动标到该位置.
移动到a字母的位置fa
t<字元> 行中向後搜寻该字母并移动标到该字元前一个位置.
{ 往上移动到前一段落.
} 往下移动到後一段落.
档案命令:
显示出目前档案是否更改,所在行的位置.
file_name: unmodified : line 1 of 380 [0%]
vi file_name file_name2
用此命命可以在两个档案中切换.
ZZ 将文件存档并离开vi
编辑命令:
输入:
I 移动标道行首的第一个字元并开始接受输入.
R 以取代模式进入输入模式.
:
Y 该行到暂存区
删除:
D 从标目前位置道行尾的所有字元删除..
S 将该行清除并进入输入模式.
X 删除标之前的一个字元
取代:
!shell命令 !後接shell comd ,并以shell cmd 执行结果取代标该行.
!panda
用以下讯息取代原有行的内容
bash: panda: command not found
r 按r後接着按某字元,以取代标所在的该字元.
~ 切换标所在字元的大小写
重:
& 在该行重之前的规则表示式.
前提是需要之前有执行过规则表示式.
用panda取代a :s/a/panda/
若之前没有任何表示式 则系统会显示如下讯息
No previous regular expression
. 重上一个更改文件内容的vi命令.
n 搜寻之前所搜寻过的字串
若先执行 /BSD
再执行 n 等同於执行 /BSD
若先前没有搜寻任何东西 会有如下讯息
No previous search pattern.
复原:
U 恢复状态到标起初接触此行的状态
u 复原前一个动作产生的效果(也就是回复)
其他:
: 执行ex 命令
J 将下一行与此行合.
Q 离开vi模式并切换到ex模式.
(3) ex命令
◎EX COMMANDS
以下的命令属於ex编辑器所用.也就是说要在vi执行时需要先换成ex mode (:)
vi/ex mode切换 於ex mode输入vi 即可.
! shell command 执行shell命令
" 解
# 数字 显示选择的行数,每行前面标示出行号.
* buffer_name 执行该buffer
[行数]a! 在该行的下一行,产生输入的文字. 行数从 0 开始.
:1a! (在第二(1+1=2)行产生输入文字)
接着会出现如下的讯息
Entering ex input mode
接着您就可以输入文字 按 ctrl+c 结束
[行数]c! 该行用输入的文字取代. 行数从1开始.
:1c! (在第一行产生取代文字) 接着会出现如下的讯息
Entering ex input mode
接着您就可以输入文字取代 按 ctrl+c 结束
[行数围]d 将处於该行数围内的文章删除.
1,3d (表示从第1行到第3行删除; ,表示到的意思)
[Ee]dit! file_name
[Ee]x! file_name 编辑不同的档案,此为编辑file_name,[]表示其中之一。
也可以用 :e file_name 或 :edit file_name 编辑不同档案
exu[sage] [ex命令] 显示该ex命令的使用方式。
显示edit的使用方式 :exu edit 显示结果如下
+-+-+-+-+-+-+-+-+-+
command begin editing another file
Usage:[Ee][dit][!] [+cmd] [file]
Press any key to continue [: to enter more ex commands]:
分别显示出 简易叙述 使用语法 结束或继续
f[ile] [file_name] 显示档案讯息 ( 与vi命令中的ctrl+g类似 )
[range] g[lobal] /样式/ [ex命令] 将符合条件的样式加以用ex命令处理
可以设定围,若没有围设定表示全部。
若不加命令只会显示符合样式的内容。
如 :g/BSD/ (显示有BSD的行列)
[range] v[lobal] /样式/ [ex命令] 将不符合条件的样式加以用ex命令处理
可以设定围,若没有围设定表示全部。
若不加命令只会显示不符合样式的内容。
如 :g/BSD/ (显示没有BSD的行列)
he[lp] 显示求助讯息
[行数]i[nsert]! 将所输入的文字内容,插入自订的行数.原行数顺延
[行数]j[oin]! 将该指定行与下一行合。
[行数]l[ist] 显示该指定行(围)。
[围]m[ove] line 将某围的内容搬移到某自订行之後。
若将3-5行搬移到第6行之後,指令为:3,5m6
mk[exrc][!] file_name 将缩写、编辑参数及map写到file_name
[Nn][ext][!] [file ...] 继续编辑某一档案。
pre[serve] 以ex -r 能够恢复的形式储存档案。
[Pp]rev[ious][!] 编辑先前的档案。
[围] p[rint] 显示围内容
[行数] pu[t] 将buffer中的内容在特定行贴上。
q[uit][!] 强制离开
rec[over] file 回复先前用pre储存的档案,等同於vi -r filename
:档案放在/var/tmp/r资料夹下
se[t] 设定环境变数,後接想要设定的变数(值)
se[t] [all] 显示全部环境变数
sh[ell] 跳脱编辑,回到shell下,可执行其他动作。
用exit离开shell。
so[urce] file 从档案中读取命令
[range] s[ubstitute] [/被取代的样式/取代样式/]
在某围内将符合的样式用取代样式取代。
su[spend][!] 暂停程式进行,回到shell,用fg回复
st[op][!] 同su!
ve[rsion] 显示vi编辑器的版本。
vi[sual] 进入vi (ex mode用)
viu[sage] [command] 显示vi command的语法,若没有特别指定,则显示全部。
[围] w[rite][!] [>>] [file_name] 将围内容附加到档案file_name。
[围] w[rite][!] [file_name] 将围内容另存新档file_name。
[围] wq[!] [>>] [file_name] 将围的内容附加到档案file_name并离开。
x[!] 强制存档


发布评论