精华内容
下载资源
问答
  • linux vi 命令 详解

    2012-01-11 11:42:05
    linux vi 命令 详解
  • linux vi 命令详解

    2016-04-15 21:02:52
    vi命令详解 vi命令是unix下常用而重要命令,可在全屏幕方式下编辑一个或多个文件。若在vi执行时没有指定一个文件,那么vi命令会自动产生一个无名的空的工作文件。若指定的文件不存在,那么就按指定的文件名创建一...

    vi命令详解

    vi命令是unix下常用而重要命令,可在全屏幕方式下编辑一个或多个文件。若在vi执行时没有指定一个文件,那么vi命令会自动产生一个无名的空的工作文件。若指定的文件不存在,那么就按指定的文件名创建一个新的文件。若对文件的修改不保存的话,v i命令并不改变原来文件的内容。

      注意:vi命令并不锁住所编辑的文件,因此多个用户可能在同时编辑一个文件,那么最后保存的文件版本将被保留。

    下面是vi命令使用的一些选项及含义:

      -c sub-command 在对指定的文件编辑前,先执行指定的命令 sub-command .

      -r filename 恢复指定的文件filename .

      -R 将指定的文件以只读的方式放入编辑器中,这样不会保存对文件的任何修 改。

      -y number 将编辑窗口的大小设为number行。

      下面是vi编辑所处的三种模式:

      命令模式 进入vi时所处的模式。在此模式下用户可输入各种子命令对进行*作,如删除行、粘贴行、移向下一个字、移向不同行等。

      文本输入模式 在此模式下可以修改一行的内容并增添新行。在命令模式下键入a 、i 或c键可进入文本输入模式,按Escape键可返回命令模式。

      命令项模式 在此模式下,可以通过子命令输入更多的参数。如:w子命令要求输入一文件名,”/”子命令要求输入一个查找项。用户使用Escape键返回命令模式。

    下面是自命令模式下执行的,在同一行上移动的自命令

      h 将光标左移一格。

      l 将光标右移一格。

      j 将光标下移一格。

      k 将光标上移一格。

      w 将光标移到下一个小字的前面。

      W 将光标移到下一个大字的前面。

      b 将光标移到前一个小字的前面。

      B 将光标移到前一个大字的前面。

      e 将光标移到下一个小字的后面。

      E 将光标移到前一个大字的后面。

      fc 把光标移到同一行的下一个c字符处。

      Fc 把光标移到同一行的前一个c字符处。

      tc 把光标移到同一行的下一个字符c的前一格。

      Tc 把光标移到同一行的前一个字符c的后一格。

      number| 把光标移到递number列上。

    下面是命令模式下在行间移动的子命令

      +或Enter 把光标移至下一行第一个非空白字符。

      - 把光标移至上一行第一个非空白字符。

      0 把光标移到当前行的第一个字符处。

      $ 把光标移到当前行的最后一个字符处。

      H 把光标移到屏幕最顶端一行。

      L 把光标移到屏幕最底端一行。

      M 把光标移到屏幕中间。

    下面是命令模式下改变屏幕显示的子命令

      z- 把当前行作为屏幕的最后一行,并重新显示屏幕。

      z. 把当前行作为屏幕的中间一行,并重新显示屏幕。

      Ctrl+l 重新显示屏幕当前内容。

      /pattern/z- 寻找pattern的下一个位置,并把所在行设为屏幕的最后一行。

    下面是在命令模式下用来显示页面的子命令

      Ctrl + f向后滚一页。

      Ctrl + d向后滚半页。

      Ctrl + b向前滚一页。

      Ctrl + u向前滚半页。

      Ctrl + e屏幕向下滚一行。

      Ctrl + y屏幕项上滚一行。

    下面是在命令模式下用来查找字符串所使用的子命令

      /pattern 向后寻找指定的pattern ,若遇到文件尾,则从头再开始。

      ?pattern 向前寻找指定的pattern ,若遇到文件头,则从尾再开始。

      n 在上次指定的方向上,再次执行上次定义的查找。

      N 在上次指定的方向的相反方向上,再次执行上次定义的查找。

      /pattern/+number 将光标停在包含pattern的行后面第number行上。

      /pattern/-number 将光标停在包含pattern的行前面第number行上。

      % 移到匹配的”()”或”{}”上。

    下面是在文本输入模式下用来输入文本的子命令(用户可在任何时候按Escape返回到命令模式):

      a 在光标之后开始输入文本。

      A在行尾开始输入文本。

      i在光标之前开始输入文本。

      I在行首第一个非空白字符前输入文本。

      o在光标所在行后插入一空行。

      O在光标所在行前插入一空行。

    下面是在命令模式下改变文本所使用的子命令(用户可在任何的时候按Escape键返回到命令模式):

      cc或S 修改一整行。

      C 改变一行光标位置以后的部分。

      cw 改变光标所在单词。

      dd删除当前行。

      D 删除光标所在行光标后面的内容。

      dw删除光标所在的单词。

      J 把下一行内容加到本行行尾。

      rc把光符所在字符替换成c .

      R 覆盖本行内容。

      u恢复上一次的修改。

      x删除光标所在的字符。

      ~ 改变光标所在出字符的大小写。

      . 重复上一个*作。

      <<把当前行移到左边。

      >>把当前行移到右边。

    下面是用于文件中拷贝文本的字命令

      p 将缓冲区内容取到光标所在行的下面一行。

      P 将缓冲区内容取到光标所在行的上面一行。

      ”bd 将文本删除至有名缓冲区b .

      ”bp 张贴有名缓冲区b中内容。

      yy把当前行放入缓冲区。

      Y 把当前行放入缓冲区。

      Yw把光标所在的单词放入缓冲区。

    下面是用于保存文件的子命令

      :w 回写修改后的文件。

      :w filename 当filename不存在时,把修改后的文件存为文件filename ,当文件filename存在时,报错。

      !w filename 如果文件filename存在时,把修改后的文件保存为文件filename .

    下面列出了在vi编辑的多个文件之间切换所用的子命令

      :n开始编辑vi激活的文件列表中的下一个文件。

      :n filenames 指定将被编辑的新的文件列表。

    下面列出了用于在当前文件和另外一个文件间切换的子命令:

      :e filename 使用filename激活vi (在vi中装入另一个文件filename)。

      e!重新装入当前文件,若当前文件有改动,则丢弃以前的改动。

      :e+filename 使用filename激活vi ,并从文件尾部开始编辑。

      :e+number filename 使用filename激活vi ,并在第number行开始编辑。

      :e# 开始编辑另外一个文件。

    下面是在本文件中加入其他文件代码所使用的子命令:

      :r filename读取filename文件,并将其内容加到当前文件后。

      :r ! command执行command文件,并将其输出加到当前文件后。

    下面是vi中其他的子命令

      ctrl+g 取得正在编辑文件的有关信息。

      :sh启动sh ,从sh中返回可用exit或ctrl+d .

      :! Command 执行命令command .

      !!重新执行上次的:! Command子命令。

      :q退出vi ,若用户对编辑的文件有所修改,系统不会让用户使用q命令退出。

      :q!退出vi而不管是否对文件有改动。

      ZZ或:wq 保存对文件的修改并退出vi .

      用户可在一个特殊的文件.exrc中定义特殊的vi命令。在vi中使用这些命令时,必须在该
    命令前加上一个冒号( :) 。

    ——————————————————-

    vi 的模式

    vi 是在很久以前就写的程序。在那个时候,键盘上没有现在熟悉的那么多功能键。所以,vi 设计成通过输入字符和 ESC 来控制输入和修改文本。

    可能这对于一些人来说是个遗憾,但是你会发现你不需要改变手在键盘上的位置就可以完成所有的功能。结果是你的输入将快速起来。

    为了完成交互的全屏幕编辑工作, vi 有三种模式。插入模式 (insert) 用于输入文本。在插入模式下,你输入的任何字符都将显示在屏幕并存于文件。命令 (command) 模式用于大多数编辑功能。在命令模式下,所有的输入都将产生一定的响应而不是直接到文本中,例如移动光标、删除一块文本、拷贝文本等。第三个模式是执行另 外的功能,例如查找、全局替换、处理多个文件等。这种模式是基于 ex 编辑器的。
    启动 vi

    当 vi 启动后,默认的模式是命令模式。按照下面的步骤试一试:输入程序名称启动 vi :

    $ vi

    你将看到类似下面的东西:

    ~~~~~~~~~~~~~~~~~~~~~~~~~Empty buffer

    i–插入

    现在我们输入 “i” 进入插入模式。字符 “i” 将不会回显。此后你输入的任何东西都将显示在缓存中。现在我们来输入一段文字。 例子中的话来自英文版的孙子兵法。注意光标的位置在例子中是个下划 线。

    If wise, a commander is able to recognize changing circumstances and toact expediently. If sincere, his men will have no doubt of the certainty ofrewards and punishments. If humane, he loves mankind, sympathizes with others,and appreciates their industry and toil. If courageous, he gains victory byseizing opportunity without hesitation. If strict, his troops are disciplinedbecause they are in awe of him and are afraid of punishment. Shen Pao-hsu … said: ‘If a general is not courageous he will be unableto conquer doubts or to create great plans.’~~~~~~~~~~~~~~~~

    Esc–Cancel

    当你输入完了,按下 Esc 键返回到命令模式。 (如果你已经处于命令模式下,按 Esc 时会听到喇叭的声音。) Esc 可以撤消未完成的命令和终止插入模式。按 Esc 后,光标将停留在你最后输入的字符的下面。

    很不幸,没有一个明显的标志表明你现在处于什么模式下。但是有简单的方 法来告诉你现在你所处的模式。如果你按下键,相应的字符出现在屏幕上,那么 你是在插入模式下,否则是命令模式下。如果你不能确定你现在所处的模式,那么 按 Esc 两次以听到喇叭声来确信你在命令模式下。
    移动光标和简单的编辑

    是看一看基本的移动光标命令的时候了。训练训练你的手指,让他们以后自动的执行你所想的命令吧。
    最重要的移动命令

    让我们来看看有多少影响光标移动的命令。
    hh–光标左移

    首先,按 5 下 h 让光标左移动 5 个 (如果你看到 h 跑到屏幕上了的话,一定是你忘记了按 Esc )。光标现在应该在 “plans” 中的 “p” 下面 (看下面的例子):

    If wise, a commander is able to recognize changing circumstances and toact expediently. If sincere, his men will have no doubt of the certainty ofrewards and punishments. If humane, he loves mankind, sympathizes with others,and appreciates their industry and toil. If courageous, he gains victory byseizing opportunity without hesitation. If strict, his troops are disciplinedbecause they are in awe of him and are afraid of punishment. Shen Pao-hsu … said: ‘If a general is not courageous he will be unableto conquer doubts or to create great plans.’~~~~~~~~~~~~~~~

    kk–光标上移

    现在我们来按 5 次 k 让光标上移 5 行。也许你该认为应该有快捷方式了。好,现在就有个简单的方法:在你要采取的 行动前加上数字。按下 5k 你可以和按 5 下 k 有相同的结 果了。光标现在该在 “he” 的”e”下了。

    If wise, a commander is able to recognize changing circumstances and toact expediently. If sincere, his men will have no doubt of the certainty ofrewards and punishments. If humane, he loves mankind, sympathizes with others,and appreciates their industry and toil. If courageous, he gains victory byseizing opportunity without hesitation. If strict, his troops are disciplinedbecause they are in awe of him and are afraid of punishment. Shen Pao-hsu … said: ‘If a general is not courageous he will be unableto conquer doubts or to create great plans.’~~~~~~~~~~~~~~~~

    在使用这些功能的时候有些限制的。例如使用 h 或 l 移动光标超过了一行文字的头或尾,光标将停留在头或尾部,喇叭鸣叫提醒 你。

    还有其他的类似 h 和 k 的吗?看一看表3.2。最好的熟悉他们 的的方法是多用他们。
    表 3.2. 常见的方向键

    命令 移动
    h 左一个字符
    j 下一行
    k 上一行
    l 右一个字符
    w, W 前一个单词 (W 忽略标点)
    b, B 后一个单词 (B 忽略标点)
    $ 到行尾
    ^ 到行首第一个非空字符
    0 行首
    G 到缓冲首
    nG 到第 n 行

    大小写的命令是有一些区别的。小写字母一般以标点区分 “words.”,而大写则忽略他们。
    最重要的编辑程序

    让我们看看最简单也是最常用的编辑过程:

    修改 没有人不犯错误。所以迟早你会碰到修改你输入的文本的时候。实际上花在字处理上的大多数时间是修改而不是输入新的东西。因此,你要知道如何方便地修改就很重要。

    x–删除一个字符 删除文字的最简单的方式是用 x。这个命令的结果是光标所处 的字符的消失,后面的文字左移动。如果你删除的字符是一行最后的一个字符, 那么光标将向左移动一个,这样光标就不会停留在不存在的字符的下面了。假如 没有任何文字了,喇叭就叫。

    d–删除对象 这个命令的右边还要有一定的文字对象。文字对象就是一块文字。他右边接的就是在控制光标移动的那些字符。例如 w 表示向前一个单词,那么 dw 将删除下一个单词。5w 表示前进 5 个单词,那么 d5w 将删除他们。

    dd–删除一行 最常用的 d 系列命令之一。和前面一样, 5dd 将删除 5 行

    D–整个删除 大写形式的 D 用来删除从光标到行尾。和 d$ 一样效果。

    u–恢复 要后悔吗?他不仅仅撤消删除,还撤消你所有的编辑工作。

    .–重复 重复编辑工作。


    展开全文
  • linux vi命令详解

    2014-10-17 20:35:18
    刚开始学着用linux,对vi命令不是很熟,在网上转接了一篇。 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 令。由于 对Unix...

    刚开始学着用linux,对vi命令不是很熟,在网上转接了一篇。

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 令。由于 对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编 辑器,学会它后,您将在Linux的世界里畅行无阻。

    1、vi的基本概念 
      基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
        1) 命令行模式command mode)
      控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
        2) 插入模式(Insert mode)
      只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
        3) 底行模式(last line mode)
      将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
     
        不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
    2、vi的基本操作 
    a) 进入vi
        在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
       $ vi myfile 
    不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到 「插入模式(Insert mode)」再说吧!
     
    b) 切换至插入模式(Insert mode)编辑文件
      在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
     
    c) Insert 的切换
      您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。
     
    d) 退出vi及保存文件
      在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
    : w filename (输入 「w filename」将文章以指定的文件名filename保存)
    : wq (输入「wq」,存盘并退出vi)
    : q! (输入q!, 不存盘强制退出vi)

    3、命令行模式(command mode)功能键 
    1). 插入模式
           按「i」切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件;
      按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
      按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
     
    2). 从插入模式切换为命令行模式
          按「ESC」键。
     
    3). 移动光标
      vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
      按「ctrl」+「b」:屏幕往"后"移动一页。
      按「ctrl」+「f」:屏幕往"前"移动一页。
      按「ctrl」+「u」:屏幕往"后"移动半页。
      按「ctrl」+「d」:屏幕往"前"移动半页。
      按数字「0」:移到文章的开头。
      按「G」:移动到文章的最后。
      按「$」:移动到光标所在行的"行尾"。
      按「^」:移动到光标所在行的"行首"
      按「w」:光标跳到下个字的开头
      按「e」:光标跳到下个字的字尾
      按「b」:光标回到上个字的开头
      按「#l」:光标移到该行的第#个位置,如:5l,56l。
     
    4). 删除文字
      「x」:每按一次,删除光标所在位置的"后面"一个字符。
      「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。
      「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。
      「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。
      「dd」:删除光标所在行。
      「#dd」:从光标所在行开始删除#行
     
    5). 复制
      「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
      「#yw」:复制#个字到缓冲区
      「yy」:复制光标所在行到缓冲区。
      「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。
      「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。
     
    6). 替换
      「r」:替换光标所在处的字符。
      「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
     
    7). 回复上一次操作
      「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。
     
    8). 更改
      「cw」:更改光标所在处的字到字尾处
      「c#w」:例如,「c3w」表示更改3个字
     
    9). 跳至指定的行
      「ctrl」+「g」列出光标所在行的行号。
      「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

    4、Last line mode下命令简介 
    在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。

    A) 列出行号

     「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

    B) 跳到文件中的某一行

     「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

    C) 查找字符

     「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

     「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

    D) 保存文件

     「w」:在冒号输入字母「w」就可以将文件保存起来。

    E) 离开vi

     「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。

     「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

    5、vi命令列表 
    1、下表列出命令模式下的一些键的功能:


    左移光标一个字符


    右移光标一个字符


    光标上移一行


    光标下移一行


    光标移动至行首


    数字"0",光标移至文章的开头


    光标移至文章的最后


    光标移动至行尾

    Ctrl+f 
    向前翻屏

    Ctrl+b 
    向后翻屏

    Ctrl+d 
    向前翻半屏

    Ctrl+u 
    向后翻半屏


    在光标位置前插入字符


    在光标所在位置的后一个字符开始增加


    插入新的一行,从行首开始输入

    ESC 
    从输入状态退至命令状态


    删除光标后面的字符

    #x 
    删除光标后的#个字符


    (大写X),删除光标前面的字符

    #X 
    删除光标前面的#个字符

    dd 
    删除光标所在的行

    #dd 
    删除从光标所在行数的#行

    yw 
    复制光标所在位置的一个字

    #yw 
    复制光标所在位置的#个字

    yy 
    复制光标所在位置的一行

    #yy 
    复制从光标所在行数的#行


    粘贴


    取消操作

    cw 
    更改光标所在位置的一个字

    #cw 
    更改光标所在位置的#个字


    2、下表列出行命令模式下的一些指令 
    w filename 
    储存正在编辑的文件为filename

    wq filename 
    储存正在编辑的文件为filename,并退出vi

    q! 
    放弃所有修改,退出vi

    set nu 
    显示行号

    /或? 
    查找,在/后输入要查找的内容


    与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。


    对于第一次用vi,有几点注意要提醒一下: 
    1、 用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。 
    2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。 
    3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)


    展开全文
  • Linux vi命令详解

    2013-08-08 17:06:41
    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 令。由于 对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在...

             vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 令。由于 对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编 辑器,学会它后,您将在Linux的世界里畅行无阻。


             1、vi的基本概念 
      基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
        1) 命令行模式command mode)
      控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
        2) 插入模式(Insert mode)
      只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
        3) 底行模式(last line mode)
      将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
     
        不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。


             2、vi的基本操作 
             a) 进入vi       $ vi myfile
             在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到 「插入模式(Insert mode)」再说吧!
     
             b) 切换至插入模式(Insert mode)编辑文件
             在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
     
             c) Insert 的切换
             您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。
     
             d) 退出vi及保存文件
             在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
             : w filename (输入 「w filename」将文章以指定的文件名filename保存)
             : wq (输入「wq」,存盘并退出vi)
             : q! (输入q!, 不存盘强制退出vi)


             3、命令行模式(command mode)功能键 
             1). 插入模式
             按「i」切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件;
             按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
       按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
     
             2). 从插入模式切换为命令行模式
             按「ESC」键。
     
             3). 移动光标
      vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
      按「ctrl」+「b」:屏幕往"后"移动一页。
      按「ctrl」+「f」:屏幕往"前"移动一页。
      按「ctrl」+「u」:屏幕往"后"移动半页。
      按「ctrl」+「d」:屏幕往"前"移动半页。
      按数字「0」:移到文章的开头。
      按「G」:移动到文章的最后。
      按「$」:移动到光标所在行的"行尾"。
      按「^」:移动到光标所在行的"行首"
      按「w」:光标跳到下个字的开头
      按「e」:光标跳到下个字的字尾
      按「b」:光标回到上个字的开头
      按「#l」:光标移到该行的第#个位置,如:5l,56l。
     
             4). 删除文字
      「x」:每按一次,删除光标所在位置的"后面"一个字符。
      「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。
      「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。
      「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。
      「dd」:删除光标所在行。
      「#dd」:从光标所在行开始删除#行
     
             5). 复制
      「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
      「#yw」:复制#个字到缓冲区
      「yy」:复制光标所在行到缓冲区。
      「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。
      「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。
     
             6). 替换
      「r」:替换光标所在处的字符。
      「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
     
             7). 回复上一次操作
      「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。
     
             8). 更改
      「cw」:更改光标所在处的字到字尾处
      「c#w」:例如,「c3w」表示更改3个字
     
             9). 跳至指定的行
      「ctrl」+「g」列出光标所在行的行号。
      「#G」:例如,「15G」,表示移动光标至文章的第15行行首。


             4、Last line mode下命令简介 
             在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。


             A) 列出行号
              set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

             B) 跳到文件中的某一行
              #」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

             C) 查找字符
              /关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
             「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。


             D) 保存文件
             「w」:在冒号输入字母「w」就可以将文件保存起来。


             E) 离开vi
             「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。
             「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

             5、vi命令列表 


             1、下表列出命令模式下的一些键的功能:


                      左移光标一个字符
                      右移光标一个字符
                      光标上移一行
                      光标下移一行
                      光标移动至行首
                      数字"0",光标移至文章的开头
                      光标移至文章的最后
                      光标移动至行尾
             Ctrl+f          向前翻屏
             Ctrl+b          向后翻屏
             Ctrl+d          向前翻半屏
             Ctrl+u          向后翻半屏
                          在光标位置前插入字符
                         在光标所在位置的后一个字符开始增加
                         插入新的一行,从行首开始输入


             ESC      从输入状态退至命令状态


                         删除光标后面的字符
             #x           删除光标后的#个字符
                        (大写X),删除光标前面的字符
             #X          删除光标前面的#个字符
             dd          删除光标所在的行
             #dd        删除从光标所在行数的#行


             yw         复制光标所在位置的一个字
             #yw       复制光标所在位置的#个字
             yy          复制光标所在位置的一行
             #yy        复制从光标所在行数的#行


                        粘贴


                        取消操作


             cw         更改光标所在位置的一个字
             #cw       更改光标所在位置的#个字



             2、下表列出行命令模式下的一些指令 


             w filename          储存正在编辑的文件为filename
             wq filename        储存正在编辑的文件为filename,并退出vi
             q!                          放弃所有修改,退出vi
             set nu                  显示行号
             /或?                      查找,在/后输入要查找的内容
                                       与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。

             对于第一次用vi,有几点注意要提醒一下: 
             1、 用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。 
             2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。 
             3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)


    展开全文
  • Linux——vi命令详解

    万次阅读 多人点赞 2018-08-25 12:10:48
    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他...

     

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。

    1、vi的基本概念

      基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

        1) 命令行模式command mode)

      控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

        2) 插入模式(Insert mode)

      只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

        3) 底行模式(last line mode)

      将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

        不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。

    2、vi的基本操作

    a) 进入vi

        在系统提示符号输入vi及文件名称后,进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!

    b) 切换至插入模式(Insert mode)编辑文件

      在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

    c) Insert 的切换

      目前处于「插入模式(Insert mode)」,就只能一直输入文字,如果发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。

    d) 退出vi及保存文件

      在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:

    : w filename (输入 「w filename」将文章以指定的文件名filename保存)

    : wq (输入「wq」,存盘并退出vi)

    : q! (输入q!, 不存盘强制退出vi)

    3、命令行模式(command mode)功能键

    1). 插入模式

           按「i」切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件;

      按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;

      按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

    2). 从插入模式切换为命令行模式

          按「ESC」键。

    3). 移动光标

      vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。

      按「ctrl」+「b」:屏幕往"后"移动一页。

      按「ctrl」+「f」:屏幕往"前"移动一页。

      按「ctrl」+「u」:屏幕往"后"移动半页。

      按「ctrl」+「d」:屏幕往"前"移动半页。

      按数字「0」:移到文章的开头。

      按「G」:移动到文章的最后。

      按「$」:移动到光标所在行的"行尾"。

      按「^」:移动到光标所在行的"行首"

      按「w」:光标跳到下个字的开头

      按「e」:光标跳到下个字的字尾

      按「b」:光标回到上个字的开头

      按「#l」:光标移到该行的第#个位置,如:5l,56l。

    4). 删除文字

      「x」:每按一次,删除光标所在位置的"后面"一个字符。

      「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。

      「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。

      「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。

      「dd」:删除光标所在行。

      「#dd」:从光标所在行开始删除#行

    5). 复制

      「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

      「#yw」:复制#个字到缓冲区

      「yy」:复制光标所在行到缓冲区。

      「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。

      「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。

    6). 替换

      「r」:替换光标所在处的字符。

      「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

    7). 回复上一次操作

      「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。

    8). 更改

      「cw」:更改光标所在处的字到字尾处

      「c#w」:例如,「c3w」表示更改3个字

    9). 跳至指定的行

      「ctrl」+「g」列出光标所在行的行号。

      「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

    4、Last line mode下命令简介

      在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。

    A) 列出行号

     「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

    B) 跳到文件中的某一行

     「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

    C) 查找字符

     「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

     「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

    D) 保存文件

     「w」:在冒号输入字母「w」就可以将文件保存起来。

    E) 离开vi

     「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。

     「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

    5、vi命令列表

    1、下表列出命令模式下的一些键的功能:

    h

    左移光标一个字符

    l

    右移光标一个字符

    k

    光标上移一行

    j

    光标下移一行

    ^

    光标移动至行首

    0

    数字"0",光标移至文章的开头

    G

    光标移至文章的最后

    $

    光标移动至行尾

    Ctrl+f

    向前翻屏

    Ctrl+b

    向后翻屏

    Ctrl+d

    向前翻半屏

    Ctrl+u

    向后翻半屏

    i

    在光标位置前插入字符

    a

    在光标所在位置的后一个字符开始增加

    o

    插入新的一行,从行首开始输入

    ESC

    从输入状态退至命令状态

    x

    删除光标后面的字符

    #x

    删除光标后的#个字符

    X

    (大写X),删除光标前面的字符

    #X

    删除光标前面的#个字符

    dd

    删除光标所在的行

    #dd

    删除从光标所在行数的#行

    yw

    复制光标所在位置的一个字

    #yw

    复制光标所在位置的#个字

    yy

    复制光标所在位置的一行

    #yy

    复制从光标所在行数的#行

    p

    粘贴

    u

    取消操作

    cw

    更改光标所在位置的一个字

    #cw

    更改光标所在位置的#个字

    2、下表列出行命令模式下的一些指令

    w filename

    储存正在编辑的文件为filename

    wq filename

    储存正在编辑的文件为filename,并退出vi

    q!

    放弃所有修改,退出vi

    set nu

    显示行号

    /或?

    查找,在/后输入要查找的内容

    n

    与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。

    对于第一次用vi,有几点注意要提醒一下:

    1、用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

    2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。

    3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)

    在屏幕上移动

    Vi提供了三个关于光标在全屏幕上移动并且文件本身不发生滚动的命令。它们分别是H、M和L命令。

    H命令

    该命令将光标移至屏幕首行的行首(即左上角),也就是当前屏幕的第一行,而不是整个文件的第一行。利用此命令可以快速将光标移至屏幕顶部。若在H命令之前加上数字n,则将光标移至第n行的行首。

    M命令

    该命令将光标移至屏幕显示文件的中间行的行首。即如果当前屏幕已经充满,则移动到整个屏幕的中间行;如果并未充满,则移动到文本的那些行的中间行。利用此命令可以快速地将光标从屏幕的任意位置移至屏幕显示文件的中间行的行首。例如,在上面屏幕显示的情况下(不论光标在屏幕的何处),在命令模式下,输入命令M之后,光标都将移到add这一行的字母a上。

    同样值得一提的是,使用命令dM将会删除从光标当前所在行至屏幕显示文件的中间行的全部内容。

    L命令

    当文件显示内容超过一屏时,该命令将光标移至屏幕上的最底行的行首;当文件显示内容不足一屏时,该命令将光标移至文件的最后一行的行首。可见,利用此命令可以快速准确地将光标移至屏幕底部或文件的最后一行。若在L命令之前加上数字n,则将光标移至从屏幕底部算起第n行的行首。例如,在上面屏幕显示的情况下(不论光标在屏幕的何处),在命令模式下,输入命令3L之后,光标都将移到x++这一行的字母x上。

    同样值得一提的是,使用命令dL将会删除从光标当前行至屏幕底行的全部内容。

    按字移动光标

    首先介绍一下Vi中“字”的概念。在Vi中“字”有两种含义。一种是广义的字,它可以是两个空格之间的任何内容。另一种字是狭义上的字,在此种意义之下,英文单词、标点符号和非字母字符(如!、@、#、$、%、^、&、*、(、)、-、+、{、}、[、]、~、|、"、<、>、/等)均被当成是一个字。因此,上面那一行中就包括{、int、k、;这4个字。

    Vi中使用大写命令一般就是指将字作为广义来对待,使用小写命令就是作为狭义对待。

    搞清楚Vi中字的含义后,我们就可以介绍按字移动光标的命令了。

    Vi 一共提供了三组关于按字移动光标的命令,分别是:

    w和W命令

    将光标右移至下一个字的字首;

    e和E命令

    如果光标起始位置处于字内(即非字尾处),则该命令将把光标移到本字字尾;如果光标起始位置处于字尾,则该命令将把光标移动到下一个字的字尾。

    b和B

    如果光标处于所在字内(即非字首),则该命令将把光标移至本字字首;如果光标处于所在字字首,则该命令将把光标移到上一个字的字首。

    按句移动光标

    在Vi中,一个句子被定义为是以逗号(,)、句号(.)、问号(?)和感叹号(!)结尾,且其后面跟着至少两个以上(含两个)空格或一个换行符的字符序列。

    Vi提供了关于按句移动光标的两个命令,分别为:

    1. ( 命令

    将光标移至上一个句子的开头。

    2. ) 命令

    该命令将光标移至下一个句子的开头。

    按段移动光标

    在Vi中,一个段被定义为是以一个空白行开始和结束的片段。Vi提供了关于按段移动光标的两个命令,分别为:

    1. { 命令

    该命令将光标向前移至上一个段的开头;

    2. } 命令

    该命令将光标向后移至下一个段的开头。

    屏幕滚动

    屏幕命令是以屏幕为单位移动光标的,常用于文件的滚屏和分页。需要注意的是,屏幕命令不是光标移动命令,不能作为文本限定符用于删除命令中。

    在命令模式下和文本输入模式下均可以使用屏幕滚动命令。

    1. 滚屏命令

    关于滚屏命令有两个:

    · < Ctrl+u > 将屏幕向前(文件头方向)翻滚半屏;

    · < Ctrl+d > 将屏幕向后(文件尾方向)翻滚半屏。

    可以在这两个命令之前加上一个数字n,则屏幕向前或向后翻滚n行。并且这个值被系统记住,以后再用< Ctrl+u >和< Ctrl+d >命令滚屏时,还滚相应的行数。

    2. 分页命令

    关于分页命令也有两个:

    · < Ctrl+f > 将屏幕向文件尾方向翻滚一整屏(即一页);

    · < Ctrl+b > 将屏幕向文件首方向翻滚一整屏(即一页)。

    同样也可以在这两个命令之前加上一个数字n,则屏幕向前或向后移动n页。

    3. 状态命令< Ctrl+G >

    命令显示在vi状态行上的vi状态信息,包括正在编辑的文件名、是否修改过、当前行号、文件的行数以及光标之前的行占整个文件的百分比。

    4. 屏幕调零命令

    Vi 提供了三个有关屏幕调零的命令。它们的格式分别为:

    · [行号] z [行数] <回车>

    · [行号] z [行数] .

    · [行号] z [行数] _

    若省略了行号和行数,这三个命令分别为将光标所在的当前行作为屏幕的首行、中间行和最末行重新显示;若给出行号,那么该行号所对应的行就作为当前行显示在屏幕的首行、中间行和最末行;若给出行数,则它规定了在屏幕上显示的行数。

    [例13]

    8z16<回车> :将文件中的第8行作为屏幕显示的首行,并一共显示16行。

    15z . :将文件中的第15行作为屏幕显示的中间行,显示行数为整屏。

    15z 5_ :将文件中的第15行作为屏幕显示的最末行,显示行数为5行。

    文本插入操作

    在命令模式下用户输入的任何字符都被Vi当作命令加以解释执行,如果用户要将输入的字符当作是文本内容时,则首先应将Vi的工作模式从命令模式切换到文本输入模式。切换的方式是使用下面的命令。

    插入(Insert)命令

    Vi提供了两个插入命令:i和 I。

    i命令

    插入文本从光标所在位置前开始,并且插入过程中可以使用键删除错误的输入。此时Vi处于插入状态,屏幕最下行显示“--INSERT--”(插入)字样。

    I命令

    该命令是将光标移到当前行的行首,然后在其前插入文本。

    附加(append)命令

    Vi提供了两个附加插入命令:a和A。

    a命令

    该命令用于在光标当前所在位置之后追加新文本。新输入的文本放在光标之后,在光标后的原文本将相应地向后移动。光标可在一行的任何位置。

    A命令

    该命令与a命令不同的是,A命令将把光标挪到所在行的行尾,从那里开始插入新文本。当输入A命令后,光标自动移到该行的行尾。

    a和A命令是把文本插入到行尾的唯一方法。

    打开(open)命令

    不论是Insert命令也好,还是append命令也好,所插入的内容都是从当前行中的某个位置开始的。若我们希望在某行之前或某行之后插入一些新行,则应使用open命令。

    Vi提供了两个打开命令:o和O。

    o命令

    该命令将在光标所在行的下面新开一行,并将光标置于该行的行首,等待输入文本。要注意,当使用删除字符时只能删除从插入模式开始的位置以后的字符,对于以前的字符不起作用。而且还可以在文本输入方式下输入一些控制字符,例如,Ctrl+l即是插入分页符,显示为^L。

    O命令

    和o命令相反,O命令是在光标所在行的上面插入一行,并将光标置于该行的行首,等待输入文本。

    11.3.4 文本修改

    在命令模式下可以使用Vi提供的各种有关命令对文本进行修改,包括对文本内容的删除、复制、取代和替换等。

    文本删除

    在编辑文本时,经常需要删除一些不需要的文本,我们可以用键将输错或不需要的文本删除,但此时有一个限制就是当删到行头之后,再想删上面那行的内容是不可能的。

    在命令模式下,Vi提供了许多删除命令。这些命令大多是以d开头的。常用的有:

    1. 删除单个字符

    x: 删除光标处的字符。若在x之前加上一个数字n,则删除从光标所在位置开始向右的n个字符。

    X:删除光标前面的那个字符。若在X之前加上一个数字n,则删除从光标前面那个字符开始向左的n个字符。

    显然这两个命令是删除少量字符的快捷方法。

    2. 删除多个字符

    dd:删除光标所在的整行。在dd前可加上一个数字n,表示删除当前行及其后n-1行的内容。

    D或d$:两命令功能一样,都是删除从光标所在处开始到行尾的内容。

    d0:删除从光标前一个字符开始到行首的内容。

    dw:删除一个单词。若光标处在某个词的中间,则从光标所在位置开始删至词尾。同dd命令一样,可在dw之前加一个数字n,表示删除n个指定的单词。

    如果用户不小心进行了误删除操作,也不要紧,Vi提供了恢复误操作的命令,并且可以将恢复的内容移动,放在文本的任何地方。恢复命令用² np,其中n为寄存器号。这是因为Vi内部有9个用于维护删除操作的寄存器,分别用数字1,2,¼ ,9表示,它们分别保存以往用dd命令删除的内容。这些寄存器组成一个队列,例如最近一次使用dd命令删除的内容被放到寄存器1中;当下次再使用dd命令删除文本内容时,Vi将把寄存器1的内容转存到寄存器2中,而寄存器1中又将是最近一次dd命令删除的内容。以此类推,Vi可以保存有最近九次用dd命令删除的内容,而前面的用dd命令删除的内容则被抛弃。

      在最末行模式下,也可以对文件内容进行删除,但它只能删除整行,一次可将某个指定范围内(起始行号,终止行号)的所有行全部删除。需要注意的是,用此种方法进行删除时,Vi并不把所删内容放入寄存器中,因而当发生误删除操作时,不能用² np命令恢复,只能用u命令进行有限的恢复。

    最后提一下,如何在文本输入方式时将所输入文本删除。用户使用组合键即可,此时光标将返回插入开始的位置,并且Vi仍处于文本输入方式。

    取消上一命令(Undo)

    取消上一命令(Undo),也称复原命令,是非常有用的命令,它可以取消前一次的误操作或不合适的操作对文件造成的影响,使之回复到这种误操作或不合适操作被执行之前的状态。

    取消上一命令有两种形式,在命令模式下键入字符u和U。它们的功能都是取消刚才输入的命令,恢复到原来的情况。小写u和大写U在具体细节上有所不同,二者的区别在于,大写U命令的功能是恢复到误操作命令前的情况,即如果插入命令后使用U命令,就删除刚刚插入的内容;如果删除命令后使用U命令,就相当于在光标处又插入刚刚删除的内容。这里把所有修改文本的命令都视为插入命令。也就是说,U命令只能取消前一步操作,如果用U命令撤消了前一步操作,当再按U键时,并不是撤消再前一步的操作,而是撤消了刚才U命令执行的操作,也就是又恢复到第一次使用U命令之前的状态,结果是什么都没做。而小写u命令的功能是把当前行恢复成被编辑前的状态,而不管此行被编辑了多少次。

    注意:对于取消命令仍可以再使用取消命令。这时会产生一种“负负得正”的效果,文件状态将恢复到第一次执行取消命令之前的状态,如同没做任何操作一般。例如在上例中,再使用一次命令U,屏幕将显示的内容仍为插入后的内容。

    重复命令(Redo)

    重复命令也是一个非常常用的命令。在文本编辑中经常会碰到需要机械地重复一些操作,这时就需要用到重复命令。它可以让用户方便地再执行一次前面刚完成的某个复杂的命令。

    重复命令只能在命令模式下工作,在该模式下按“.”键既可。执行一个重复命令时,其结果是依赖于光标当前位置的。

    文本内容的修改

    文本内容的修改是指在编辑过程中,可以对文本中的某些字符,某些行进行修改,即用新输入的文本代替需要修改的老文本,它等于先用删除命令删除需要修改的内容,然后再利用插入命令插入新的内容。所以在使用修改命令后,vi进入到文本输入模式下,当输入完新的内容后,一定要再按回到命令模式,否则Vi会一直认为是在文本输入模式下,此时输入的任何内容都被认为是修改的新内容。

    Vi提供了三种修改命令,分别是c、C和cc。它们修改文本的范围是由光标位置和光标移动命令二者限定的。下面分别介绍这三种修改命令。

    c命令

    c后紧跟光标移动命令,限定修改内容的范围是从光标当前位置开始到指定的位置为止。命令c中修改文本的范围是由光标位置和光标移动命令二者限定的。

    C、c$命令

    C 、c$命令可以修改从光标当前位置开始到该行末尾或从光标当前位置开始到某行末尾范围内的内容。

     

    当在命令C之前加上数字n时,表示可以修改指定行数的内容。例如,3C命令就表示把光标所在位置的字符之后(注意不是整行)直到下面两个整行的内容删除,由随后输入的内容代替。

    cc命令

    cc命令的功能和C相同,只是修改的范围和C不同,它是修改从光标所在行的起始位(不管光标处于该行的何列)到该行末尾或指定某行末尾范围内的内容。光标所在行的全部内容都由新输入的内容所代替。

    同命令C一样,也可以在cc之前加上数字n,表示要从光标当前行算起一共修改n行的内容。例如,5cc表示先删除光标所在行及其下面的4行,然后输入要修改的内容。

    文本的替换

    文本的替换即是用新输入的文本代替原已有的文本。它同文本修改一样,也是先执行删除操作,再执行插入操作。

    Vi提供的替换的命令有取代命令、替换命令和字替换命令。

    1. 取代命令 :r和R

    r:用随后输入的一个字符代替当前光标处的那个字符。

    R:用随后输入的文本取代从当前光标处及其后面的若干字符,每输入一个字符就取代原有的一个字符,直到按< Esc >键结束这次取代。若新输入的字符数超过原有对应字符数,则多出部分就附加在后面。

    若在命令R之前加上一个数字,例如5R,则表示新输入的文本重复出现5次,但只取代一个被输入文本所覆盖的字符序列,当前行中未被覆盖的内容仍保留下来,只是位置相应右移。

    值得一提的是,利用R取代文本内容时,新输入的文本可以占多行,取代时也只有光标所在行的对应字符被覆盖。

    可见新输入的6个字符(包括空格,但不包括< Esc >)取代原行中的6个字符。

    2. 替换命令:s和S

    s(小写):该命令表示用随后输入的文本替换当前光标所在的字符。

    如果只用一个新字符替换光标所在字符,则s命令与r命令功能类似,如sh与rh的作用都是将光标所在字符变为h。但二者也有区别,r命令仅完成置换,而s命令在完成置换同时,工作模式从命令方式转为文本输入方式。因此,s命令的一般使用方式是:s随后是要替换的正文,最后一定是, 结束文本输入模式,返回到命令模式。

    可以在s前面加一个数字n,则表示用s后输入的文本替换从光标所在字符开始及其后的n-1个字符(共n个字符)。

    S(大写):该命令表示用新打入的正文替换光标当前行(整行)(不管光标位于何列)。

    如果在S之前给出一个数字n,例如3,则表示有3行(包括光标当前行及其下面2行)要被S命令之后输入的正文所替换。

    3. 字替换 cw

    如果我们只希望将某个字的内容用其他文本串替换,则可用cw命令。cw所替换的是一个狭义的字。输入这个命令后,Vi将把光标处的那个字删除,然后用户可输入任何文本内容。输入完成之后按键,Vi即用所输入的内容替换原光标位置至相应字结尾的所有内容。

    文本行的合并

    Vi提供了将文本中的某些行进行合并的命令。该命令用J(大写字母)表示,其功能是把光标所在行与下面一行合并为一行。

    如果在J命令之前给出一个数字n,例如3,则表示把光标当前行及其后面的2行(共3行)合并为一行。

    文本行的移动

    在Vi中我们可以方便地将某个范围内的文本行左右移动或从一个地方移至另外一个地方。

    文本行的左右移动。

    文本行左右移动的命令有 >、<、>> 和 <<四个。

    (1)> 命令将限定正文行(屏幕的首行)向右移动,通常是8个空格,使用格式为:>光标移动命令。移动正文行的范围由光标所在行和随后打入的光标移动命令所限定。

    (2)< 命令将限定正文行向左移动。其使用方式与>命令相同,只是移动方向相反。例如,<6M,将光标当前行和屏幕显示中间行之间的各行都左移8个空格。

    (3)>> 命令将光标所在行右移8个空格。如果在>>命令之前给出一个数字n,例如4,则表示光标当前行及其下面的3行(共4行)都右移8个空格。

    (4)<< 命令将光标所在行左移8个空格。其使用与>>命令相同,只是移动方向相反。

    文本行的异行移动

    我们可以利用下面的步骤完成文本行从一个地方移至另外一个地方。

    将光标移至待移动文本的首行;

    按ndd命令。其中n为待移动的行数。此时Vi将把待移动的文本行从文件中删除,并将其放入到1号删除寄存器中;

    将光标移动到目的行处;

    按² 1p将待移动的文本行从删除寄存器中取出。

    此时待移动的文本行就出现在目的位置处了。

    上述方法虽然可以实现文本行的异行移动,但显然太烦琐。Vi还提供了另一种快捷的方法,就是在末行模式下使用命令m(Move命令)。使用方法为n m k,表示把第n行移至第k行的下方。

    现在想使第5行移至第4行位置处,可在末行模式下输入:

    :5 m 3

    在命令m之前,还可以指定一个行号范围(起始行号与终止行号),表示要把指定范围内的文本行移到指定位置。例如:

    :2,5 m 0

    表示把文件中的第二行至第五行的内容移至文件头(第零行之下,这个零行使一个虚行)。

    Vi中的行号

    Vi中的许多命令都要用到行号及行数等数值。若编辑的文件较大时,自己去数是非常不方便的。为此Vi提供了给文本加行号的功能。这些行号显示在屏幕的左边,而相应行的内容则显示在行号之后。

    使用的命令为:在末行方式下输入命令:

    :set number

    需要说明的是,这里加的行号只是显示给用户看的,它们并不是文件内容的一部分。

    在一个较大的文件中,用户可能需要了解光标当前行是哪一行,在文件中处于什么位置,可在命令模式下用组合键,此时Vi会在显示窗口的最后一行显示出相应信息。该命令可以在任何时候使用。

    在末行方式下,我们可以输入命令nu(单词number的缩写)来获得光标当前行的行号与该行内容。

    光标移动操作

    全屏幕文本编辑器中,光标的移动操作无疑是最经常使用的操作了。用户只有熟练地使用移动光标的这些命令,才能迅速准确地到达所期望的位置处进行编辑。

    Vi中的光标移动既可以在命令模式下,也可以在文本输入模式下,但操作的方法不尽相同。

    在文本输入模式下,可直接使用键盘上的四个方向键移动光标。

    在命令模式下,有很多移动光标的方法。不但可以使用四个方向键来移动光标,还可以用h、j、k、l这四个键代替四个方向键来移动光标,这样可以避免由于不同机器上的不同键盘定义所带来的矛盾,而且使用熟练后可以手不离开字母键盘位置就能完成所有操作,从而提高工作效率。另外还可以用、、和四个键或组合键移动光标。且以上这三种键在实现功能上是等价的。除此之外,还有一些移动光标的命令。下面对它们的工作方式介绍如下:

    、® (均称为右向键)

    右向键的作用是将光标向右移动一个位置。若在向右键前先输入一个数字n,那么光标就向右移动n个位置。例如5l表示光标向右移动5个位置。需要注意的是,光标移动不能超过当前行的末尾。若给定的n超过光标当前位置至行尾的字符个数,如果用右向键,光标只能移到行尾;如果用,光标移到下面一行或几行的适当位置。

    h、、¬ (向左键)

    执行一次向左键,光标向左移动一个位置。同向右键一样,也可以在向左键的前面输入一个数字n,那么光标就向左移动n个位置。需要注意的是,如果用左向键,光标左移不能超出该行的开头;如果用,光标移到上面一行或几行的适当位置。

    j、、¯ (向下键)

    执行一次向下键光标向下移动一个位置(即一行),但光标所在的列不变。当这些命令前面加上数字n,则光标下移n行。

    Vi除了可以用向下键将光标下移外,还可以用键和“+”键将光标下移一行或n行(不包括本行在内),但此时光标下移之后将位于该行的第一个字符处。例如:

    3j 光标下移3行,且光标所在列的位置不变。

    3+或3 光标下移3行,且光标位于该行的行首。

    k、、­ (向上键)

    执行一次向上键光标向上移动一个位置(即一行),但光标所在的列不变。同样在这些命令前面加上数字n,则光标上移n行。

    若希望光标上移之后,光标位于该行的行首,则可以使用命令“- ”。

    L (移至行首)

    L 命令是将光标移到当前行的开头,即将光标移至当前行的第一个非空白处(非制表符或非空格符)。

    $(移至行尾)

    该命令将光标移到当前行的行尾,停在最后一个字符上。若在$命令之前加上一个数字n,则光标下移n-1行并到达行尾。

    [行号] G(移至指定行)

    该命令将光标移至指定行号所指定的行的行首。这种移动称为绝对定位移动。

    光标移到了第6行的行首。

    若省略行号,则光标移至该文件的最后一行的行首,即无论该文件有多少屏,都跳至最后一行

    展开全文
  • 刚开始学着用linux,对vi命令不是很熟,在网上转接了一篇。 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 令。由于 对Unix及...
  • unix vi命令详解
  • vi编辑在linux系统中经常用到,但是vi命令包含了很多内容,下面由学习啦小编为大家整理了linux下vi的常用命令,希望对大家有帮助!linux vi常用命令大全一.说明以下的例子中 xxx 表示在命令模式下输入 xxx 并回车以下...
  • LinuxVi命令详解.pdf

    2021-06-23 18:10:05
    LinuxVi命令详解.pdf
  • vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。...1、vi的基本概念基本上vi可以分为三种状态,分别是命令模式(...
  • linuxvi命令详解

    2014-05-30 10:05:10
    针对于linux操作系统下的,文本查看编辑vi命令详解~
  • linux vi常用命令详解

    2016-08-11 10:22:22
    原文见链接linux vi常用命令详解 原文见链接常用vi编辑器命令行 原文见链接vi中常用命令  原文见链接linuxvi命令大全
  • LinuxVI命令详解

    2010-12-21 10:00:30
    LinuxVI命令详解 vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗..............
  • linux/mac vi命令详解

    万次阅读 2014-04-01 09:15:10
    vi命令详解 刚开始学着用linux,对vi命令不是很熟,在网上转接了一篇。 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小...
  • LinuxVi命令详解

    千次阅读 2019-03-05 00:37:45
    转 Unix Vi 命令详解 https://blog.csdn.net/tianlesoftware/article/details/5461363 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + ...
  • linux_vi命令详解-屏幕文本编辑器Vi
  • Linuxvi命令详解

    万次阅读 多人点赞 2018-01-21 10:31:37
    最近vi用的多,很多技巧不...由于 对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编 辑器,学会它后,您将在Linux的世界里畅行无阻。
  • 详解linux vi命令用法

    2013-02-11 16:32:46
    详解linux vi命令用法
  • Linux vi命令用法详解

    2016-01-08 10:23:08
    一般模式:vi命令打开一个档案就是一般模式。一般模式下可以进行删除、复制、粘贴等动作。 编辑模式:一般模式下按下I、o、A、R(不分大小写)任意一个键后进入编辑模式。这时候。画面的下面会出现insert字样。此时...
  • linux vi命令详解 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里介绍一下它的用法和一部分指令。 由于 对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您...
  • LinuxVi命令详解

    千次阅读 2012-06-28 21:18:00
    补充一点:在vi中使用命令的方法是:冒号+命令+回车,如:q 回车代表退出。 ========================================================== 这里有一本0分下载关于Vi详细介绍的书:...
  • linux系统vi命令详解

    2013-11-25 06:53:08
    进入vi命令  vi filename :打开或新建文件,并将光标置于第一行首  vi +n filename :打开文件,并将光标置于第n行首  vi + filename :打开文件,并将光标置于最后一行首  vi +/pattern filename:打开...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,547
精华内容 9,018
热门标签
关键字:

linuxvi命令详解

linux 订阅