- 论坛徽章:
- 0
|
十二、全屏幕编辑器(vi)
vi(Visual)是以视觉为导向的全屏幕编辑器、共分为三种方式(mode):
command方式:
任何输入都会作为编辑命令,而不会出现在屏幕上,若输入错误则有“jia”的声音;
insert方式:
任何输入的数据都置于编辑寄存器。在command方式下输入(I,a,A等),可进入insert方式,insert方式下按ESC,可跳回command方式。
escape方式:
以“:”或者“/”为前导的指令,出现在屏幕的最下一行,任何输入都被当成特别指令。
进入vi(在系统提示符下面输入以下指令):
- vi 进入vi而不读入任何文件
- vi filename 进入vi并读入指定名称的文件(新、旧文件均可)。
复制代码
存储及退出vi
- :w filename 存入指定文件,但未退出vi(若未指定文件名则为当前工作的文件名)。
- :wq 存文件,并且退出vi.
- :q 不作任何修改并退出vi。
- :q! 放弃任何修改并退出vi。
- :!command 暂时退出vi并执行shell指令,执行完毕后再回到vi。
- :sh 暂时退出vi到系统下,结束时按Ctrl + d则回到vi。
复制代码
加数据指令
- i 在关标位置开始插入字符,结束时候按ESC键。
- I 在光标所在行的最前面开始加字,结束时按ESC键。
- a 在光标位置后开始加字,结束时按ESC键。
- A 在光标所在行的最后面开始加字,结束时按ESC键。
- o 在光标下加一空白行并开始加字,结束时按ESC键。
- O 在光标上加一空白行并开始加字,结束时按ESC键。
- !command 执行shell指令,并把结果加在光标所在行的下一行。
复制代码
删除指令
- nx 删除由光标位置起始的n个字符(含光标位置,按一个x表示删除光标所在的字符)
- nX 删除由光标位置起始的n个字符(不含光标位置)。
- ndw 删除光标位置其实的n个字符组(word)。
- d0 将行的开始到光标位置的字符全部删除。
- d$ 或D 将光标位置起始到行尾的字符全部删除。
- ndd 将光标位置起始的n行(整行)删除(dd表示删除光标所在行)。
- :start,endd 删除文件的第start到end行。
复制代码
关标移动
- 0 移到一行的开始
- $ 移到一行的最后
- [ 移到文件开始位置
- ] 移到文件结束位置
- nh 往左移n位
- nl或者spacebar 往右移n位
- nk 向上移n行
- n+ 向上移n行,光标在该行的起始
- ni 向下移n行
- n- 向下移n行,光标在该行的起始
- H 移到屏幕的左上角
- M 移到屏幕的中间行开头
- L 移到屏幕的最后一行
- G 移到文件的最后一行
- nG或者:n 移到文件的第n行
- nw 右移n个字组,标点符号属于字组
- nW 右移n个字组,标点符号不属于字组
- nb 左移n个字组,标点符号属于字组
- nB 左移n个字组,标点符号不属于字组
- Ctrl + u 屏幕上卷半个菜单
- Ctrl + d 屏幕下卷半个菜单
- Ctrl + b 屏幕上卷一个菜单
- Ctrl + F 屏幕下卷一个菜单
复制代码
修改指令
- r 修改光标文件的字符
- R 从光标位置开始修改,结束时按ESC键
- new 更改n组字符,结束时按ESC键
- ncc 从光标所在位置开始更改n行,结束时按ESC键
复制代码
重排各行长度
- i 并按Enter将该行由光标所在处断开,并进入insert方式
- J 把下一行的数据连接到本行之后
复制代码
寻找指令
- /text 从光标位置往下找字串text
- ?text 从光标位置往上找字串text
- n 继续找下一个字串(在输入上面的寻找指令之后使用)
复制代码
寻找并且取代指令
- :getxt1/s/ /text2/options 将各行的text1替换为text2
- option=g表示文件中所有的text1均被取代,若未输入任何option,则只有各行中的第一个出现的text1被取代
- option=go 在屏幕显示各取代的行
- option=gc 在每个字串取代之前要求确认
- Start,endgtext1/s/ / text2/options 同上,只寻找并取代第start~end行。
- 或:Start,ends/text1/text2/options
复制代码
复制及移动文件
- :first,last co dest 将first 到last行的数据复制到目标行(dest)下面
- :Start,end m dest 将start 到 end行的数据移动到目标行(dest)下。
- :r filename 将指定文件的内容读入光标所在行下。
- nY 将光标所在位置开始的n行数据暂存
- p 复制暂存数据在光标的下一行
- P 复制暂存数据在光标的上一行
复制代码
其他命令
- . 重复前一指令
- u 取消前一指令
- Ctrl + l 刷新屏幕显示
- :set number 显示文件的行号,但不会存文件
- :set nonumber 解除行号显示
- :set ai 设置每行起始位置(以光标当前位置为起始)
- :set noai 取消行起始位置设定
- :f 或<Ctrl> + g 告诉用户有关现行编辑文件的数据。
复制代码
[ 本帖最后由 levopat 于 2006-12-19 16:21 编辑 ] |
|