Vim 映射篇


建立時間: 2023年4月21日 01:28
更新時間: 2024年11月5日 08:52

說明

映射就是快捷鍵的意思,雖然只是簡單的快捷鍵,但這其實水很深,不只是技術深,還有可能用了映射把其他功能覆蓋掉,本篇會分享一些映射的技巧,但使用前仍需三思。

映射命令

查看幫助文件 :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 再說明一次。

如果要映射功能鍵 F1F2F3…,你可以用以下方法:

  1. 輸入 “#1”、”#2”、… 的字串。
  2. Vi 相容的辦法,輸入 CTRL-V F1CTRL-V F2、…。
  3. 輸入 CTRL-K F1CTRL-K F2、…。

其他特殊鍵像是 <Esc><CR>(Enter 鍵) 等等,可以先輸入 CTRL-VCTRL-K 再輸入特殊鍵。

有時候 CTRL-K 會失靈,例如 CTRL-K <Esc> 不會轉換 <Esc> 特殊鍵,而是取消此動作,反而 CTRL-V <Esc> 比較好用。

查看 CTRL-K 特殊鍵清單幫助文件 :help key-notation

觀看次數: 815
ababbreviateleadermapvim映射
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!