web-dev-qa-db-ja.com

Vimでマッピングを表示するのと同様のマクロリストを表示する方法はありますか?

:map(または:imap:cmapなど)を介してマッピングを一覧表示する方法があることは知っていますが、vimrcに保存したマクロを一覧表示する方法が見つかりませんファイル(let @a = 'blahblah'のように)。

:split [myvimrcfile]またはその他の方法で)手動で内部を調べることなくこれを行う方法はありますか?

また、可能であれば、マクロとともに表示されるドキュメントを添付して、その目的を説明する方法はありますか?かなり使用しているものがいくつかありますが、約6週間離れています。マクロが何をするのかを教えてくれるコメント(または名前だけでもいいので、正しいものを使用していることを確認します)と一緒にそれらをすばやくリストするといいでしょう。

ありがとう

41
Jason Down

Vimでは、マクロは registers に格納されます。任意のレジスタの内容を呼び出して、マクロとして実行できます(これが@します)。レジスターにあるもののリストを表示するには、 :reg

74
jheddings

を使用して、すべてのレジスタの内容を確認できます。

:reg

コマンド。またはこのような引数文字列

:reg ahx

レジスタa、h、およびxの内容が表示されます。

そうすれば、少なくとも実行されるコマンドのシーケンスを確認でき、うまくいけば、それが互いに区別できるほど明確になります。

レジスタには単にテキストが含まれています。レジスタへのアクセス方法に応じて、コマンドシーケンスをテキストとして貼り付けるか、テキストをレジスタにコピーしてからコマンドとして実行することができます。

レジスターの内容を直接編集する方法は見つかりませんでしたが、ファイルに貼り付けて編集し、同じレジスターに保存することができます。

IHTH。

4
August Mohr

/ u/jheddings が書いたように、マクロはレジスターとして保存され、重要なのはレジスターへのコードの割り当てです(通常は_let @a=blahblah_を使用してvimrcファイルで行われます。表示方法を簡単にするためvimrcファイルで定義したマクロ(私の場合は〜/ .vimrcパスにあります)では、次のvim関数を使用できます。

function! ShowMacros() 10new exe 'r!' . 'grep -B 1 -E "^\s*let @" ~/.vimrc' call cursor(1,1) endfunction

内容:

10new-10行のサイズで新しいvimウィンドウを開きます

exe ...-コマンドを実行し、ウィンドウに配置します

呼び出し...-最初の行の最初の列に移動します

通常モードでチップを渡すことでこの機能を実行できます_:call ShowMacros_

さらに、キーマッピングまたはコマンドを作成して、関数を呼び出す方法を固定することもできます。

:cnoremap sm call ShowMacros()<CR> command! sm call ShowMacros()

This は、上記と同様の関数を記述した元の投稿です。

2
Jakub