このクレイジーvim登録魔法(アルファレジスタの増加)をマクロで実行できますか?

このクレイジーvim登録魔法(アルファレジスタの増加)をマクロで実行できますか?

4つの行があります。

foo ["bar"]
baz ["k"]
daskhfkjhadsfj ["askfjhfjdsh"]
dfjhafkjhfha ["skkksks"]

単語をインポートしてレジスタにインポートするマクロを作成したいのですが、レジスタを増やすようにしたいと思います。たとえば、

f"l"ayf"j0
f"l"byf"j0
f"l"cyf"j0
f"l"dyf"j0

後で貼り付けられるようにレジスタが自動的にインクリメントされるようにこれを行う方法はありますか?

jjjj
f"ap   
j
f"bp

私はレジスタ番号とyiを知っています。 - 私はそれをアルファレジスタと一緒に使用したいと思います。また、私が選択したレジスタがクラッシュする可能性があることも知っています。あなたは私のマクロがzとして記録すると仮定することができ、私は使用されたことを示すためにafを使用したいと思います登録します。

マクロを使用してこれを行う方法を提案できますか?

答え1

そしてマクロ?おそらく。そして二つもちろんマクロです!

まず、いくつかの設定を行います。

:set nrformats=alpha
:let @y="\"a"

それでは、クレイジーVim登録ウィザードを見てみましょう。

qzf"l@yyf"GoEsc"yp^A0"yy$dd^Oj0q

戦略は、あるマクロ(y)を使用して次にどのレジスタが使用されるかを追跡し、別のマクロを使用してそれを変更することです。

  • f"l@yyf"あなたがいただいたオリジナルなので、@y代わりに使用しました"a。直接入力するのではなく、yマクロを使用して入力します。"a
  • GoEsc"ypファイルの終わりに移動してそこに新しい行を追加し、レジスタの内容を貼り付けますy
  • ^Aカーソルの下に文字を追加します。そうだったらa今だろうbnrformats=alpha文字にも機能するようにあらかじめ設定しておきました。
  • 0"yy$更新されたテキストをレジスタに戻しますy
  • dd^O出発船を空にして以前にあった場所に戻って
  • j0それはあなたの残りの部分です。

関連情報