vi 就是這樣而已
Python Taiwan (Telegram) 讀書會
補充教材
10/10/2020 9:00pm Zoom
(王銘德)
vim 練習
Linux 最常用的文字編輯器
熟記約 30 個指令就夠用 30 年
(也請注意, Linux 裡, 英文大小寫是不同的)
先想想看你在編輯檔案最常需要做的動作是?
-
找到一個錯字, 改掉它後, 存檔
- 寫程式, 增加內容
- 改程式, 快速找錯的行號位置, 開使編輯, 存檔
- 用某一字串, 取代所有某另一個字串, 存檔 (例如換函式名)
- 刪除數行
- 刪掉游標後, 幾個字母
開始新檔案或修改舊檔案
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 指令編輯
vi 就是這樣
By Ming-der Wang
vi 就是這樣
- 1,003