日期:2014-05-16  浏览次数:20724 次

Linux vi 保存的相关指令
          当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一。  
   
    在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出,   返回到shell。    
   
    在末行模式下,输入命令    
   
    :w  
   
    Vi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,可以再给编辑文件起一个新的文件名。  
   
    [例6]    
   
    :w   newfile  
   
    此时Vi将把当前文件的内容保存到指定的newfile中,而原有文件保持不变。若newfile是一个已存在的文件,则Vi在显示窗口的状态行给出提示信息:  
   
    File   exists   (use   !   to   override)  
   
    此时,若用户真的希望用文件的当前内容替换newfile中原有内容,可使用命令  
   
    :w!   newfile  
   
    否则可选择另外的文件名来保存当前文件。  
   
    在末行模式下,输入命令    
   
    :q  
   
    系统退出Vi返回到shell。若在用此命令退出Vi时,编辑文件没有被保存,则Vi在显示窗口的最末行显示如下信息:  
   
    No   write   since   last   change   (use   !   to   overrides)  
   
    提示用户该文件被修改后没有保存,然后Vi并不退出,继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出Vi时,可使用命令  
   
    :q!  
   
    Vi放弃所作修改而直接退到shell下。  
   
    在末行模式下,输入命令    
   
    :wq  
   
    Vi将先保存文件,然后退出Vi返回到shell。  
   
    在末行模式下,输入命令    
   
    :x  
   
    该命令的功能同命令模式下的ZZ命令功能相同。


Vi 输入模式

要如何输入资料呢?有好几个指令可以进入输入模式:

新增 (append)
a 从游标所在位置後面开始新增资料,游标後的资料随新增资料向後移动。
A 从游标所在列最後面的地方开始新增资料。
插入 (insert)
i 从游标所在位置前面开始插入资料,游标後的资料随新增资料向後移动。
I 从游标所在列的第一个非空白字元前面开始插入资料。

开始 (open)
o 在游标所在列下新增一列并进入输入模式。
O 在游标所在列上方新增一列并进入输入模式。

    也许文字叙述看起来有点繁杂,但是只要实际操作一下马上可以了解这些操作方式。实务很重要,尤其是电脑方面的东西随时可以尝试及验证结果。极力建议实际去使用它而不要只是猛K文件,才有事半功倍的效用。(注:此段为废话。)
----------------------------------------
Vi 基本编辑
     配合一般键盘上的功能键,像是方向键、[Insert]、[Delete]等等,现在你应该已经可以利用vi 来处理文字资料了。当然vi还提供其他许许多多功能让文字的处理更形方便,有兴趣的看倌请继续。

    在继续下去之前先来点BCC吧。电脑有许多厂牌,不同的硬体及作业系统。PC也不是仅仅只有IBM PC及其相容品而已。事实上,包括键盘,终端机等等往往都有不同的规格。这代表什麽?

     在文书编辑软体上会遇这样的问题,某些电脑的键盘上没有特定的几个功能键!那麽不就有某些功能不能用了?这个问题在Unix系统上也一样,几乎各大电脑厂商都有自己的Unix系统,而vi的操作方法也会随之有点出入。我们固然可以用PC的键盘来说明vi的操作,但是还是得提一下这个问题。

删除与修改

      何谓编辑?在这里我们认为是文字的新增修改以及删除,甚至包括文字区块的搬移、复制等等。这里先介绍vi的如何做删除与修改。(注意:在vi的原始观念里,输入跟编辑是两码子事。编辑是在指令模式下操作的,先利用指令移动游标来定位要进行编辑的地方,然後才下指令做编辑。)

x 删除游标所在字元。

dd 删除游标所在的列。

r 修改游标所在字元,r 後接著要修正的字元。

R 进入取代状态,新增资料会覆盖原先资料,直到按[ESC]回到指令模式下为止。

s 删除游标所在字元,并进入输入模式。

S 删除游标所在的列,并进入输入模式。

    其实呢,在PC上根本没有这麽麻烦!输入跟编辑都可以在输入模式下完成。例如要删除字元,直接按[Delete]不就得了。而插入状态与取代状态可以直接用 [Insert]切换,犯不著用什麽指令模式的编辑指令。不过就如前面所提到的,这些指令几乎是每台终端机都能用,而不是仅仅在PC上。

    在指令模式下移动游标的基本指令是h,j,k,l 。想来各位现在也应该能猜到只要直接用PC的方向键就可以了,而且无论在指令模式或输入模式下都可以。多容易不是。

    当然PC键盘也有不足之处。有个很好用的指令u可以恢复被删除的资料,