vi 就是這樣而已


Python Taiwan (Telegram) 讀書會

補充教材

10/10/2020 9:00pm Zoom

(王銘德)

vim 練習

Linux 最常用的文字編輯器

 

熟記約 30 個指令就夠用 30 年

(也請注意, Linux 裡, 英文大小寫是不同的)

先想想看你在編輯檔案最常需要做的動作是?

  1. 找到一個錯字, 改掉它後, 存檔

  2. 寫程式, 增加內容
  3. 改程式, 快速找錯的行號位置, 開使編輯, 存檔
  4. 用某一字串, 取代所有某另一個字串, 存檔 (例如換函式名)
  5. 刪除數行
  6. 刪掉游標後, 幾個字母

 

開始新檔案或修改舊檔案

vi  file_name

vim  file_name

 

例如

vi Dockerfile

vi docker-compose.yml

vi A.txt B.txt C.txt

 

輸入模式

(INSERT mode)

 

*當你要插入新字串時使用

    (也就是開始寫東西)

*按 Enter 鍵, 自動跳行

指令模式

(COMMAND mode)

*主要在移動游標時用

*用收尋字串或快速移動游標

*或存檔

*或離開 vi 編輯器

*或執行其他控制指令

*或設定 vi

*或執行字串取代, 等等

任何時間點,你只會在其中一個模式

(就像老式打字機一樣)

進入輸入模式

 (可用 以下其中一個方法)

i  從現在游標左邊開始輸入

a 從現在游標右邊開始輸入

o 打開下一行, 開始輸入

 

cw (change word) 刪掉該字, 並開始輸入 => 取代

. (句點) 重複上一個 “修改或取代 " 動作

回到指令模式

按 ESC 鍵, 離開輸入模式, 既回到指令模式

 

 

 

 

:w 寫出, 存檔 (write)

:q 離開 (quit)

或 :wq (存檔並且離開)

按 ESC 鍵, 離開輸入模式

存檔(在指令模式裡)

移動游標方法

h 左

j 下

k 上

l 右

 

/字串   快速跳到 “字串" 的地方, 例如 /apple

? (連續打問號) 往上找 (shift + / 也行)

/ (連續打 slash 符號) 往下找

平常停留在 “指令模式”

快速移動游標

0 游標跳到該行的第一個字

$ 游標跳到該行的最後個字

Ctl + f   游標跳到下一頁

Ctl + b  游標跳到下上頁

:0 游標跳到第一行

:$ 游標跳到最後一行

:數字  N  游標跳第 N 行, 例如 :100

指令模式裡, 還可以

x  刪一個字母

dd (delete) 刪一行

yy  (yark) 記住一行

p (paste) 貼上

 

* 前面加個數字表示重複幾次, 例如 3dd, 一次刪除三行

 

i, a, 或 o 離開指令模式, 進入輸入模式

取代字串

:%s/world/ming/g

 

說明: 把所有的 world 全部換成 ming ; 如果每一行只換一次, 就不需要後面的 /g

 

* 若字串裡有 / 或 \ 符號, 在該字母(/ or \)前面多加一個 \ (反斜線符號)

其他較常用指令

:set number 顯示行號

:set nonumber 不顯示行號

 

u (undo) 放棄上一個改變的動作

Ctl + r   (redo) undo 的相反

J  把下一行黏上來

:q!  (不存檔的離開, = 放棄修改)

:wq  (存檔後並且離開)

:w 檔名 (可以寫入另一個檔名)

:r 檔名 (可以 read a file)

:w! (若系統檔無法:w, 可以試試)

若同時要開啟多個檔案

$ vi *

$ vi  *.txt

$ vi  A B C

跳下一個檔案

指令

 

:n              (編輯下一個檔)

 

:q!             (不再需要找下一個檔)

 

其他跟正常編輯時用的指令一樣

其他複雜的指令

平常 IDEs

微軟的 Visual Studio Code

atom

 

線上 IDEs

哪裡還能用 vi 指令編輯

Made with Slides.com