• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

vi 简介

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 24次 | 进入软件测试论坛讨论

领测软件测试网
整理的不好,还请见凉!

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

 


  


 yuchen1122 回复于:2002-11-26 11:50:48
不错!

 aswellas 回复于:2002-11-26 13:11:50
好!打印了2份!

 sdccf 回复于:2002-11-26 13:21:13
ok

 edwardcj 回复于:2002-11-26 14:41:57
补充一点:
命令模式下,~用于对光标处字符大小写替换;Q进入行编辑状态;
:vi从行编辑状态回到全屏幕编辑状态;



 行云流水 回复于:2002-11-27 14:07:56
太好了!

 绿船 回复于:2002-11-27 15:29:09
我用    VI FILENAME 进入了一个文件??
无法退出来了!!
   我输入         :q!
                            一点用都没有???


 sdccf 回复于:2002-11-27 17:00:17
首先按ESC,再输入:q!

 RootZero 回复于:2002-11-27 22:30:42

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

 king1981 回复于:2002-12-12 14:53:13
 挺全的我用他的时候就用几个东东 ,1 a,2 d,3 i, 4 :q!, 5  :wq
就可以了

 gayanzi 回复于:2002-12-12 15:56:41
good,i have not use it long time!thanks!

 thediablo 回复于:2002-12-12 16:47:21
good visual edit!

 king1981 回复于:2002-12-17 16:49:57
没有什么了,( 不是说我吧!

 lovqing 回复于:2002-12-17 16:54:56
i like ,,

 Ulyssesy 回复于:2002-12-18 08:32:30
感谢!!!!!!!

 wangyi5460 回复于:2002-12-22 15:11:07
谢谢

 viqyf 回复于:2002-12-22 21:44:24
大家分享!

 johnsilver 回复于:2002-12-23 08:26:04
有必要请哪位大侠抽空把有关vi的技巧整理一下,OK?

 9997 回复于:2002-12-23 08:39:15
这是一篇很不错的资料,我也一直想整理一下,想能对自己工作带来些帮助,苦于知识匮乏,不能全括。不错,很好,谢谢你了。


 求知的农民 回复于:2003-08-15 17:12:44
感谢,收藏

 ruby_liu 回复于:2003-08-19 11:50:48
很不错,可以节海省很多时间.

 ansla 回复于:2003-08-19 13:38:14
非常好

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网