Vim

Vim 是從 vi 發展出來的文字編輯器,由於此編輯器提供了許多與 programing 相關的功能,因此受到廣大程式設計師喜愛。

Vim 具有數種不同的模式,以下列幾個較為常用的出來介紹。

Notice:關於 Vim 預設環境的設定,可以透過家目錄下的 .vimrc 設定,網路上有許多很完整的 .vimrc 檔可以下載。

一般模式

一般模式是進入 Vim 的預設模式,在這個模式下不能針對內容進行編輯,只能透過按鍵移動游標選擇行數,並針對對應的行數 刪除字元刪除整行,或者是複製及貼上。

基本範例

# 刪除游標所在的該行
dd

# 刪除一個字元
x

# 連續向後刪除 10 個字元
10x

# 將游標移動到該行的前面
^

# 將游標移動到該行的末端
$

# 自動對齊
==

# 移動到下一個單字的第一個字元
w

# 移動到前一個單字的第一個字元
b

# 移動到下一個單字的最後一個字元(無視符號)
E

# 還原上一步
u

# 游標移動到文件最上方
gg

# 游標移動到文件最下方
G

# 游標移動到特定行數(第 3 行)
3G

# 全選( v 為切換成選擇模式)
ggvG

# 複製游標該行
yy

# 貼上
p

# 往後尋找該行符合的字母
f [字母]

# 往前尋找該行符合的字母
F [字母]

編輯模式

一般模式 輸入「i、I、a、A、o、O」等任一字母就可以進入編輯模式,該模式就如同其它編輯器相同,可以自由的編輯內容。

基本範例

# auto-complete
ctrl + p

指令模式

一般模式 輸入「:/?」三種任一符號,就可以進行相對的指令操作。

基本範例

# 寫入(儲存檔案)
:w

# 另存新檔
:w filename

# 離開 Vim
:q

# 不儲存強制離開
:q!

# paste 模式,此模式可以在使用外部貼上時(ctrl + v),按照來源的格式內容貼上。
:set paste

# 消除文字區塊的 Highlight
:noh

# 顯示行號
:set nu

# 關閉行號
:set nu!

# 範圍縮排(第 3 到第 5 行往左縮一格,往右可以使用 > 符號)
:3,5<

# 將 tab 轉換成 space
:retab

# 將 Vim 的內部編碼換成 utf8
:set encoding=utf8

# 設定一個 tab 等於四個 space 的長度
:set tabstop=4

# 開啟之後,使用 tab 鍵時會用空白取代(長度由 tabstop 決定)
:set expandtab

# 開啟檔案
:e filename

# 搜尋特定字串,支援正規表示式(Regular Expression)
/[字串]
取代字串

Vim 的取代語法格式為 :[範圍]s/[比對字串]/[取代字串]/[g,c,i],其中最前端的 s 代表取代。比對字串支援正規表示式(Regular Expression)。

範圍說明:

名稱 功用
% 代表全部範圍
$ 代表最後一行
1,50s 代表只取代 1 到 50 行
1,$s 代表 1 到最後一行(等同 %s )

參數說明:

名稱 功用
g global,代表範圍內全部都比對
i 忽略大小寫
c 取代前進行確認

基本範例

# 將 aaa 取代成 AAA
:%s/aaa/AAA/g
刪除字串

基本範例

# 刪除沒有內容的空白行
:g/^$/d

# 刪除有空格的空行
:g/^\s*$/d

可視模式(VISUAL)

一般模式 輸入 v 字母即可進入可視模式,該模式的用途是在處理範圍的選取。

在可視模式下,可以透過h(左)、j(下)、k(上)、l(右)選取範圍。

基本範例

# 複製
y

# 複製游標所在的那行
Y
可視整行模式(VISUAL BLOCK)

一般模式 輸入 V 字母即可進入可視整行模式,該模式預設皆是整行選取。

可視區塊模式(VISUAL BLOCK)

一般模式 輸入 ctrl + v 即可進入可視區塊模式,該模式可以針對垂直範圍選擇(例如選擇每一行的第一個字)。

如何在每行行首插入特定字串:

  1. 使用可視區塊模式選擇多行的行首
  2. 輸入 I 進入區塊編輯模式,並輸入文字
  3. 按下 ESC 離開編輯模式

切割畫面

Vim 可以在將畫面切割成數個區塊,方便開發時對照使用。

指令 功能
ctrl-w + v 切割垂直視窗
ctrl-w + n 切割水平視窗
ctrl-w + q 關閉分割視窗
ctrl-w + - 縮小視窗大小
ctrl-w + + 放大視窗大小
ctrl-w + = 平均視窗大小
ctrl-w + 方向鍵 移動聚焦視窗

組合技:程式碼自動縮排

綜合以上功能,可以透過幾個指令的組合讓程式碼自動縮排。

# 在一般模式輸入以下指令
ggVG=
指令 功能
gg 切換到檔案開頭
V 可視整行模式
G 移動到檔案結尾
= 重新排版
Categories: Vim