vi编辑器的使用

来源:互联网 发布:开源的数据库 编辑:程序博客网 时间:2024/05/09 03:12

                               vi编辑器的使用

1.目的

  (1) 理解vi的三种运行模式及其切换方法。

  (2) 学会使用vi的各种操作命令进行文本文件的编辑。

  (3) 用vi编写Linux下C程序,会用gcc编译。

2.环境及预备知识

  环境:Linux,gcc编辑器

   预备知识

  (1)登录

     Login:user  

     passwords:123456

     $ startx

    右上角:应用程序——〉附件——〉终端

     vi fork.c   // i插入,ESC: 命令

     wq        //退出保存         wq    .c

     halt –p   //关机

   (2)   编译命令 gcc –o fork  fork.c (fork是自己定义的文件名,fork.c是全名)

   (3)   fork [enter]  或者加路径名 /home/user/fork [enter] (打开user文件夹,拖文件到$ 后执行也可以)

   (4)   用到的相关Vi编辑器的指令可以在附录中查询。

3.要求与内容

    简介: vi编辑器是由加州大学伯克利分校计算机科学系开发的软件演化而来的。vi的意思是“ vee-eye  short for visual ”。接下来的练习将使你熟悉vi的一些基本的功能和特色。

   要求:

       (1) 创建一个文件.

       (2) 保存退出一个文件 及 不保存退出一个文件.

       (3)  在文本中使用不同的键进行光标的移动.

       (4) 在一个文件中加入、删除与修改文本.

       (5) 设定选项以自定义编辑环境.

       (6) 调用命令行编辑功能.

   内容:

    1. 创建一个文件

     (1) 确认你现在正处在你的用户主目录中。在你的用户主目录中创建一个文件vitest。

     (2) 当你用vi打开一个文件时,被缺省地置为命令模式中。按i(insert)键,将转换为输入(文本)模式。你也可以按a(append)键,进行转换。应当根据是在光标处输入还是在光标后输入决定是按i键还是按a键。你进入输入模式时,没有任何信息提示你。从输入模式转换回命令模式时,请按Esc键。注意,当你连续两次按Esc键时,终端可能会发出beep声来提示你,它的意思是你已经处于命令模式了,不用再按了。再按下i键,你又回到了输入模式。

    (3) 请严格地将下面所提供的内容一行行地输入到文件中去。在输入完成后,再将字母a,b,….z输入到文件中去,每一个字母占一行。这样的话,我们就有两屏的内容可供练习使用。

     This is a training sessionabout the usage of the vi editor. We need some more lines to learn the mostcommon commands of the editor. We are now in the entry mode and we will switchright after this to the command mode.

    (4)  返回到命令模式。保存并退出文件。注意,你一按:号,:立即出现在输入区域的最后一行。一旦缓冲区为空,并且文件已经关闭,你将会看到这个文件有多少行及多少个字符。

   2. 移动光标

    1) 使用vi打开vitest文件。注意文件的最后一行,显示了文件的名字和字符数。

    2) 练习使用光标键和h,j,k,l键来移动光标。向下移一行,向上移一行,向左移动两个字符,向右移动两个字符。

    3) 你也许不想只是将光标每次只移动一个字符或一行。现在练习每次将光标移动一屏或者移动几行。请在命令模式下,将光标放在第一行,然后做以下练习:

      (1)  将光标向下移动一屏;

      (2)  将光标向上移动一屏;

      (3)  将屏幕向下滚动1/2窗口;

      (4)  将光标移到文件的最后一行;

      (5)  将光标移到文件的第一行;

      (6)  将光标移到文件的第四行;

      (7)  将光标移到行的末尾;

      (8)   将光标移到行的开始.

   4) 将光标移动到文件的开始处。查找词entry。你的光标将被放到字符e处。转换到输入模式,并且加入一个单词text,和一个空格。

   5) 将光标移到同行的单词mode后的空格后,插入一个逗号。注意,你当前处于输入模式。

   6) 进入命令模式。把光标置于以”some more lines”开始的那一行中的任何位置上,然后插入一个空行,以形成两段。

   7) 插入一个空行时,你被自动地转换到输入模式。现在,请转换到命令模式,保存你所作的修改,但是不要退出编辑器。

   8) 现在是命令模式。删除字符c,e,g,但仍然将空行保留。也就是说,只删除字符,不删除整行。而后回到这些行的位置处,将这些空白行删除。你可以使用两种删除的方式。

    9) 现在,请你用字母z来替换字母h。

    10) 你现在决定不保存这些更改,退出编辑过程。(不保留上次保存以来所做的所有更改)

    11) 再次编辑vitest文件。首先,一次一行地将第一段中的每一行拷贝到文件的末尾。当这项工作完成时,将第二段整个地拷贝到文件的末尾。

    12) 你发现你刚才加到文件末尾的内容是重复的内容,使用一个命令一次将它们全部删除。

    13) 现在,你想把当前的日期与时间嵌入到文件的第一行。请在vi编辑内部做这项工作。

  3. 使用set命令,定制编辑环境

      (1) 使用set命令,可以为你当前编辑过程设定环境。返回到文件的顶端,在确保你已处于命令模式的前提下,执行下列的命令:

       设定右边界单词自动折行为15个空格;

       当处于输入模式时,能显示出当前的模式。

       显示行号。

      (2) 检查前面所设定的选项的作用。

      (3) 保存并退出编辑。

  4. 命令行编辑

    (1) 你已经熟悉了vi的模式与命令,所以现在可以练习命令行编辑了。使用set –o vi命令来启动命令行编辑功能。

    (2) 现在你可以调出以前执行过的命令,编辑它们,并且重新执行它们。现在我们先执行几条命令。

     ls /usr   cat /etc/filesystems  echo hello

    (3) 假设你现在想编辑一条你刚才执行过的命令。先按Esc键,以进入vi命令模式。多次按k键,将倒序显示刚才已经执行过的几条命令,再按几下j键,将正序显示这几条命令。这实际是从命令缓冲中重新调回它们。所有已经执行过的命令,全部保存在你的用户主目录中的.sh_history文件中。

    (4) 重新取回ls命令,使用l键将光标移到/字符处(如果你使用光标键来移动光标,将会删除光标所经过的内容,所以你只能使用k键向右移动,使用l键向左移动)。而后,使用i键来插入文本,将该命令改成一个长列表命令。最后,执行它。

    (5) 重新调回cat命令,此次,显示文件/etc/passwd文件的内容

    (6) 重新调回cat命令,将光标置于行尾(使用$),在该命令的结尾处加一个管道符,使其输出成为wc命令的输入,显示出该文件的行数。

附录:

  1. 编辑模式下的常用命令

     表1:光标定位

命令

说明

h,j,k,l

分别用于光标左移、下移、上移、右移一个字符

Ctrl+b

将屏幕向文件首方向翻滚一整屏(=PageUp)

Ctrl+f

将屏幕向文件尾方向翻滚一整屏(=PageDown)

H

将光标移到当前屏幕首行的行首(即左上角)

nH

将光标移到当前屏幕第n行的行首

O

移动至光标所在行的行首

$

移动至光标所在行的行尾


      表2:替换和删除

命令

说明

rc

用字符c替换光标所指向的第一个字符(非空格)

nrc

用字符c替换光标所指向的前n个字符

x

删除光标处的字符

nx

删除光标所在位置开始向右n个字符

dd

删除光标所在的整行

ndd

删除光标所在的整行及其后n-1行的内容

  表3:复制和粘贴

命令

说明

yy

将当前行的内容复制到缓冲区

nyy

将当前开始的n行内容复制到缓冲区中

p

将缓冲区中内容写出到光标所在的位置

    表4:撤销和重复

命令

说明

u

取消前一次的误操作或不合适的操作对文件造成的影响,使之恢复到这种操作被执行前的状态。

再执行一次前面刚完成的某个复杂的指令

    

     表5:退出

命令

说明

ZZ

存盘退出

ZQ

作废退出

  2.命令模式下的常用命令

     表1:跳行

命令

说明

:n

直接输入要移动到的行号

    表2:退出

命令

说明

:q

退出Vi

:wq

保存退出Vi

:q!

不保存退出Vi

    表3:文件相关

命令

说明

:w

将当前编辑的内容存盘

:w file

将当前编辑的内容写到file文件中

:n1,n2w file

将从n1行开始到n2行结束的行写到file中

:r file

打开另一个文件file

:e file

新建file文件

:f file

把当前文件改名为file文件

 


0 1
原创粉丝点击