`
youngerblue
  • 浏览: 44160 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

vi指令說明(完整版)

阅读更多
vi指令說明(完整版)

.vi 的操作模式
==============
        vi 提供兩種操作模式:輸入模式(insert mode)和指令模式(command mode)
        。當使用者進入 vi 後,即處在指令模式下,此刻鍵入之任何字元皆被視為
        指令。在此模式下可進行刪除、修改等動作。若要輸入資料,則需進入輸入
        模式。

.輸入模式
=========
        如何進入輸入模式
                a (append)      由游標之後加入資料。
                A               由該行之末加入資料。
                i (insert)      由游標之前加入資料。
                I               由該行之首加入資料。
                o (open)        新增一行於該行之下供輸入資料之用。
                O               新增一行於該行之上供輸入資料之用。

        如何離開輸入模式
                《ESC》 結束輸入模式。

.指令模式
=========
游標之移動
        h       向左移一個字元。
        j       向上移一個字元。
        k       向下移一個字元。
        l       向右移一個字元。
        0       移至該行之首
        $       移至該行之末。
        ^       移至該行的第一個字元處。
        H       移至視窗的第一列。
        M       移至視窗的中間那列。
        L       移至視窗的最後一列。
        G       移至該檔案的最後一列。
        +       移至下一列的第一個字元處。
        -       移至上一列的第一個字元處。
        (       移至該句之首。 (註一)
        )       移至該句之末。
        {       移至該段落之首。 (註二)
        }       移至該段落之末。
        nG      移至該檔案的第 n 列。
        n+      移至游標所在位置之後的第 n 列。
        n-      移至游標所在位置之前的第 n 列。
        <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標
                        所在行號佔總行號之百分比。

        註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。
        註二:段落(paragraph)在vi中是指以空白行隔開的文字。

.視窗的移動
===========
        <Ctrl><f>       視窗往下捲一頁。
        <Ctrl><b>       視窗往上捲一頁。
        <Ctrl><d>       視窗往下捲半頁。
        <Ctrl><u>       視窗往上捲半頁。
        <Ctrl><e>       視窗往下捲一行。
        <Ctrl><y>       視窗往上捲一行。

.刪除、複製及修改指令介紹 (此單元較少使用)
=========================
        d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:
        Operator + Scope = command
        (運算子)   (範圍)
        運算子:
        d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。
        y       將資料(字組、行列、句子或段落)複製到緩衝區。
        p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資
                料放置於游標所在位置之行列下。
        c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句
                子等之資料,並插入新鍵資料。

        範圍:
        e       由游標所在位置至該字串的最後一個字元。
        w       由游標所在位置至下一個字串的第一個字元。
        b       由游標所在位置至前一個字串的第一個字元。
        $       由游標所在位置至該行的最後一個字元。
        0       由游標所在位置至該行的第一個字元。
        )       由游標所在位置至下一個句子的第一個字元。
        (       由游標所在位置至該句子的第一個字元。
        {       由游標所在位置至該段落的最後一個字元。
        }       由游標所在位置至該段落的第一個字元。

        整行動作
        dd      刪除整行。
        D       以行為單位,刪除游標後之所有字元。
        cc      修改整行的內容。
        yy      yank整行,使游標所在該行複製到記憶體緩衝區。

.刪除與修改
===========
        x       刪除游標所在該字元。
        X       刪除游標所在之前一字元。
        dd      刪除游標所在該行。
        r       用接於此指令之後的字元取代(replace)游標所在字元。
                如: ra 將游標所在字元以 a 取代之。
        R       進入取代狀態,直到《ESC》為止。
        s       刪除游標所在之字元,並進入輸入模式直到《ESC》。
        S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。

.搬移與複製
==========
        利用 delete 及 put 指令可完成資料搬移之目的。
        利用 yank 及 put 指令可完成資料複製之目的。
        yank 和 delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令
        可將緩衝區內的資料複製到螢幕上。
        例:
        搬移一行        ‧在該行執行 dd
                        ‧游標移至目的地
                        ‧執行 p
        複製一行        ‧在該行執行 yy
                        ‧游標移至目的地
                        ‧執行 p

.指令重複
=========
        在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n
        次。
        例:
        刪除10行                ‧10dd
        複製10行                ‧10yy
                                ‧游標移至目的地
                                ‧p
        指標往下移10行  ‧10j

.取消前一動作(Undo)
===================
        即復原執行上一指令前的內容。

        u       恢復最後一個指令之前的結果。
        U       恢復游標該行之所有改變。

.搜尋
=====
        在vi中可搜尋某一字串,使游標移至該處。

        /字串           往游標之後尋找該字串。
        ?字串           往游標之前尋找該字串。
        n               往下繼續尋找下一個相同的字串。
        N               往上繼續尋找下一個相同的字串。

.資料的連接
===========
        J       句子的連接。將游標所在之下一行連接至游標該行的後面。

        若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式
        (可利用 a、i等指令)再按《Enter》即可。

.環境的設定
===========
        :set nu                設定資料的行號。
        :set nonu              取消行號設定。
        :set ai                自動內縮。
        :set noai              取消自動內縮。

        自動內縮(automatic indentation)
        在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自
        動內縮的功能,用下例解釋之:
        ‧vi test
        ‧(進入編輯視窗後)
          this is the test for auto indent
          《Tab》start indent           ← :set ai (設自動內縮)
          《Tab》data
          《Tab》data
          《Tab》data                   ← :set noai (取消自動內縮)
        the end of auto indent.
        ‧註:<Ctrl><d> 可刪除《Tab》字元。

.ex指令
=======
        讀寫資料
        :w                     將緩衝區的資料寫入磁碟中。
        :10,20w test   將第10行至第20行的資料寫入test檔案。
        :10,20w>>test  將第10行至第20行的資料加在test檔案之後。
        :r test                將test檔案的資料讀入編輯緩衝區的最後。

        刪除、複製及搬移
        :10,20d                刪除第10行至第20行的資料。
        :10d                   刪除第10行的資料。
        :%d                    刪除整個編輯緩衝區。
        :10,20co30             將第10行至第20行的資料複製至第30行之後。
        :10,20mo30             將第10行至第20行的資料搬移至第30行之後。

        字串搜尋與取代
        s(substitute)指令可搜尋某行列範圍。
        g(global)指令則可搜尋整個編輯緩衝區的資料。
        s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條
        件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。
        :1,$s/old/new/g                將檔案中所有的『old』改成『new』。
        :10,20s/^/   /         將第10行至第20行資料的最前面插入5個空白。
        :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。

.恢復編輯時被中斷的檔案
=======================
        在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
        被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前
        的檔案內容。
        %vi -r filename

.編輯多個檔案
=============
        vi亦提供同時編輯多個檔案的功能,方法如下:
        %vi file1 file2 ..

        當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後
        再利用 『:n』載入下一個檔案。

分享到:
评论
1 楼 liuxinglanyue 2010-12-30  
繁体字啊
收藏一篇这样的文章,操作linux编辑应该很快了。

相关推荐

    vi指令-完整版

    ### vi编辑器指令详解 #### 一、基本概念与模式切换 **vi编辑器**是Unix及类Unix操作系统上的一款非常强大的文本编辑器。它具备三种主要的工作模式:命令模式(Command Mode)、插入模式(Insert Mode)以及末行...

    Intel手册完整版三册全

    《Intel手册完整版三册全》是一套针对底层技术人员至关重要的参考资料,涵盖了Intel处理器的详细技术规格、指令集以及系统架构等内容。这套手册是理解、优化和开发基于Intel处理器的系统与软件的基础。 第一册...

    (LAMP)->2 之linux-VI-权限-管道-常用指令

    本主题主要关注Linux中的文本编辑器VI,文件权限管理,以及管道(Pipe)和常用指令的使用。下面我们将详细探讨这些知识点。 **1. VI编辑器** VI(Visual Editor)是Linux和类Unix系统中的一个强大文本编辑器。它...

    Unix vi编辑器完全使用手册.doc

    - 对于初学者,建议通过实践和查阅手册逐步熟悉Vi的各种命令,同时可以尝试使用增强版的Vim(Vi IMproved),它提供了更多的特性。 Vi编辑器虽然初看起来有些复杂,但随着使用次数的增加,你会发现它的强大和效率...

    linux_vi命令

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

    linux常用工具vi/vim的使用完整版

    为什么要学 vim linux 有大量的配置文件,所以 linux 的文本处理工具也是比较多的,常用的有 less vi head tail cat grep sed awk …. 。其中编辑一些配置文件,及查看日志时... 指令列模式 graph LR A[一般模式] --

    linux指令大全(完整)

    本资料"Linux指令大全(完整)"包含了一份详尽的Linux命令集合,对于深入理解和运用Linux系统至关重要。 Linux指令是通过命令行接口与操作系统交互的方式,它们提供了丰富的功能,从基本的文件管理到复杂的系统控制...

    linux指令大全(完整篇)

    Linux指令大全(完整篇)是Linux系统用户必备的参考资料,它涵盖了从基本操作到高级管理的所有命令,旨在帮助用户高效地在Linux环境中工作。本文将详细介绍这个资源中的关键知识点,并提供一些常用命令的解释和使用...

    详解Linux中vi命令大全

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

    5.6.Vi与Vim编辑器.-.环境配置

    在Linux世界中,Vi(Visual Editor)和Vim(Vi Improved)是两款极其重要的文本编辑器,尤其对于系统管理员和开发者来说,它们是不可或缺的工具。本节将深入讲解5.6版本的Vi与Vim编辑器的环境配置,以及如何在Ubuntu...

    Linux命令大全(完整版)+小白速成+面试必备+学不会来找我.rar

    这个压缩包文件“Linux命令大全(完整版)+小白速成+学不会来找我”提供了一套全面的Linux命令教程,旨在帮助初学者快速上手,并为面试做准备。 首先,让我们了解Linux的基础知识。Linux是一种类Unix操作系统,它...

    指令输出系统_labview_connectedvgs_

    标题中的“指令输出系统_labview_connectedvgs_”暗示了这是一个使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench)开发的控制系统,与Connected VGS(可能是Virtual Graphic System的连接版)...

    liunx操作指令.rar

    本资源“liunx操作指令.rar”包含了《跟阿铭学Linux(第二版).chm》这本书,这本书可能是对Linux初学者非常有价值的教程。现在,我们将对一些基础且重要的Linux命令进行详细讲解。 1. **ls**:列出目录内容。`ls`...

    linux命令完整版

    以下是对"Linux命令完整版"这个主题的详细说明: 1. **基础命令**: - `ls`:列出目录内容。 - `cd`:切换当前工作目录。 - `pwd`:显示当前工作目录路径。 - `mkdir`:创建新目录。 - `rm`:删除文件或目录...

    Fluke FL26xx LabVIEW Driver Documentation.pdf

    首先,文档中提到了LabVIEW驱动程序的安装指令,这是确保开发环境能够正确加载和使用Fluke设备的前提条件。通常,安装程序会涉及将DLL文件放置在指定目录,以及可能的注册表配置。 文档接下来介绍了Fluke Palette...

    嵌入式Linux系统开发技术详解--基于ARM(完整版)

    ### 嵌入式Linux系统开发技术详解--基于ARM(完整版) #### 一、概述 **嵌入式系统**是指用于执行特定功能的计算机系统,通常被集成在其他产品中,例如汽车、手机等。这类系统具有体积小、功耗低、可靠性高等特点。 ...

    labview-TSC打印.rar

    1. **VI(虚拟仪器)**:这是LabVIEW的程序模块,可能是一个完整的打印解决方案,包括串口初始化、指令生成和发送等功能。 2. **.ctl文件**:这可能是LabVIEW的控制面板文件,用于配置和显示串口设置。 3. **.txt或....

    LINUX指令介紹與使用

    3. **setup**:通常是一个配置工具,用于设置系统的各种参数和功能,具体取决于发行版。 4. **ps**:报告当前系统中运行的进程状态,例如`ps aux`显示所有进程的详细信息。 5. **service**:管理和控制系统服务,...

Global site tag (gtag.js) - Google Analytics