2

Vimでマクロを使えると便利だと思いました。特に録音するqのですが、録音先のレジスターに保存されているものの読み方がわかりません。

具体的な例として、LaTeXドキュメントの作成にVimを多用し、それに関連して、現在の行の先頭にを置くマクロを作成して%、このコードをコメントアウトしました。私は次のように録音することによってこれを行いました。キーを押しましたq u Home i % Esc q。これで、を押すことでそのマクロを再生できるようになり、そのマクロを頻繁に使用するため、ファイル@uに入れることにしました。主題を調べたところ、使用するキーストローク(エスケープキーなど)を取得するには+.vimrcを使用する必要があることがわかりました。私CtrlV

let @u='^[OHi%^['

ここで、 +と+を使用して作成^OHしました。さて、Vimを起動すると、レジスターの内容は当然のことですが、マクロをで記録しただけの場合、レジスターは次のようになります。CtrlV Home^[CtrlV Escu^[OHi%^[q

<80>khi%^[

私はこれが何を意味するのか理解しようとしました。同じことをしますが、Vimのヘルプページのいくつか(より正確には、、)を調べた後、+Ctrlを使用して同様のことを書き込もうとすると、それでも理解できません。V:help key-notation:help i_CTRL-V:help i_CTRL-V_digit

これを理解したいという私の動機は、私が記録したマクロが何をしているのかを読みたいということです。レジスタの内容がどのように生成されるかを理解すれば、同様の結果を生成することで理解できるかもしれません。たとえば、記録したマクロが+を使用した場合と同じ構文に従っている場合、Ctrl+に加えて、生成された可能性が最も高いキーストロークを確認し、どれが一致Vするかを確認できます。CtrlV

4

1 に答える 1

1

マクロはその仕事に適したツールではないと思います。$ vimtutor今すぐ従う必要があると思います。行の先頭に<Home>i%<Esc>を挿入する正しい方法ではありません。%

nnoremap <leader>% I%<Esc>

より良い、より正しい解決策のようです。

<80>xx特別なキーを表すためにVimによって内部的に使用される制御文字です。$ man termcap可能な値のリストについては、を参照してください。

于 2012-07-18T20:07:23.063 に答える