2010-03-20 57 views
63

我想知道是否有方法可以確定鍵是否在vim中執行某些操作。我知道我可以使用:map來查看用戶定義的映射,但是有什麼內置的東西?檢測一個鍵是否綁定到vim的東西

例如,我總是有CTRL - W¯¯勢必關閉標籤,因爲我認爲這是不用的。半年後,我發現有一些使用它的序列,像CTRL - W¯¯CTRL - 小號分割窗口,它是重新訓練自己的噩夢。

+4

說到用戶定義的映射的意外衝突,使用[_mapleader_](http://vimdoc.sourceforge.net/htmldoc/map.html#mapleader) – derenio 2013-02-27 13:43:27

回答

60

如果你看看由蘭迪·莫里斯建議的答案,你會發現,

:help index 

會給你你想要的清單。

+0

非常有用!很高興知道有一個地方,你可以去看看,如果你只是想捅一下學習新的東西 – 2015-04-13 13:01:51

27

不完整的答案,但您可能想查看:help map-which-keys以獲取vim建議您在自定義地圖中使用的密鑰列表。

幫助部分提供如何判斷特定鍵是否映射到某個操作的建議。

14

使用「:map!」和「:map」用於手動設置鍵和「:help'char(-combination)'」,以找出哪些鍵已經映射到vim開箱即用(/不在您的特定編譯選項中)。 (稍微偏離主題,但仍regardable(我認爲):用「:輸出scriptnames」看到哪些文件的次序被讀入)

最好的問候, S.

+0

如果你想搜索什麼鍵觸發某個命令,你可以這樣做: :redir keys.txt :map :redir end 然後打開keys.txt並搜索綁定的命令。 – 2012-09-14 16:55:45

27

檢查默認映射:

:help index 

對於其他映射是由用戶或插件來完成:

:map 
:map! 

http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_1)

第一個命令顯示在正常,可視和 select和operator pending模式下工作的映射。第二個命令顯示在插入和命令行模式下工作的地圖 。

通常上述命令的輸出將跨越多頁。 您可以使用以下命令集輸出重定向到 的vim_maps.txt文件:

:redir! > vim_maps.txt 
:map 
:map! 
:redir END 
4

您可以使用mapcheck: - 。

例如,我想映射<CR> ,igg=G縮進文件。 要檢查是否有已經是<CR> , i

if mapcheck("\<CR>", "I") == "" |echo "no mapping" 

映射...但是這不會檢測映射是否是序列的一部分。

+0

我試圖檢查「o」是否被綁定到正常模式下的東西,如下所示:if mapcheck(「o」,「N」)==「」|回聲「沒有映射」,但它報告「沒有映射」,當o肯定是「打開新行」。我用錯了嗎? – 2014-01-03 10:48:40

+0

@ K.Norbert:我相信這是用戶定義的映射 – 2014-04-23 12:06:35

8

我通過:help index脫脂而製成的一些未使用的nmap鍵的列表:

  • Q(切換到 「Ex」 模式),除了ZZ
  • Z,ZQ
  • \
  • GB,GC,GL,GX,GY,GZ
  • ZP,ZQ,つ,ZY
  • CD,釐米,CO,CP,CQ,CR,CS,銅,CX,CY
  • DC,DM,做,DP,DQ,DR,DS,杜,DX,DY
  • GA,GB,GC,GG,GK,GL,GM,圍棋,GS,GX,GY,GZ
  • zB,zI,zJ,zK,zP,zQ,zP,zS,zT,zU,zV,zY,zZ
  • ] a,] b,] e,] g,] h,] j,] k,] 1,[,,] [,[,[,[,[,[,,,,,,,,,,,,,,,,,,,,,,,,,,,,中所提出的] [] [,] [ j,[t,[q,[r,[t,[w,[x,[y,012] CTRL- \ a-z(保留爲擴展名)
  • CTRL- \ A - Z(未使用)

請更新/評論。

相關問題