vim之map 對映快捷鍵

2021-08-07 20:46:54 字數 3477 閱讀 4159



map是乙個對映命令,將常用的很長的命令對映到乙個新的功能鍵上。map是vim強大的乙個重要原因,可以自定義各種快捷鍵,用起來自然得心應手。

有五種對映存在:

normal mode

也就是最一般的普通模式,預設進入vim之後,處於這種模式。

visual mode

一般譯作可視模式,在這種模式下選定一些字元、行、多列。

在普通模式下,可以按v進入。

insert mode

插入模式,其實就是指處在編輯輸入的狀態。普通模式下,可以按i進入。

select mode

選擇模式。用滑鼠拖選區域的時候,就進入了選擇模式。和可視模式不同的是,在這個模式下,選擇完了高亮區域後,敲任何按鍵就直接輸入並替換選擇的文字了。和windows下的編輯器選定編輯的效果一致。普通模式下,可以按gh進入。

command-line/ex mode

命令列模式和ex模式。兩者略有不同,普通模式下按冒號(:)進入command-line模式,可以輸入各種命令,

使用vim的各種強大功能。普通模式下按q進入ex模式,其實就是多行的command-line模式。

同vim下的其他命令一樣,命令的名字往往由好幾段組成。字首作為命令本身的修飾符,微調命令的效果。

對於map而言,可能有這麼幾種字首:

命令格式::map

其含義是,在:map作用的模式中把鍵系列 對映為 ,可進行對映掃瞄,也就是可遞迴對映。

舉例:

:map td :tabnew .

含義:在其作用模式(普通、可視、操作符)下,輸入td等價於輸入 :tabnew . 。而普通模式下輸入:tabnew . 就是開啟當前目錄

如果再定義繫結 :map ts td,就是指在其作用模式下輸入ts等價於td,也就是開啟當前目錄。不過如果沒有特殊需要,一般不建議遞迴對映。

:noremap和:map命令相對,作用模式和命令格式都相同,只不過不允許再對進行對映掃瞄,也就是定義後的對映就是的鍵序列,不會再對鍵序列重新解釋掃瞄。它一般用於重定義乙個命令,當然如果:map不需要遞迴對映的話,建議使用:noremap

比如::noremap ts td

它的意思是在其作用模式下,輸入ts就是輸入td,但是和:map不同的是,此時td再不會做進一步掃瞄解釋。雖然之前已經定義了td,但是不會對td再做掃瞄。

:unmap是對應取消:map繫結的{lhs},作用模式相同,命令格式 :unmap 。

例如::unmap td

就是取消在其作用模式中td的繫結,比如之前td被繫結為:tabnew .,此時此繫結消失。

:mapclear時對應取消所有:map繫結的,慎用!

:nmap

:nmap是:map的普通模式板,也就是說其繫結的鍵只作用於普通模式。

例如::nmap td :tabnew .和 :map td :tabnew .在普通模式下等效

:nnoremap

:nnorempa和:nmap的關係和:noremap和:map的關係一樣,只是:nmap的非遞迴版

:nunmap

:nunmap和:nmap的關係和:unmap和:map的關係一樣,取消:nmap的繫結。

:nmapclear

:nmapclear是對應取消所有:map繫結的,慎用!

之前可能顯示乙個特殊字元:

到這一步你可以輕鬆的長吸一口氣,因為相關的命令已經都了解了,記不住沒關係,可以隨時:help map一下。

- 小鍵盤 0 到 9

shift+鍵

control+鍵

alt+鍵 或 meta+鍵

同 escape 鍵

游標上移鍵

插入空格

插入tab

等於

有些特殊引數必須對映命令的後邊,在其他任何引數的前面。

如果這些對映命令的第乙個引數是,對映將只侷限於當前緩衝區(也就是你此時正編輯的檔案)內。比如:

:map ,w /a

它的意思時在當前緩衝區裡定義鍵繫結,「,w」將在當前緩衝區裡查詢字元a。同樣你可以在其他緩衝區裡定義:

:map ,w /b

比如我經常開啟多個標籤(:tabedit),想要在各自標籤裡定義",w"鍵繫結,那麼你只要在每個標籤頁裡分別定義就可,其作用域也只在各自的標籤裡。同樣要清除這些緩衝區的鍵繫結也要加上引數,比如:

:unmap ,w

:mapclear

是指執行鍵繫結時不在命令列上回顯,比如:

:map ,w /abcd

你在輸入,w查詢abcd時,命令列上不會顯示/abcd,如果沒有引數就會顯示出來。

一般用於定義特殊鍵怕有***的場合。比如:

:map /header

. 如果定義新對映的第乙個引數是,那麼引數會作為表示式來進行計算,結果使用實際使用的,例如:

:inoremap . insertdot()

這可以用來檢查游標之前的文字並在一定條件下啟動全能 (omni) 補全。

乙個例子:

let counter = 0 

inoremap listitem()

inoremap listreset()

func listitem()

let g:counter += 1

return g:counter . '. '

endfunc

func listreset()

let g:counter = 0

return ''

endfunc

在插入模式下,ctrl-l插入順序的列表編號,並返回;ctrl-r復位列表編號到0,並返回空。

一般用於定義新的鍵對映或者縮寫命令的同時檢查是否該鍵已經被對映,如果該對映或者縮寫已經存在,則該命令會失敗

mapleader變數對所有map對映命令起效,它的作用是將引數替換成mapleader變數的值,比如:

:map a oanother line

如果mapleader變數沒有設定,則用預設的反斜槓代替,因此這個對映等效於:

:map \a oanother line

意思時輸入\a鍵時,在下一行輸入another line並返回到普通模式。

如果設定了mapleader變數,比如:

let mapleader = ","

那麼就等效於:

:map ,a oanother line

和類似,只不過它只作用於緩衝區。

因此在設定mapleader和maplocalleader時最好區分開,不要出現衝突。

vim之快捷鍵

快捷鍵 含義dd 剪下當前行 nddn表示大於1的數字,剪下n行 dw從游標處剪下至乙個單子 單詞的末尾,包括空格 de從游標處剪下至乙個單子 單詞的末尾,不包括空格 d 從當前游標剪下到行末 d0從當前游標位置 不包括游標位置 剪下之行首 d3l從游標位置 包括游標位置 向右剪下3個字元 d5g將...

vim 快捷鍵 Vim快捷鍵,按鍵彙總

第一部分 一般模式可用的游標移動 複製貼上 搜尋替換等 移動游標的方法 h 或 向左箭頭鍵 游標向左移動乙個字元 j 或 向下箭頭鍵 游標向下移動乙個字元 k 或 向上箭頭鍵 游標向上移動乙個字元 l 或 向右箭頭鍵 游標向右移動乙個字元 如果你將右手放在鍵盤上的話,你會發現 hjkl 是排列在一起...

linux之vim快捷鍵

nano是乙個字元終端的文字編輯器ascii,有點像dos下的editor程式。它比vi vim要簡單得多,比較適合linux初學者使用。某些linux發行版的預設編輯器就是nano。vim是vi的公升級版!主要語法著色 vi visual inte ce 視覺化介面 體積雖小功能強大 增強版vim...