キーがvim内の何かにバインドされているかどうかを検出します


89

キーがvimで何かをするかどうかを理解する方法があるかどうか知りたいのですが。:mapユーザー定義のマッピングを表示するために使用できることは知っていますが、組み込みのものに何かありますか?

たとえば、使用されていないと思ったので、常にCTRL-Wタブを閉じる必要がありました。半年後、私のような、それを使用するいくつかの系列があることが判明CTRL- W CTRL-Sウィンドウを分割し、自分自身を再教育するために悪夢でした。


4
ユーザー定義のマッピングの偶発的な衝突について言えば、mapleader
derenio

回答:


79

ランディモリスによって提案された答えをチェックすると、あなたはそれを見つけるでしょう

:help index 

あなたが望むリストをあなたに与えるでしょう。


非常に便利!何か新しいことを学びたいだけなら、見に行くことができる場所があることを知っておくとよい
JonnyRaa 2015

40

デフォルトのマッピングを確認するには:

:help index

ユーザーまたはプラグインのいずれかによって行われる他のマッピングの場合:

:map
:map!

http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-チュートリアル(Part_1)

最初のコマンドは、通常、視覚、選択、およびオペレーター保留モードで機能するマップを表示します。2番目のコマンドは、挿入モードとコマンドラインモードで機能するマップを表示します。

通常、上記のコマンドの出力は数ページに及びます。次の一連のコマンドを使用して、出力をvim_maps.txtファイルにリダイレクトできます。

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

新しいバージョンのVimが突然より良い代替手段を提供しない限り、これが含まれているキーマップとカスタムキーマップの両方を検索する唯一の方法のようです。mapcheck別の回答で述べたように)カスタムキーバインドのみをカバーします。テキストファイルへの出力とmapcheckの主な違いは、テキストファイルへの出力やを使用:help indexすると/C-w、Vimで次を使用して何かを見つけることができることですC-w
Zoe

34

完全な答えではありませんが、チェックアウトすることをお勧めします :help map-which-keys vimがカスタムマップで使用することを推奨しているキーのリストことをお勧めします。

このヘルプセクションには、特定のキーがアクションにマップされているかどうかを確認する方法に関する推奨事項があります。


19

:map!および:mapを使用して手動でキーを設定し:help 'char(-combination)'、vimにすぐに(/特定のコンパイルオプションから)マップされているキーを見つけます。(少しトピックから外れていますが、それでも立派です(私は思います)::scriptnamesどのファイルがどの順序でソースされているかを確認するために使用します。)


特定のコマンドをトリガーするキーを検索する場合は、次のようにします。:redir keys.txt:map:redir end次に、keys.txtを開き、バインドされているコマンドを検索します。
クリスチャンオーダード2012

18

私はざっと目を通し:help index、未使用のnmapキーのいくつかのリストを作成しました。

  • Q(「Ex」モードに切り替えます)
  • ZZ、ZQを除くZ
  • \
  • <Space>l通常モードと同じ。通常モードで最大かつ最も使用率の低いキー)
  • gb、gc、gl、gx、gy、gz
  • gs(スリープ)
  • zp、zq、zu、zy
  • cd、cm、co、cp、cq、cr、cs、cu、cx、cy
  • dc、dm、do、dp、dq、dr、ds、du、dx、dy
  • gA、gB、gC、gG、gK、gL、gM、gO、gS、gX、gY、gZ
  • zB、zI、zJ、zK、zP、zQ、zP、zS、zT、zU、zV、zY、zZ
  • ] a、] b、] e、] g、] h、] j、] k、] l、] n、] o、] q、] r、] t、] u、] v、] w、] x 、] y
  • [a、[b、[e、[g、[h、[j、[k、[l、[n、[o、[q、[r、[t、[u、[v、[w、[x 、[y
  • CTRL-G、CTRL-K
  • CTRL- \ a --z(拡張用に予約済み)
  • CTRL- \ A-Z(未使用)

更新/コメントしてください。


12

使用できますmapcheck。:-

たとえば、インデントされたファイルにマップ<CR> ,iしたいと思いましたgg=G。のマッピングがすでにあるかどうかを確認するには<CR> , i

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

...しかし、これはマッピングがシーケンスの一部であるかどうかを検出しません。


「o」が通常モードで何かにバインドされているかどうかを次のように確認しようとしました。ifmapcheck( "o"、 "N")== "" | エコー「マッピングなし」ですが、oが「新しい行を開く」に確実にバインドされている場合は「マッピングなし」を報告します。私はそれを間違って使用していますか?
K. Norbert 2014年

@ K.Norbert:これはユーザー定義のマッピングだと思います
全能のラクダのモハ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.