などの非 ASCII 文字を含む文字列を VIM のレジスタから貼り付けようとしています。Ctrlrこの文字列をファイルに貼り付けながら、非 ASCII 文字を自動的にエスケープするにはどうすればよいでしょうか。
基本的に、私が実現しようとしているのは、CtrlWvim が ^W として表示するような、いくつかの (非 ASCII) 文字を含むマクロを記録することです。マクロを取得し (レジスタを調べてマクロ文字列 (つまり @a=^W) を取得)、それをキーマップとして .vimrc ファイルにコピーして、キーを押すとそのマクロが実行されるようにしたいと考えています。
CtrlW.vimrc ファイル内や貼り付ける場所で ^W を変更せずに、これを自動的に (またはできるだけ速く) 実行したいと考えています。
答え1
初めに、制御シーケンス ASCII範囲内である(^W
コードポイント23)ですが、いわゆる印刷できない文字。これらを~/.vimrc
ファイルにそのまま貼り付けることができます (端末の選択と貼り付けではなく、Vim レジスタを使用する限り)。逃げる必要はない( のファイル形式によっては、^J
とにのみ問題が発生する場合があります。)^M
~/.vimrc
そうは言っても、これらの制御シーケンスを回避する簡単な置換を次に示します。
:echo substitute("example: \<C-A>\<C-Z>", '[\x00-\x1f]', '\="<C-" . nr2char(char2nr(submatch(0)) + 64) . ">"', 'g')