web-dev-qa-db-ja.com

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

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

たとえば、私はいつも持っていた CTRL-W タブを閉じる必要があります。これは使用されていないと思ったからです。半年後、私はそれを使用するいくつかのシーケンスがあることを発見しました CTRL-WCTRL-S ウィンドウを分割するために、それは自分自身を再訓練するのは悪夢でした。

80
K. Norbert

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

:help index 

必要なリストが表示されます。

72
skeept

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

:help index

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

:map
:map!

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

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

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

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

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

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

30
Randy Morris

_:map!_と_:map_を使用してキーを手動で設定し、:help 'char(-combination)'を使用して、vimですぐにマッピングされるキーを特定します(/特定のコンパイルオプションから) 。 (少しトピックから外れていますが、まだかなり重要です(私は思う):_:scriptnames_を使用して、どのファイルがどの順序でソースされているかを確認します。)

17
shindojin

:help indexおよび未使用のnmapキーのリストを作成しました。

  • Q (switch to "Ex" mode)
  • 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(未使用)

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

14

mapcheck.:-を使用できます

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

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

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