Vim常用命令記錄


  (本文僅記錄了Vim常用的按鍵功能和操作,用於備忘和查閱。若為Vim小白,建議先通過列出的參考資源獲得對Vim更全面的了解。Vi 是幾乎所有Linux發行版都支持的文字編輯工具,也是許多Linux下工具的默認文本編輯工具,而Vim則是其功能加強版。)

 

  vim的模式

  Vim一般分為三種不同的模式,普通模式( normal mode )、編輯模式和命令模式.

  普通模式( normal mode )

  使用vim打開文件則進入普通模式。在普通模式下可通過按鍵 h、j、k、l來控制光標的移動,通過 x、d(delete) 、 y(yank) 、p(put)等按鍵可對文本進行操作,在該模式下,鍵盤按鍵被視為類似 Word下的快捷鍵的功能,而不是被視為簡單的文本輸入。

  編輯模式

  在編輯模式下可對文件內容進行編輯。編輯模式下按鍵輸入均被視為文本輸入,而不再具備普通模式下的各種功能。用戶可以通過按鍵ESC從編輯模式返回普通模式。

  命令模式

  在普通模式下,鍵盤輸入 ' : '、 ' / '、 ' ? '則光標移動至界面最下行,並等待進一步輸入。之后Vim會根據用戶輸入執行相應的動作,如保存和退出、查找和替換、執行外部命令等。命令模式下同樣通過ESC鍵返回普通模式。

  

  文件的打開與保存

  用戶可通過命令行輸入 vim filename 的方式打開文件名指定的文件,通過在命令模式下輸入對應指令模式的方式進行文件的保存等操作。

    vim filename   //打開名為filename的文件
    :w               //保存修改至源文件
    :wq              //保存修改並退出
    :q!              //不保存修改,直接退出
    :w filename      //保存修改(選中的部分)至filename(其中filename為不存在重名的新文件)

  在某些情況下,如當前用戶對該文件沒有修改權限時(但可以通過權限提升得到更大的權限時),需要在命令后面加入' ! ',表示強制的意思,但具體能否寫入還是由其最終的權限能否修改文件決定的。

  這里可以看到,輸入' : '進入命令模式后,按鍵 w 即為保存命令,除了可進行文件整體保存外,還可以對特定選中的文本部分進行保存,如何進行文本選擇下有介紹。   

 

  文件編輯

  在普通模式下,用戶可以借助諸多的功能按鍵對文件已有的內容進行修改和調整,但想要具體改變和輸入新的文本內容,則仍需要進入編輯模式,在編輯模式下除ESC外,其他的按鍵均被視為正常的按鍵輸入。進入編輯模式可以有多種不同的方式。

    i    //insert即插入模式,從光標所在位置開始插入,即插入的內容位於原光標所在位置字符之前
I //從光標所在行的行首開始插入
a //append即附加模式,從光標所在位置之后附加,即新增內容位於原光標所在位置字符之后 A //從光標所在行的行末開始附加 o //在光標所在行的下一行加入新一行 O //在光標所在行的上一行加入新一行
R //進入替換模式,屏幕下方會出現Replace提示,此時的輸入會直接替換光標所在位置的字符,與Windows下的 0 作用類似,同樣通過ESC鍵返回

  用戶可以根據不同的需要將光標移動(見下)到合適的位置,再通過對應的功能鍵進入編輯模式進行文本編輯,編輯完成后,通過ESC鍵返回普通模式。

 

  光標移動(一)

  在普通模式(也就是 vim 打開文件后的默認模式)下,用戶可通過以下按鍵進行光標的移動。

      k            //  h -光標左移
   h     l     //  l -光標右移
      j       //  j -光標下移(形似向下的箭頭)
                    //  k -光標上移

 

  光標移動(二)

  普通模式下,vim 還支持以單詞和行為度量的移動方式。

    w        //移動至下一個單詞的第一個字符(該字符前一個字符為空白字符)
    e        //移動至單詞的最后一個字符(即后一個字符為空白字符)
    $        //移動至行尾
    0        //移動至行首

 

  光標移動(三)

   上述關於光標移動的按鍵可以與數字結合使用,解釋為重復操作若干次,格式為: 數字 + 移動方式。示例如下:

    3j            //下移三格
    4h            //左移4格
    2w            //移動至第二個單詞的詞首字符
    3e            //移動至第三個單詞的詞尾字符                 
                

  通過上述的 h、j、k、l和 w、e、$、0以及上述操作與數字的結合,實現不借助鼠標的快速光標移動。

 

  其他可用的光標移動

    Ctrl+f      //屏幕向下移動一頁,相當於PageDown
    Ctrl+b      //屏幕向上移動一頁,相當於PageUp
    H       //移動至屏幕中第一行的第一個字符
    M       //移動至屏幕中中間行的第一個字符
    L            //移動至屏幕中最低行的第一個字符 

 

  刪除操作

    x        //刪除光標所在處的字符(其大寫形式X為將光標之前的字符刪除,相當於Backspace)
    dd      //刪除光標所在行的操作(常用)

   d即為delete,除了dd外,d指令可與上述光標移動操作結合使用

    dw         //刪除一個單詞
    d3w       //刪除三個單詞
    d$         //刪除光標所在處至行尾的字符
    d4l        //刪除光標所在處起的四個字符
    d2j        //刪除兩行

   同樣的,如 2dd 指令則表示將dd指令重復兩次,即為刪除兩行操作,2d2w 則表示將 d2w 操作執行兩次,即刪除四個單詞。

 

  復制與粘貼

   復制和粘貼借助多個指令的協作完成。包括復制y(yank),粘貼p(put)和虛擬選擇v(visual selection).

    p                    //put命令,將剪貼的內容(注意,既可以是復制的內容,也可以為之前刪除的內容)放置在光標后的位置,其大小字母P則表示放置在光標之前的位置
    v                    //進入虛擬選擇模式(visual selection),被選擇的文本段被高亮顯示(v的選擇對象為字符,對應的大寫字母V則是以行為單位選擇)
  Ctrl + v        //以矩形框的形式進行內容選擇
y //復制通過 v 操作選擇的文本,或則其本身也可以與光標移動指令一同使用 //如y5w,則復制5個單詞(注意復制是從光標所在處開始的)

  復制即通過 v 指令選定文本段,通過 y 指令復制內容,再通過 p 指令將文本放置在指定位置;

  剪切即通過 v 指令選定文本段,通過 d (或 x )指令刪除內容,再通過 p 指令將文本放置在指定的位置;

   p 指令除了用於復制內容的粘貼外,還可以將上一次刪除的內容粘貼在指定的位置,故而可以達到類似剪切的效果。對於 v 指令選中的文本,可以進行多種操作,包括復制(y)、刪除(x/d)、另存(:w filename)等,讀者完全可以自行進行組合嘗試。

   指令y和d的指令形式有許多相同之處,除了均有yy和dd這種針對一行內容的處理指令外,指令y可以與光標移動指令相結合,得到更好的使用效果。

    yy    //復制光標所在行的內容
    y0    //復制光標所在位置至行首的內容
    y$    //復制光標所在位置至行尾的內容
    yG    //復制光標所在位置至文本結束的內容
    ynG   //復制指令與nG指令的結合
      //以及諸如y3w、y3j等指令

 

  行跳轉

  通過與 g(goto) 相關的指令實現以行為單位的跳轉指令。

    gg        //跳轉至文件第一行
    G         //跳轉至文件最后行
    nG        //跳轉至文件第 n 行  

  另外,通過快捷鍵 Ctrl + o 可以返回之前光標所在的位置(是針對gg等行跳轉操作而言的上一個位置)。

 

  撤銷操作

  與u(undo)相關的指令實現指令撤銷

    u            //撤銷上一次操作
    U            //撤銷對光標所在行的所有操作
    Ctrl+r      //重做上一操作

 

  替換和修改

  文本的替換和修改主要使用替換r(replace)和修改c(change)指令完成。

    rc            //其中c為字符,則將光標所在處的字符替換為c

  修改指令將指定的范圍內的內容刪除,並進入編輯模式,從而使得用戶可以修改某一部分的文本。指令c與光標移動指令結合使用。用戶修改完畢后,需使用ESC返回普通模式。

    ce        //刪除光標所在處至詞尾的所有內容,並進入編輯模式,供用戶修改
    c3w      //刪除光標所在處其的三個詞,並進入編輯模式
    c$        //刪除光標所在處至行尾的所有字符,並進入編輯模式
    c0        //刪除光標所在處至行首的所有字符,並進入編輯模式

 

  查找

  使用 / 與 ?進行不同方向的關鍵字查找,使用方式與Linux下的man page相似。 

    /keyword         //按默認方向查找關鍵字
    ?keyword         //按與默認方向相反的方向查找關鍵字
    n                //按與之前相同的查找順序匹配下一個出現相同關鍵字的位置
    N                //按與之前相反的查找順序匹配下一個出現相同關鍵字的位置
              //用戶也可以通過Ctrl + o 和 Ctrl + i 進行位置的切換

 

  替換

  替換指令可以視為是進入命令模式后借助s(substitute)指令完成。

    :s/old/new           //將光標所在行出現的第一個old替換為new(僅對該行的第一個old)             
    :s/old/new/g        // 將光標所在行出現的所有old替換為new            
    :s/old/new/gc       //同上,替換之前提示用戶確認是否替換      
    :n,ms/old/new/g   //在n和m指定的行之間進行檢查和替換    
    :%s/old/new/g    //針對整個文本進行替換

  

  執行命令

   普通模式下,通過鍵入' : ',使得光標移動至屏幕最下方的行,再鍵入有效指令,即可由Vim執行。之前介紹的文件的保存和退出、替換等都是這樣實現的。Vim還可以支持多樣的命令。

  文件保存

  之前介紹的文件保存的主要對象是完整的文件,實際上用戶也可以借助w(write)指令將部分文本進行保存。

  (1)通過 :w filename 將整個文件保存至新建的filename文件中;  

  (2)使用虛擬選擇指令v ( V / Ctrl + v )等選中指定文本內容,再通過 :w filename 保存至新建的文件中,則只會保存選中的文本段。這種方式下,屏幕下方的提示符如圖所示

  

  (3)通過 :n,m w filename 將文本的n到m行保存至新建文件 filename 中;

  執行外部指令

    :! command    //離開Vim並在終端下執行command指令,結果會直接顯示,可通過ESC返回 

  文件內容導入  

    :r filename    //將filename指定的文件內容插入至光標所在行的上一行
:r !command  //將命令執行的結果插入文本

   

  其他有用的快捷鍵

  (1)通過 Ctrl + g 鍵可以獲得文件相關的信息,如文件名,光標所處的行列號等信息;

  

  (2)Ctrl+f 屏幕向下移動一頁,相當於PageDown,Ctrl+b屏幕向上移動一頁,相當於PageUp按鍵;

  (3)通過 % 鍵跳轉至與之匹配的括號處(包括 {}、[]、()等);

  (4)通過 . 鍵重復之前一個動作;

       (5)通過Ctrl + d 顯示可能匹配的命令,通過Tab 補全指令。命令模式下輸入 h ,使用Ctrl + d 鍵,即會顯示出所有的以 h 開頭的命令。同樣的,對於未完成的命令或文件名,使用Tab鍵,則Vim會嘗試完成輸入,當有多個正確的匹配時,按Tab鍵則會進行切換。

  以上部分即為在常規使用 vim 的過程中所需的大多數功能按鍵和使用方法,文章的其余部分介紹更多關於 vim 的配置等相關的內容,有進一步個性化設置 vim 需求的可以做進一步的了解。

  

  修改編輯選項

  通過Vim的的set命令(命令模式下,需首先輸入 ' : ' )改變編輯器的默認選項。常用的一些選項見下,在對應選項前加入前綴 no 即為取消對應選項。當 ~/.vimrc文件存在時,set的設置則會修改該文件中配置信息,相應的,也可以通過直接修改該配置文件中的內容修改配置(見下)。

    :set nu         //顯示行號,相應的set nonu則為不顯示行號
    :set ic         //搜索忽略大小寫(ignore case),取消即為 set noic
    :set hlsearch    //搜索時匹配的結果高亮顯示
    :set incserch    //設置搜索時的搜索順序
                    //可以看到,在對應的選項前面加入前綴no即表示取消取消對應的選項
:set ruler    //右下角展示狀態欄
:set //顯示與系統默認設置不同的參數情況,即被修改過的參數情況
:set syntax on  //設置Vim會根據語法以不同顏色顯示不同的內容
:set syntax off

   通過命令模式下的set all 命令,可以查看當前所有的vim設置情況。通過命令 help set 也可以查閱一些關於Vim的設置幫助。

 

  查看幫助

  在命令模式下輸入 help ,則會打開一個新的幫助文件,可以通過:q來返回。通過加入參數來查詢對應的幫助.

    :help             //打開幫助文件
    :help w          //打開指令對應的幫助文件
    :help user-manual    

  實際上,該命令是通過Vim打開了位於/usr/share/vim中的幫助文檔(筆者的機器的路徑為/usr/share/vim/vim74/doc),即相當於使用Vim進行多文件操作。簡單的返回方式即為在幫助文檔界面鍵入 :q即可。

 

  相關文件

  配置文件~/.vimrc

  Vim作為一個強大的編輯工具,其本身具有眾多的環境參數選項,規定了編輯風格、界面顯示等眾多的內容。其環境參數的設置主要通過配置文件進行記錄。其中位於/etc目錄下的配置文件(筆者Ubuntu環境下為/etc/vim/vimrc)規定的是關於Vim的全局設置。而針對個人用戶的個性化設置則通過個人用戶目錄下的~/.vimrc文件完成(不存在時可自行新建)。該文件中 " 符號為注釋符號。

    cp /etc/vim/vimrc    ~/.vimrc    //將源文件復制到用戶主目錄中

  通過在.vim中添加配置信息或取消其中的注釋,即可進行vim的配置功能。如去除 syntax on 前的注釋從而打開語法高亮等。

  在 NJU ICS Lab 中找到一些可用的 vim 設置選項如下,下列設置也包含了 vim 設置的基本用法和功能,用戶可以根據自己的需求添加,原網頁見這里.

    setlocal noswapfile " 不要生成swap文件
    set bufhidden=hide " 當buffer被丟棄的時候隱藏它
    colorscheme evening " 設定配色方案
    set number " 顯示行號
    set cursorline " 突出顯示當前行
    set ruler " 打開狀態欄標尺
    set shiftwidth=4 " 設定 << 和 >> 命令移動時的寬度為 4
    set softtabstop=4 " 使得按退格鍵時可以一次刪掉 4 個空格
    set tabstop=4 " 設定 tab 長度為 4
    set nobackup " 覆蓋文件時不備份
    set autochdir " 自動切換當前目錄為當前文件所在的目錄
    set backupcopy=yes " 設置備份時的行為為覆蓋
    set hlsearch " 搜索時高亮顯示被找到的文本
    set noerrorbells " 關閉錯誤信息響鈴
    set novisualbell " 關閉使用可視響鈴代替呼叫
    set t_vb= " 置空錯誤鈴聲的終端代碼
    set matchtime=2 " 短暫跳轉到匹配括號的時間
    set magic " 設置魔術
    set smartindent " 開啟新行時使用智能自動縮進
    set backspace=indent,eol,start " 不設定在插入狀態無法用退格鍵和 Delete 鍵刪除回車符
    set cmdheight=1 " 設定命令行的行數為 1
    set laststatus=2 " 顯示狀態欄 (默認值為 1, 無法顯示狀態欄)
    set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ Ln\ %l,\ Col\ %c/%L%) " 設置在狀態行顯示的信息
    set foldenable " 開始折疊
    set foldmethod=syntax " 設置語法折疊
    set foldcolumn=0 " 設置折疊區域的寬度
    setlocal foldlevel=1 " 設置折疊層數為 1
    nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> " 用空格鍵來開關折疊

 

  記錄文件~/.viminfo

  文件 ~/.viminfo 記錄了用戶使用Vim進行的操作情況,多用於類似於指令撤銷(u)和重做(r)的操作。

 

  參考資源

  鳥叔的Linux私房菜 : 第十章.vim程序編輯器

  Linux: 命令vimtutor

  Vim Tips Wiki


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM