基本 vi 命令

來源:互聯網
上載者:User

標籤:

前言

本文內容翻譯 Basic vi Command, Colorado State University, 翻譯原文的大部分內容。

本文介紹的是 UNIX 下的 vi 編輯器,和 Linux 下常用的 vim 會略有不同。由於 vim 是從 vi 發展而來的文字編輯器,所以本文的內容也值得一讀。

我把新學到的或者值得注意的命令用黃色高亮了出來

 

什麼是 vi ?

  UNIX 作業系統的預設編輯器就是 vi (visual editor)。可見 vi 是可視化編輯器的縮寫。UNIX 環境下可替換的編輯器還包括 pico 和 emacs,emacs 是 GNU 的產品。

  UNIX 的 vi 編輯器有是一個全屏編輯器,有兩個操作模式:

  1. 命令模式 (Command mode), 發送命令可以操作檔案。

  2. 插入模式 (Insert mode),可以對當前檔案插入文本。

  在命令模式下,每一個輸入的字元都是一個命令,操控著當前被編輯的文本;在命令模式下,一個輸入的字元可能使得 vi 編輯器進入插入模式。在插入模式,每一個輸入的字元都會添加到檔案文本中;按 <Esc> (Escape) 可以關閉插入模式。

  在下面的表格中,最基本的有用的命令使用星號(*) 標識出來。

  註:UNIX 和 vi 都是大小寫敏感的。請注意使用正確的大小寫,避免出現無法預計的結果。

  下面記錄一下基本的 vi 命令:

 

開始、結束 vi 

啟動 vi 

  輸入 vi filename 啟動 vi 。如果檔案 filename 已存在,則該檔案的第一頁會被顯示出來。如果該檔案不存在,則建立一個空檔案,你可以在裡面輸入文本。

  *  vi filename  // 從第 1 行開始編輯檔案 filename

編輯 vi

  通常,在你離開 vi 時候,建立或被修改的檔案會被儲存。當然,也可以不儲存就離開 vi 。

  注意,無論什麼時候按下冒號(:),游標都會移到螢幕的底部。這類命令在按下斷行符號<Return>(or <Enter>) 鍵結束。

  *  :x<Return>  // 退出 vi, 把修改的檔案儲存為原來調用時的檔案名稱

  *  :wq<Return> // 同時

    :q<Return>  // 退出 vi 

  *  :q!<Ruturn>  // 不儲存最後修改的內容,直接退出

 

移動游標

  不像 windows 和 Mac 的編輯器,滑鼠無法移動 vi 編輯器螢幕內的游標。你必須使用下面列出的命令。在一些 UNIX 平台,方向鍵也可以使用,但是,由於 vi 是基於 Qwerty 鍵盤(沒有方向鍵的鍵盤)設計的,所以在 vi 上,方向鍵有時會產生奇怪的效果,應當避免使用。

  如果你在 windows 和 UNIX 之間來回切換,你可能會覺得,移動游標方式的不同是是兩個環境間最令人沮喪的不同點。

  在下面列表中,字母前面的符合 ^ 代表輸入該字母的同時要按下 <Ctrl> 鍵。

  *  j or <Return> [or ↓]   // 游標向下移動一行

  *  k [or ↑]         // 游標向上移動一行

  *  h or <返回> [or ←]   // 游標向左移動一位

  *  l or <空格> [or →]    // 游標向右移動一位

  *  0(零)          // 游標移動到當前行開始

  *  $            // 游標移動到當前行末尾

    w            // 游標移動到下一個單詞開始位置

    b            // 游標移動到前一個單詞開始位置

    :0<Return> or 1G    // 游標移動到檔案第一行

    :n<Return> or nG    // 移動游標到第 n 行

    :$<Return> or G     // 移動游標到檔案最後一行

 

螢幕操作

  下面命令使得 vi 編輯器的螢幕上下移動多行,或者重新整理。

  ^f  // 向前(forward)移動一屏

  ^b  // 向後(backward)移動一屏

  ^d  // 向下(down / forward)移動半屏

  ^u  // 向上(up / backward)移動半屏

  ^l  // 重繪(redraw)螢幕

  ^r  // 重繪(redraw)螢幕,移除已刪行

 

增,改,刪文本

  不像 windows 編輯器,你無法把滑鼠覆蓋的文本替換,或刪除。而是使用下面的命令進行操作。

插入添加文本

  下面的命令允許你添加插入文本。每一個命令都 vi 編輯器進入插入模式;因此,必須按<Esc>鍵來結束文本輸入,把 vi 編輯器變回命令模式。

  *  i  // 在游標前插入文本,直到按下 <Esc>

    I  // 在當前行的開始位置插入文本,直到按下 <Esc> 

  *  a  // 在游標後面插入文本,直到按下 <Esc>

    A  // 在當前行末尾插入文本,直到按下 <Esc>

  *  o  // 在當前行下面插入一行,並輸入文本,直到按下 <Esc>

  *  O  // 在當前行上面插入一行,並輸入文本,直到按下 <Esc>

 

修改文本

  下面命令運行你修改文本

  *  r  // 替換游標下的一個字元( 無需 <Esc>)

    R  // 替換字元,從游標位置開始,直到按下 <Esc>

刪除文本

  下面命令允許你刪除文本

  *  x  // 刪除游標下的一個字元

    Nx  // 從游標位置開始,刪除 N 個字元

    dw  // 刪掉游標下的一個單詞

    dNw  // 刪掉游標位置開始後的 N 個單詞,例如,d5w 刪除 5 個單詞

    D   //  刪除游標位置開始的行尾部分

  *  dd  // 刪除當前行

    Ndd  // 刪除 N 行,從當前行開始

複製粘貼文本

  下面命令運行你複製粘貼文本

    yy  // 複製(yank)當前行到緩衝(buffer) 

    Nyy or yNy  // 把當前行後面的 N 行複製到緩衝(buffer)

    p       // 在當前行後面粘貼(paste)緩衝中的文本

 

其他命令

搜尋文本

  替換一個單詞或者短語,這在文本編輯中經常出現。需要定位一個指定的字串,可以使用下面的命令:

    /string  // 在文本中,向前搜尋 string 的出現位置

    ?string  // 在文本中,向後搜尋 string 的出現位置

    n    // 尋找下一個

    N    // 尋找上一個

 

確定行號

   有時,能夠確定當前行行號或者檔案的總行數是很有用的。

    :.=  // 在螢幕底部,顯示當前行行號

    :=  // 在螢幕底部,顯示檔案的總行數

    ^g  // 在螢幕底部,即顯示當前行行號,右顯示檔案總行數

 

儲存,讀取檔案

  下面的命令允許你讀取其他檔案到當前檔案,或者把當前檔案另存新檔其他檔案

    :r filename<Return>  // 讀取檔案 filename,然後把讀取的內容插入到當前行後面

    :w <Return>      // 儲存當前內容到原始檔案

    :w newfile<Return>  // 把當前內容到另存新檔 newfile

    :12,35w smallfile<Retrun>  // 把 12 行到 15 行的內容儲存到名為 smallfile 的檔案中

    :w! prefile<Return>      // 把當前內容寫入到之前已存在的檔案 prefile 中。

 

基本 vi 命令

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.