q"
名前のないレジスターへのマクロの記録開始 ( ) とマクロ記録の停止( )の両方に使用できるカスタムの単一キー Vim マッピングを作成したいと考えていq
ます。
Vim が記録モードにあるかどうかを Vim スクリプトから検出できますか?
録画モードの検出が可能な場合、録画モードで自分の機能が呼び出された場合 (録画を停止する)、問題はありますか? つまり、関数呼び出しがマクロ内に記録される可能性はありますか?
これはお勧めしません。キーを 2 回押すだけで録音を開始でき、レジスタを柔軟に選択できるからです。
とはいえ、これを行う方法は次のとおりです。録音モードを直接検出する方法はわかりませんが、キーを押すたびに自分自身を再マッピングするマッピングを作成して、録音の開始と停止を交互に切り替えることができます。
" Helper mappings
nnoremap @{ :nmap ; @}<CR>qq
nnoremap @} q:nmap ; @{<CR>
" Toggle recording
nmap ; @{
" Playback
nnoremap , @q
マップする独自のキーを選択してください。
また、記録レジスタに使用することはお勧めしません"
。上書きされやすいからです。
へのマッピングを使用できますq"<esc>
。通常モードにあるとき (および設定されていないとき) にのみ記録を開始すると仮定するとinsertmode
、これはまさにあなたが望むことを行うでしょう。