Vim 映射篇
分類
說明
映射就是快捷鍵的意思,雖然只是簡單的快捷鍵,但這其實水很深,不只是技術深,還有可能用了映射把其他功能覆蓋掉,本篇會分享一些映射的技巧,但使用前仍需三思。
映射命令
查看幫助文件 :help :map-commands
{lhs} 表示左手邊
{rhs} 表示右手邊
:map {lhs} {rhs}
:nm[ap] {lhs} {rhs}
:map! {lhs} {rhs}
在映射命令作用的模式中把鍵系列 {lhs} 映射為 {rhs}。並且映射後的 {rhs} 也被進行映射掃描。這個特性可以用來進行映射的巢狀和遞迴。
範例
:map <leader>q :q<cr>
將 q 映射為 :q<cr> 就是輸入離開的命令。
:nmap <leader>q :q<cr>
將 <leader>q 映射為 :q<cr> 就是輸入離開的命令。
:no[remap] {lhs} {rhs}
:nn[oremap] {lhs} {rhs}
在映射命令作用的模式中把鍵序列 {lhs} 映射為 {rhs} 。禁止對映射後的 {rhs} 進行映射掃描。這個特性可以避免映射的巢狀和遞迴。通常用於重定義一個命令。
noremap 範例
:map j gg
將 j 映射為 gg。
:map Q j
將 Q 映射為 j,而 j 被映射為 gg,所以 Q 被映射為 gg。
:noremap W j
將 W 映射為 j,因為是 noremap,所以 W 不會被映射為 gg。
:unm[ap] {lhs}
:unm[ap]! {lhs}
在映射命令作用的模式中刪除 {lhs} 的映射。
unmap 範例
:map <leader>q :q<cr>
:unmap \q
刪除 \q 映射鍵,因為預設的 <leader> 按鍵為 \,所以刪除映射就變成 \q。
:map
:map!
在映射命令作用的模式中列出所有的鍵映射。
映射與運行模式
查看幫助文件 :help map-overview
關於每個映射命令對應的工作模式的概況。
| 命令 | 模式 |
|---|---|
:map :noremap :unmap |
普通、可視、選擇、運算子等待 |
:nmap |
普通 |
:map! unmap! |
插入與命令行 |
縮寫
:ab[breviate]
列出所有的縮寫。
:ab[breviate] [<expr>] [<buffer>] {lhs} {rhs}
增加一個從 {lhs} 到 {rhs} 的縮寫。如果 {lhs} 已經存在則它會被替換成新的 {rhs}。{rhs} 可包含空格。
範例
:ab ora O'Reilly Media, Inc.
輸入 ora 會自動替換成 O’Reilly Media, Inc.
:una[bbreviate] [<buffer>] {lhs}
從清單中刪除 {lhs} 的縮寫。
範例
:ab fb facebook
定義 fb 縮寫為 facebook
接著輸入 fb 後按下空格、換行、<esc>就會展開縮寫。
:unab fb
取消 fb 縮寫
Leader 引導鍵
要定義一個使用 mapleader 變數的映射,可以使用特殊字串 <Leader>。它會被 mapleader 的字串值所替換。如果 mapleader 未設置或為空,則用反斜杠代替。
大部分用來避免將原先的映射鍵覆蓋所加上的引導鍵。
例如: :map <Leader>A oanother line<Esc>
等同於: :map \A oanother line<Esc>
設定 Leader 變數
若要在 .vimrc 設定 Leader 變數,需在頂部新增,因為此設定只在定義後有效。
.vimrc
" 設定 Leader 為,
:let mapleader = ","
設定好後,上述的範例就變成: :map ,A oanother line<Esc>。
若要設定為特殊字元,需要轉義
.vimrc
" 設定 leader 為空白鍵
let mapleader = "\<space>"
特殊鍵
在插入和替換模式裡,以下字元有特殊意義;其它字元被直接插入。要插入這些特殊字元到緩衝區裡,在前面加上 CTRL-V。
查看幫助文件 :help ins-special-keys
| 字元 | 動作 |
|---|---|
<Esc> 或 CTRL-[ |
結束插入或替換模式,回到普通模式。結束縮寫。 |
<BS> 或 CTRL-H |
刪除遊標前的字元。 |
<CR> 或 CTRL-M |
開始新行。 |
舉例來說,如果要在 :s 替換命令插入 Enter 鍵,輸入 CTRL-V <CR> 它應該會出現 ^M 並且以特殊顏色標示,它其實是一個特殊字元,而非兩個字元組合。
另外還有很多特殊鍵與原本的按鍵相同,例如: + 和 CTRL-V +。當原本的 + 按鍵沒辦法輸入時,可能是在插入模式被映射,使用 CTRL-V + 就能再輸入 + 字元。
映射特殊鍵
查看幫助文件 :help :map-special-keys。
映射特殊鍵和上述的特殊鍵意思一樣,只是這裡為了 :map 再說明一次。
如果要映射功能鍵 F1、F2、F3…,你可以用以下方法:
- 輸入 “#1”、”#2”、… 的字串。
- Vi 相容的辦法,輸入
CTRL-VF1、CTRL-VF2、…。 - 輸入
CTRL-KF1、CTRL-KF2、…。
其他特殊鍵像是 <Esc>、<CR>(Enter 鍵) 等等,可以先輸入 CTRL-V 或 CTRL-K 再輸入特殊鍵。
有時候 CTRL-K 會失靈,例如 CTRL-K <Esc> 不會轉換 <Esc> 特殊鍵,而是取消此動作,反而 CTRL-V <Esc> 比較好用。
查看 CTRL-K 特殊鍵清單幫助文件 :help key-notation。
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!