VIM常用指令

VIM的初步認識

不是很瞭解VIM的可以先去看看這篇文章Linux字符界面與VI編輯器
你會發現VIM和VI只差了一個M字,是否它們兩者有什麼關係?對的你們有猜錯,它對 Vi 作了 許多 增強: 多層撤銷, 多窗口, 多緩衝區(buffer), 高亮度語法顯示, 命令行編輯, 文件名匹配, 在線幫助, 可視選定, 等等. 用 “:help vi_diff.txt” 看 Vim 和 Vi 的差別 的 摘要(以上這句話摘自CentOS7 VIM幫助文檔,查看這個文檔可以在終端界面下輸入$ man vim進行查看,要是不知道終端是什麼,請查看上面那篇文章)。

VIM的四種模式與VI的三種模式

實際上VIM的模式與VI的模式是一樣的,不過VIM比VI多了一種可視模式。不過我個人覺得VI的三種模式比VIM的四種模式在命名更形象一些,所以接下來的文章使用了VI的模式名稱。


  • VI的三種模式
    • 指令模式:輸入指令以及移動光標時使用
    • 文本輸入模式:對文本內容進行編輯
    • 末行模式 :文字編輯輔助功能,比如字符串修改,替代,保存文件等。

  • VIM的四種模式
    • 正常模式:等價於VI的指令模式
    • 文本輸入模式:等價於VI的文本輸入模式
    • 命令模式:等價於VI的末行模式
    • 可視模式:這是VIM比VI多出來的一種模式,正常模式下輸入v進入可視模式,然後移動光標,光標選中的區域會高亮,最後用操作命令對選中的區域進行操作。

VIM常用指令(新手推薦在字符界面下使用$ vimtutor指令,該指令是VIM文本編輯器的教程,幫助快速上手VIM。)

注意:本文編寫時沒有注意中英文的切換,可能存在中文字母、字符,不建議Ctrl C,Ctrl V。


  • VIM進入和退出
    • vim(字符界面):打開VIM文本編輯器
    • vim 文件名(字符界面):若存在該文件,則打開該文件,若不存在,則創建該文件(注意,創建的文件是先保存在緩存中,編輯完成後輸入保存指令,纔會保存在磁盤中)
    • :q!:不保存文本,強制退出VIM程序
    • :wq:保存修改並退出
    • :wq a.txt:保存文件,文件名爲a.txt
    • :w 文件名:文件另存爲

  • 移動指令
    • h:光標左移一位
    • l:光標右移一位
    • j:光標向下移動一行
    • k:光標向上移動一行
    • w:從當前光標當前位置直到下一個單詞起始處,不包括它的第一個字符
    • e:從當前光標當前位置直到單詞末尾,包括最後一個字符
    • 0:光標返回行首
    • Page Up:向上翻頁
    • Page Down:向下翻頁
    • ctrl f : 向下翻頁
    • ctrl b : 向上翻頁

文本編輯指令


  • 文本插入指令
    • i:在光標前插入文本,指令模式下輸入i會進入文本輸入模式
    • I:與i一樣
    • A:在光標所在行的末尾插入內容,指令模式下輸入A會進入文本輸入模式
    • a:在光標後插入文本,指令模式下輸入a會進入文本輸入模式
    • o:在光標所在行的下方插入一行,指令模式下輸入o會進入文本輸入模式
    • O:在光標所在行的上方插入一行,指令模式下輸入O會進入文本輸入模式

  • 文本刪除指令
    • x:刪除光標位置的字符
    • d motion:刪除操作符d,需要配合動作(motion)一起使用,下面試動作,使用方法例如:dw、de
      • w:從當前光標當前位置直到下一個單詞起始處,不包括它的第一個字符
      • e:從當前光標當前位置直到單詞末尾,包括最後一個字符
      • $:從當前光標當前位置直到當前行末
    • dd:刪除整行

  • 撤銷類指令
    • u:撤銷上一次的操作
    • U:撤銷對整行的操作
    • Ctrl+R :撤銷掉撤銷命令

  • 置換類指令
    • p:將最後一次刪除的內容置入光標之後
    • r+字符:將光標當前位置的字符,用新輸入的字符去替換
    • R :指令模式下輸入R,進入替換模式,可以連續替換多個字符,直到ESC退出該模式

  • 更改類指令c(與刪除類操作符d一樣,語法c motion(動作))
    • cw:從光標開始,改變文本直到一個單詞的末尾(我練習的時候體會不出cw和ce的區別,望知道的朋友告知一下)
    • ce:從光標開始,改變文本直到一個單詞的末尾
    • c$:從光標開始,改變文本直到該行末尾

  • 替換指令(末行模式)
    • :s/old/new:替換所在行第一個匹配串,第一個old被new替換
    • :s/old/new/g:替換全行的匹配串,全行的old被new替換
    • :#,#s/old/new:其中 #,# 代表的是替換操作的若干行中首尾兩行的行號。
    • :%s/old/new/g:替換整個文件中所有匹配串
    • :%s/old/new/gc:找到全文所有的匹配串,並逐一詢問是否替換

  • 使用計數指定動作(所有動作指令前都可指定數字,表示該動作執行的次數)
    • 簡單的例如h、l、j、k操作前加數字。2h-光標左移兩位。2j-光標下移兩行
    • d number motion:如d2e,刪除從光標開始到單詞末尾,該操作執行兩次
    • c number motion:如c2e,更改從光標開始到單詞末尾,該操作執行兩次

  • 定位及文件狀態
    • Ctrl+g:顯示文件名以及光標的位置
    • G:光標跳轉到文件最後一行
    • gg:光標跳轉到文件第一行
    • 行數 + G:光標跳轉到輸入的行數

  • 搜索類命令
    • /(命令模式下) +需要搜索的字符:如/error,正向搜索error字符
    • ?+需要搜索的字符:逆向搜索字符
    • n:下一個相同的字符
    • N:上一個相同的字符
    • :set ic(Ingore Case):設置搜索時忽略大小寫選項
    • :set noic:設置搜索時禁用忽略大小寫選項
    • :set hls(hlsearch):設置所有匹配項高亮選項
    • :set nohls:關閉所有匹配項高亮
    • :set is(incsearch):輸入/指令後,輸入字符直接匹配內容(邊輸字符邊查找)
    • :set nois:輸入/指令,並且輸入字符按下回車鍵後才匹配字符(輸入完畢後再查找)
    • Ctrl+o:光標回退到之前的位置
    • Ctrl+i:光標跳轉到較新的位置
    • %:用來查找相配對的括號,需要將光標停留在括號上,例如光標在(上,輸入%,光標會自動跳到與之相對應的)上

  • 在VIM內調用外部命令的方法(末行模式下)
    • :!+外部命令:例如:! ls,列舉當前目錄

  • 提取和合並文件
    • :r 文件名:例如r a.txt,在當前文本光標後插入a.txt文本的內容
    • :r ! 外部命令:例如 :r ! ls,在光標後插入外部命令返回的結果

  • 可視模式的命令(指令模式下輸入v進入可視模式)
    • 截取部分內容保存到另一個文件中
      1. 按 v 鍵進入可視模式,移動光標。您會注意到光標之間的文本被高亮了。
      2. 然後按 : 字符。您將看到屏幕底部會出現 :’<,’> 。
      3. 現在請輸入 w TEST,其中 TEST 是一個未被使用的文件名。確認您看到了:’<,’>w TEST 之後按 <回車> 鍵。
      4. 這時 Vim 會把選中的行寫入到以 TEST 命名的文件中去。使用 :!dir 或 :!ls確認文件被正確保存。
    • 複製粘貼文本
      1. 指令模式下輸入v進入可視模式
      2. 移動光標,使得需要複製的內容高亮
      3. 輸入y,複製選中內容
      4. 移動光標到需要粘貼的位置,輸入p粘貼

  • 啓用VIM特性
    Vim 的功能特性要比 Vi 多得多,但其中大部分都沒有缺省啓用。爲了使用更多的
    特性,您得創建一個 vimrc 文件。

    1. 開始編輯 vimrc 文件,具體命令取決於您所使用的操作系統:
      :edit ~/.vimrc 這是 Unix 系統所使用的命令
      :edit $VIM/_vimrc 這是 MS-Windows 系統所使用的命令
    2. 接着讀取 vimrc 示例文件的內容:
      :r $VIMRUNTIME/vimrc_example.vim
    3. 保存文件,命令爲:
      :write

    下次您啓動 Vim 時,編輯器就會有了語法高亮的功能。
    您可以把您喜歡的各種設置添加到這個 vimrc 文件中。
    要了解更多信息請輸入 :help vimrc-intro


  • VIM補全功能
    1. 指令模式下輸入:e(不要按回車)
    2. Ctrl+d,顯示所有以e開頭的選項
    3. Tab切換選項

  • VIM幫助
    • :help:幫助命令
    • F1:幫助
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章