免费注册 查看新帖 |

Chinaunix

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

[SCO UNIX] vi 简介 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-11-26 11:40 |只看该作者 |倒序浏览
整理的不好,还请见凉!

vi 是visual edit 的缩写

进入vi
        vi test
离开vi
        :q! 离开vi,并放弃刚在缓冲区内编辑的内容。
      :wq 将缓冲区内的资料写入磁盘中,并离开vi。
      :ZZ 同wq
          同wq
        :w  将缓冲区内的资料写入磁盘中,但并不离开vi。
      :q  离开vi,若文件被修改过,则会被要求确认是否放弃修改的内容,此指令可与: w 配合使用。
Vi 的操作模式
         Vi 提供两种操作模式:
                             输入模式(insert mode)
                             指令模式(command mode)
当使用者进入vi后,既处于指令模式下,此刻键入任何字元皆被视为指令。

输入模式:a(append)    游标之后加入资料。
          A            该行之末加入资料
          i (insert)   游标之前加入资料
          I            该行之首加入资料
          o (open)     新增一行与该行之下供输入资料
          O            新增一行与该行之上供输入资料

指令模式:B        移至该行第一个字符,若光标在该行第一字符则光标移至上一行第一字符。
        b          由游标所在位置之前一个字串的第一个字元
     cc           删除整行,修改整行的内容。
     D       以行为单位,删除游标在内后面的所有字符。
          db           删除该行光标前字符
     dd           删除该行
     de           删除自光标开始后面的字符
     d加字符   删除光标所在位置至字符之间的单
     E      移至该行最后字符,若光标在该行最后字符则光标移至下一行最后字符      
         e      由游标所在位置至该字串的最后一个字元
     G            移至该档案的最后一行 
     h            向前移一个字元
          j            向下移一个字元
          k            向上移一个字元
          0            移至该行之首
          M            移至视窗的中间那行
          L            移至视窗的最后一行
     l            向后移一个字符         
          0            由游标所在位置该行的第一个字元
          nG           移至该档案的第n行
          n+           自游标所在位置向后移n行至该行的第一字符
          n-           自游标所在位置向前移n行至该行的第一字符
          R            进入取代状态,直到《ESC》为止
          s            删除游标所在字元,并进入取代模式直到《ESC》
          S            删除游标所在之该行资料,并进入输入模式直到《ESC》
          w            由游标所在位置之下一个字串的第一个字元
          x            删除游标所在该字元。
          X            删除游标所在之前一字元。
          r            用接于此指令之后的字元取代(replace)游标所在字元
          yy           yank整行,使游标所在该行复制到记忆体缓冲区
          <ctrl>;<g>;    显示该行之行号、档案名称、档案中最末之行号、游标所在行号占
                       总行号之百分比
          $            由游标所在位置至该行的最后一个字元。
          )           由游标所在位置至下一个句子的第一个字元。
         (            由游标所在位置至该句子的第一个字元。
          {            由游标所在位置至该段落的最后一个字元。
          }            由游标所在位置至该段落的第一个字元

          yank和delete可将指定的资料复制到记忆体缓冲区,而藉有put指令可将缓冲区内的资料复制到荧幕上
               例如:搬移一行      :在该行执行dd
                                     游标移至目的地
                                     执行p
                     复制一行      :在该行执行yy
                                     游标移至目的地
                                     执行p
视窗移动:
          <ctrl>;<f>;    视窗往下卷一页
          <ctrl>;<b>;    视窗往上卷一页
          <ctrl>;<d>;    视窗往下卷半页
          <ctrl>;<u>;    视窗往上卷半页
          <ctrl>;<e>;    视窗往下卷一行
          <ctrl>;<y>;    视窗往上卷一行
删除、复制及修改指令介绍:
d(delete)、c(change)和y(yank)这一类的指令在vi 中的指令格式为:  
                                                        operation+scope=command
                                                        (运算子)(范围)
运算子:
        d   删除指令。删除资料,但会将删除资料复制到记忆体缓冲区。
        y   将资料(字组、行列、句子或段落)复制到缓冲区。
        p   放置(put)指令,与d和y配合使用。可将最后delete或yank的资料放置于
            游标所在位置之行列下。
        c   修改(change)指令,类似delete于insert的组合。删除一个字组、句子等
            资料,并插入新键入的资料。

指令重复:在指令模式中,可在指令前加入一数字n,则此指令动作会重复执行n次。
   例如: 删除10行    :10dd
          复制10行    :10yy
取消前一动作(undo):即复原执行上一指令前的结果。
         u    恢复最后一个指令之前的结果。
         U    恢复游标该行之所有改变。
搜寻:在vi中可搜寻某一字串,使游标移至该处。
         /字串      往游标之后寻找该字串。
         ?字串     往游标之前寻找该字串。
         n          往下继续寻找下一个相同的字串。
         N          往上继续寻找下一个相同的字串。
资料的连接:
        J    句子的连接。将游标所在之下一行连接至游标该行的后面。
        若某行资料太长亦可将其分成两行,只要将游标移至分开点,进入输入模式(可利用a、i等指令)在按《ENTER》即可。




使用vi 

作为unix最重要的编辑工具,熟练的掌握vi对于开发人员和系统管理员同样的重要。下面是我的vi的使用经验,希望能够对大家有所帮助。
一.我们先看一下vi的设置项。
ignorecase/noignorcase            忽略/不忽略大小写
tabstop=n                         设置tab相当于n个空格
list/nolist                       显示/不显示制表符
number/nonumber                   显示/不显示行号
二.vi的编辑命令
ndd或nD                           删除n行
nyy                               拷贝n行
ma                                定义宏,使用’a调用
“a                               定义缓冲区
/string                           查找string字符串
s/old_str/new_str/g               用new_str串替换old_str
.                                 重复上一次操作/光标所在行
ctrl+g                            在屏幕底显示文件信息
shift+g                           到文件尾
shift+a                           到行尾
shift+i                           到行首(最先面的字符)
ctrl+f/ctrl+d                     向下翻一屏/半屏
ctrl+b/ctrl+u                     向上翻一屏/半屏
h/l/j/k                           向前/后/下/上移动
u                                 恢复上一个操作
e filename                        编辑另一个文件
e#                                切换会上一个文件
n                                 当一次编辑多个文件时,编辑下一个文件;也可以
                                 是重复上一个查找
r filename                        从filename中读内容到光标的下一行
w filename                        将当前文件的内容写到filename中
sh                                暂退出编辑文件,但此文件仍处于编辑状态,
                                 用exit或ctrl+d回到编辑文件
!                                 在编辑状态下,执行shell命令
!!                              重复执行上一个shell命令
^                                 表示行首
$                                 表示行尾
g line_no                         到line_no行
shift+5                           扩号的匹配(包括小扩号,大扩号,中扩号)
n<</ n>;>;                          将n行向左/右移动一个tab键的距离的位置
cw                                替换一个词
三.举例
1.删除文件中的几行
到删除的开始处           ma
到删除的结束处           d’a
2.拷贝文件中的几行
到拷贝的开始处         ma
到拷贝的结束处         y’a
3.替换文件中所有匹配的字符
替换文件中的 lesson为course
s/lesson/course/g
注意:可能替换含有lesson的其他词
4.替换文件中一个区域的字符
start_line, end_line %s/lesson/course/g 或者
采用宏的方式
‘a,. %s/lesson/course/g    #需要定义宏;’.’是指光标所在行
5.替换一个文件中某些词
比如替换none为nothing
查找         /none
替换         cw,输入nothing,按键盘Esc
继续查找     n
替换         .
6.重复执行一个shell命令
编译一个程序
保存编辑后的文件     :w
编译文件             :!make
修改文件后,在保存   :w
再编译               :!!
7.在两个文件互拷贝
第一种方法:
   编辑源文件           vi source_file
到拷贝的部分开始处       ma
到拷贝的部分结束处       :.,’a w tempfile
退出当前文件             :q
编辑目的文件             vi dest_file
到拷贝的地方             :r tempfile
第二种方法:
    编辑源文件                vi source_file
    到拷贝的部分开始处        ma
    到拷贝的部分结束处       “ay’a
    不退出源文件编辑目的文件  :e dest_file
    到拷贝的地方             “ap




  

论坛徽章:
0
2 [报告]
发表于 2002-11-26 11:50 |只看该作者

vi 简介

不错!

论坛徽章:
0
3 [报告]
发表于 2002-11-26 13:11 |只看该作者

vi 简介

好!打印了2份!

论坛徽章:
1
15-16赛季CBA联赛之北控
日期:2022-03-04 22:35:50
4 [报告]
发表于 2002-11-26 13:21 |只看该作者

vi 简介

ok

论坛徽章:
0
5 [报告]
发表于 2002-11-26 14:41 |只看该作者

vi 简介

补充一点:
命令模式下,~用于对光标处字符大小写替换;Q进入行编辑状态;
:vi从行编辑状态回到全屏幕编辑状态&#59;

行云流水 该用户已被删除
6 [报告]
发表于 2002-11-27 14:07 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2002-11-27 15:29 |只看该作者

vi 简介

我用    VI FILENAME 进入了一个文件??
无法退出来了!!
   我输入         :q!
                            一点用都没有???

论坛徽章:
1
15-16赛季CBA联赛之北控
日期:2022-03-04 22:35:50
8 [报告]
发表于 2002-11-27 17:00 |只看该作者

vi 简介

首先按ESC,再输入:q!

论坛徽章:
0
9 [报告]
发表于 2002-11-27 22:30 |只看该作者

vi 简介


已收藏
和我以前发的那个有很多不同之处

论坛徽章:
0
10 [报告]
发表于 2002-12-12 14:53 |只看该作者

vi 简介

挺全的我用他的时候就用几个东东 ,1 a,2 d,3 i, 4 :q!, 5  :wq
就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP