VI 编辑器

 

Vi编辑器有三种模式:命令模式、编辑模式和底线模式

三种模式的切换方式如图 :

                                   VI 编辑器

 

1、vi 文件名,打开文件(文件不存在则创建),进入命令模式,命令模式不能编辑文件

2、按 i/I/a/A/o/O中的一个进入编辑模式(屏幕下方出现 --INSERT-- ,可以进行文件编写)

3、按ESC键从编辑模式退出到命令模式

4、在命令模式同时按 shift 和 :,进入底线模式(屏幕下方出现 :,可以输入命令)

 

 

从命令模式进入到编辑模式:
    
    i : 在当前光标前插入
    a : 当前光标后插入
    I : 在光标所在行首插入(第一个非空白字符前) 
    A : 在光标所在行末插入 
    o : 在光标所在行下面新增一行(并进入编辑模式) 
    O : 在光标所在行上方新增一行(并进入编辑模式)


命令模式下的操作:
    
    复制: 
        
        yy : 复制光标所在行
        nyy :复制光标所在行开始往下共n行
        y0 或者 y^ : 复制光标前一个字符到行首的所有字符
        y$ : 复制光标位置开始到行末的所有字符 
        y1G : 复制光标所在行开始到首行
        yG : 复制光标所在行开始到最后一行
    
    剪切或删除:
    
        dd : 删除或剪切当前行
        ndd : 删除或剪切当前行起共n行
        d0 : 删除或剪切光标前一个字符到行首
        d$ : 删除或剪切光标位置起到行末
        d1G : 删除或剪切光标行起到首行
        dG : 删除或剪切光标行起到末行
        x : 删除或剪切当前光标位置字符,向后,类似Delete
        X : 删除或剪切当前光标位置前一个字符,向前,类似Backspace
    
    粘贴:

        p : 在光标所在位置后面粘贴
        P (大写): 在光标所在位置前面粘贴
        np : 在光标所在位置后面粘贴n次
        nP : 在光标所在位置前面粘贴n次


    光标移动:
    
        gg或者1G  : 移动光标到首行
        G :移动光标到最后一行
        nG :移动光标到第n行
        n+: 光标下移n行 
        n-: 光标上移n行
        space: 光标右移一个字符 
        Backspace: 光标左移一个字符 
        Enter: 光标下移一行 
        上下左右 :k j h l

    撤销与恢复:
     
        u : 撤销上一个编辑操作 (简单理解为Undo)
        U : 行撤销,撤销所有在前一个编辑行上的操作(简单理解为Undos)
        ctrl + r : 恢复,即回退前一个命令 (简单理解为Redo)
        .  (是的,这个命令就是英文的  .  )   :  继续执行上一个动作( 简单理解为doAgain)
        
    屏幕翻页 :


        Ctrl+u : 向上翻半屏 
        Ctrl+f : 向下翻一屏 
        Ctrl+d : 向下翻半屏 
        Ctrl+b : 向上翻一屏
        
底线模式的操作:

    查找替换:
    
        /word : 搜索word(向下),按 n 继续查找
        ?word : 搜索word(向上),按 n 继续查找
        :s/Jobs/Cook/  :  替换当前行第一个 Jobs 为 Cook 
        :s/Jobs/Cook/g  :  替换当前行所有 Jobs 为 Cook 
        :s/Jobs/Cook/gc  :  替换当前行所有 Jobs 为 Cook ,替换前询问
        :1,$s/Jobs/Cook/  :  替换第1行开始到最后一行中每行第一个 Jobs 为 Cook 
        :n,ms/Jobs/Cook/  :  替换第 n行开始到第m行中每行的第一个 Jobs 为 Cook 
        :n,$s/Jobs/Cook/g  :  替换第n行开始到最后一行中每一行所有 Jobs 为 Cook 
   

  行号:
      :set nu  :  显示行号
      :set nonu  : 取消行号

  保存退出:


      :w  :  保存当前文件 
      :w!  :   强制保存
      :wq  : 保存退出
      :wq! :      强制保存退出
      :q  : 直接退出,如已修改会提示是否保存 
      :q!  :  不保存直接退出