既存のマッピングのリストを簡単に検索するにはどうすればよいですか?


7

時々、現在のマッピングのリストを検索したいと思います。マップされたキー(何をする/<Space>aか)またはコマンド(どのキーがマップされるか)を検索します/MyFunction()<CR>

これらのマッピングを:map(または:nmap:vmapなど)で出力できることはわかっていますが、これにより、スクロールのみが可能で検索モードを使用できないウィンドウが開きます/

したがって、このリストで検索したい場合redirは、コマンドの結果を新しいファイルに入れて、vimで開いて検索モードを使用する必要があります。

:redir > foo
:map
:redir END
:e foo

このワークフローは自然ではないと思います:

  • 私がやりたいことに比べて、たくさんのコマンドを使っています。
  • それは私が削除しなければならない新しいファイルを作成します。

だから私の質問は、現在マップされているキーで検索を行うためのより自然な方法はありますか?

これらのコマンドを実行する関数と、関数を簡単に呼び出すカスタムコマンドを作成できることはわかっていますが、もっと簡単な方法はないのではないかと思っていました。

回答:


3

マッピングを検索する非常に簡単な方法は、プラグインを使用することです。しかし良いニュースは、あなたはおそらくすでにそれを持っているということです。

コマンドは次のとおりです。

:Unite mapping -start-insert

...次に、基本的に検索キーワードを直接入力して、リストを絞り込みます。


プラグインがなくても、マップのプレフィックスとそのタイプを指定することにより、マップ結果を絞り込むことができます。例えば:

:verbose xmap <leader>

...定義されたマッピングはビジュアルモードでのみ表示され、リーダーキーで始まります。そこでは1つの文字に限定されません(使用できるxmap <leader>aなど)。


以前にこのプラグインについて聞いたことがありますが、試したことがないので、試してみてください。また、2番目の提案は適切ですが、2番目のタイプの検索(つまり、この機能を実行するためにどのキーがマップされているか)を実行できません。
statox

確かに-あなたは最初の提案でそれを行うことができます。そして 'Unite'(とその拡張)= Vimプラグインのスイスナイフ:)
VanLaser

1
よろしくお願いします。よろしくお願いします!
statox

2

:map:imapそして友達は引数を取るので、一般的なコマンドを発行してからフィルタリングするのではなく、get goから特定のコマンドを発行するだけで済みます。

:imap <CR>

それは感謝するための素晴らしい方法ですが、VanLaserの回答については、質問があります。これにより、MyFunctionどのキーがマッピングされてそれを呼び出すかを知るために検索を行うことができません。
statox
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.