隨筆 - 40, 文章 - 0, 評論 - 20, 引用 - 0
          數據加載中……

          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中使用這些命令時,必須在該?
          命令前加上一個冒號(?:)?。

          posted on 2006-05-13 15:13 月亮 閱讀(344) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 儋州市| 石家庄市| 广平县| 淮安市| 安徽省| 和田市| 乐至县| 洛宁县| 铜川市| 保山市| 区。| 武城县| 罗山县| 常山县| 专栏| 上林县| 临海市| 甘孜县| 庆安县| 罗定市| 龙胜| 嘉兴市| 兴和县| 常德市| 长武县| 天峻县| 凤台县| 鲁山县| 平邑县| 安福县| 龙南县| 肥西县| 饶河县| 五河县| 高阳县| 城口县| 崇阳县| 海盐县| 安新县| 南郑县| 烟台市|