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-V
F1
、CTRL-V
F2
、…。 - 輸入
CTRL-K
F1
、CTRL-K
F2
、…。
其他特殊鍵像是 <Esc>
、<CR>
(Enter 鍵) 等等,可以先輸入 CTRL-V
或 CTRL-K
再輸入特殊鍵。
有時候 CTRL-K
會失靈,例如 CTRL-K
<Esc>
不會轉換 <Esc>
特殊鍵,而是取消此動作,反而 CTRL-V
<Esc>
比較好用。
查看 CTRL-K
特殊鍵清單幫助文件 :help key-notation
。
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!