免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 736 | 回复: 0
打印 上一主题 下一主题

VI操作指导 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-13 13:59 |只看该作者 |倒序浏览

vi是在Unix工作站上广泛使用的功能强大的全屏幕编辑工具。
(1)   进入vi:
直接执行 vi编辑程序即可。此刻屏幕上会出现 vi 的编辑屏幕,同时 vi 会将文件复制一份至内存中的缓冲区(buffer)。vi会保留在硬盘中的文件不变,而先对缓冲区的文件作编辑,编辑完成后,使用者可决定是否要取代原来旧有的文件。
(2)   离开vi:
若在输入模式下,则先利用[ESC]进入指令模式,而后即可选用下列指令离开vi。
:q!        离开vi,并放弃刚在缓冲区内编辑的内容。
:wq       将缓冲区内的资料写入硬盘中,并离开vi。
:ZZ       同wq。
:x         同wq。
:w         将缓冲区内的资料写入硬盘中,但并不离开vi。
:q         离开vi,若文件被修改过,则会被要求确认是否放弃修改的内容。
(3)   vi的操作模式:
vi提供两种操作模式:编辑模式(insert mode)和命令模式(command mode)。当使用者进入 vi 后,即处在命令模式下,此刻键入的任何字符都被视为指令。在此模式下可进行删除、修改等动作。若要输入资料,则需进入编辑模式。
编辑模式
如何进入编辑模式:
a(append)         由光标之后加入资料。
A                   由该行之末加入资料。
i                    (insert)由光标之前加入资料。
I                    由该行之首加入资料。
o(open)             新增一行于该行之下以供输入资料。
O                          新增一行于该行之上以供输入资料。
如何离开编辑模式:
[ESC]结束编辑模式。
命令模式
光标的移动:
h            向左移一个字符。
j             向上移一个字符。
k            向下移一个字符。
l             向右移一个字符。
0            移至该行之首。
$            移至该行之末。
^             移至该行的第一个字符处。
H            移至屏幕的第一列。
M           移至屏幕的中间那列。
L            移至屏幕的最后一列。
G            移至该文件的最后一列。
+            移至下一列的第一个字符处。
-             移至上一列的第一个字符处。
(            移至该句之首。
)             移至该句之末。
{             移至该段落之首。
}             移至该段落之末。
nG          移至该文件的第n列。
n+          移至光标所在位置之后的第n列。
n-           移至光标所在位置之前的第n列。
会显示该行的行号、文件名称、文件中最末行的行号、光标
所在行号占总行号的百分比。
句子(sentence)在vi中是指以[!]、[.]或[?]结束的一串字。
段落(paragraph)在vi中是指以空白行隔开的文字。
屏幕的移动:
              屏幕往下卷一页。
      屏幕往上卷一页。
      屏幕往下卷半页。
      屏幕往上卷半页。
      屏幕往下卷一行。
      屏幕往上卷一行。
删除与修改:
x            删除光标所在处字符。
X            删除光标所在之前一字符。
dd           删除光标所在该行。
r             用接于此指令之后的字符取代光标所在字符。
R            进入取代状态,直到[ESC]为止。
s            删除光标所在的字符,并进入输入模式直到[ESC]。
S            删除光标所在的该行资料,并进入输入模式直到[ESC]。
移动与复制:
利用delete及put指令可完成资料移动的目的。
利用yank及put指令可完成资料复制的目的。
利用yank和delete可将指定的资料复制到内存缓冲区,而通过 put 指令可将缓冲区内的资料复制到屏幕上。
指令重复:
在命令模式中,可在指令前面加入一数字n,则此指令动作会重复执行n次。
取消前一动作(Undo):
u            恢复最后一个指令之前的结果。
U            恢复光标该行的所有改变。
查找:
在vi中可查找某一字符串,使光标移至该处。
/字符串   往光标之后寻找该字符串。
?字符串   字符串往光标之前寻找该字符串。
n            往下继续寻找下一个相同的字符串。
N            往上继续寻找下一个相同的字符串。
资料的连接:
J             句子的连接。将光标所在的下一行连接至光标该行的后面。
若某行资料太长亦可将其分成两行,只要将光标移至分开点,进入输入模式(可利用 a、i等指令)再按[Enter]即可。
环境的设定:
:set nu 设定资料的行号。
:set nonu     取消行号设定。
:set ai   自动内缩。
:set noai      取消自动内缩。
-300自动内缩(automatic indentation),在编辑文件或程序时,有时会遇到需要内缩的状况,“:set ai”即提供自动内缩的功能。
ex指令:
读写资料
:w                将缓冲区的资料写入硬盘中。
:10,20w test 将第10行至第20行的资料写入test文件。
:10,20w>>test     将第10行至第20行的资料加在test文件之后。
:r test          将test文件的资料读入编辑缓冲区的最后。
删除、复制及移动:
:10,20d        删除第10行至第20行的资料。
:10d             删除第10行的资料。
:%d                    删除整个编辑缓冲区。
:10,20co30          将第10行至第20行的资料复制至第30行之后。
:10,20mo30         将第10行至第20行的资料移动至第30行之后。
字符串搜寻与取代:
s(substitute) 指令可查找某行列范围。
g(global)指令则可查找整个编辑缓冲区的资料。
s指令以第一个满足该条件的字符串为其取代的对象,若该行有数个满足该条件的字符串,也仅能取代第一个,若想取代所有的字符串则需加上g参数。
:1,$s/old/new/g           将文件中所有的“old”改成“new”。
:10,20s/^/   /        将第10行至第20行资料的最前面插入5个空白。
:%s/old/new/g            将编辑缓冲区中所有的“old”改成“new”。
恢复编辑时被中断的文件:
在编辑过程中,若系统宕掉或连线中断,而缓冲区的资料并还未被写回硬盘时,当再次回到系统,执行下列指令即可恢复中断前的文件内容。
%vi -r filename
编辑多个文件:
vi还提供同时编辑多个文件的功能,方法如下:
%vi file1 file2 ..
当第一个文件编辑完成后,可利用“:w”将该缓冲区存档,而后再利用 “:n”载入下一个文件。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/55373/showart_441593.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP