為了熟悉 Vim 的指令操作,記錄了一些基本指令

目錄

前言

Vim 是從 vi 發展出來的一個文字編輯器,功能豐富,結合了很多快捷指令能夠大幅增加編輯文件的速度,在程式設計師中被廣泛使用

入門

建立、進入檔案

vim <檔名> 

編輯檔案

i
# I, o, O, a, A, r, R 也可以進入編輯模式
# i, o, a  =>  插入
# r  =>  取代

進入編輯模式

存檔並退出

按鍵盤左上角的 ESC 退出編輯模式,回到指令列命令模式,接著輸入 :wq 儲存檔案並退出

退出檔案

若無變更檔案內容並退出,只要輸入 :q 即可

強制退出就輸入 :q!

模式

參考圖片: 『Linux』十分鐘開始使用 vim

指令列模式

有三個常用的指令

  • :!  command

    暫時離開 Vim 編輯器執行 command 結果,之後可以再按 Enter 回到 Vim 中
  • :set nu

    顯示行號
  • :set nonu

    取消顯示行號

尋找文字

  • ?string

    輸入 ?string,找目前游標上面所有列的文字 string
  • /string

    輸入 /string,找目前游標下面所有列的文字 string

找到所有可能文字之後,透過 n 來依序顯示結果,如果要查看上一個結果可以使用 N

取代文字

  • :n1,n2s/word1/word2/g

    n1 與 n2 為數字。在第 n1 與 n2 列之間尋找 word1 這個字串,並將該字串取代為 word2
  • :1,$s/word1/word2/g

    從第一列到最後一列尋找 word1 字串,並將該字串取代為 word2
  • :1,$s/word1/word2/gc

    從第一列到最後一列尋找 word1 字串,並將該字串取代為 word2,且在取代前顯示提示字元給使用者確認 (confirm) 是否需要取代

讀檔、存檔

:w: 儲存檔案

:q: 離開檔案

:wq: 存檔並離開

若遇到唯讀檔案,可以加上 !

:w [filename]: 將編輯的資料儲存成另一個檔案

:r [filename]: 在編輯的資料中,讀入另一個檔案的資料

:n1,n2 w [filename]: 將 n1 到 n2 的內容儲存成 filename 這個檔案

一般模式

有很多操作指令,只記錄常用的

移動游標

參考圖片: [Day 15] 你會用 Vim 嗎? Vim 沒有那麼難!-指令觀念篇

我們可以透過鍵盤控制游標的位置,藍色 x 軸代表現在所在的列,而紅色 y 軸代表檔案中的每一列,下方座標軸的原點是該列中現在游標所在的位置

  • 5  < space >

    如果要讓游標向右五個字元,可以輸入數字 5 之後再按空白鍵
  • 5  < enter >

    如果要讓游標向下移動五列,可以輸入數字 5 之後再按 Enter 鍵
  • home  /  0

    輸入 home0 前往該列的首端
  • end  /  $

    輸入 end$ 前往該列的尾端
  • 1G (gg, 常用)  /  G

    輸入 1G 或是 gg 前往檔案第一列的第一個字元
    輸入 G 前往檔案末端的第一個字元
  • H  /  L

    輸入 H 前往目前螢幕第一列的第一個字元
    輸入 L 前往目前螢幕最末列的第一個字元

複製文字

參考圖片: [Day 15] 你會用 Vim 嗎? Vim 沒有那麼難!-指令觀念篇

  • y0  /  y$

    輸入 y0,代表在游標移動到該列的最前端時,同時複製文字
    輸入 y$,代表在游標移動到該列的最尾端時,同時複製文字
  • yy  /  nyy

    輸入 yy,代表複製游標所在該列的文字
    輸入 nyy,代表向下複製 n 列
  • y1G  /  yG

    輸入 y1G,代表複製到檔案中的第一列
    輸入 yG,代表複製到游標之下的最末列

貼上文字

  • p  /  P

    輸入 p,代表在游標所在列的上面一行貼上內容
    輸入 P,代表在游標所在列的下面一行貼上內容

刪除文字

參考圖片: [Day 15] 你會用 Vim 嗎? Vim 沒有那麼難!-指令觀念篇

跟複製文字的指令非常類似

  • x  /  X

    輸入 x,代表向後刪除一個字元
    輸入 X,代表向前刪除一個字元
  • d  /  ndd

    輸入 dd,刪除游標所在的那一整列
    輸入 ndd,刪除游標所在的向下 n 列

復原

u: 復原上一個動作

ctrl+R: 取消復原上一個動作

.: 重複執行上一個動作

區塊選擇(Visual Block)

v 字元選擇,會將游標經過的地方反白選擇
V 列選擇,會將游標經過的列反白選擇
[Ctrl]+v 區塊選擇,可以用長方形的方式選擇資料
y 將反白的地方複製起來
d 將反白的地方刪除掉
p 將剛剛複製的區塊,在游標所在處貼上

結語

Vim 的指令非常多,未來有使用到其他指令再補充

Reference

To know that we know what we know, and to know that we do not know what we do not know, that is true knowledge.

Nicolaus Copernicus

Author: Andy Chung
Article link: https://chiachin2686.github.io/2021/09/use-vim-to-edit-files/
License: CC BY-NC 4.0