私は、新しい vim のみの機能をすべて学んでいるわけではありません。vim の前に vim を学びましたが、このソリューションは vi っぽいエディターで動作します。おそらく、vim 機能を使用したさらに優れたソリューションがあるかもしれません。
この場合、私が通常行うことは、:map
コマンドを使用して複数のキーをバインドし、それぞれが上記の一部を実行することです。しばらくの間、なくても生きていける鍵をいくつか選ぶ必要があります。g
これにはandをよく使いますv
。@Neil Forrester は、素晴らしいアイデアであるファンクション キーの使用を提案しました。
これで、一致グループを示す括弧付きの正規表現パターンが表示されました。(vi または vim では、実際には各括弧の前にバックスラッシュを付けて「魔法」にする必要があります。ドキュメントを参照してください。) ただし、この解決策では、代わりにf
コマンドを使用します。キャラクター; および/またはt
文字にジャンプするコマンド。 f
文字のt
直前までジャンプします。したがって、f"
文字列の最初の二重引用符にジャンプし、次に を使用t"
すると、2 番目の二重引用符の直前までジャンプできます。だから、シーケンスf"lyt"
最初の二重引用符を見つけ、右に 1 文字移動し、次の二重引用符まですべてをヤンクします。しかし、ヤンクされたテキストを 26 の名前付きバッファの 1 つに格納しましょう。バッファ "a" を使用してみましょう:名前付きバッファ "a" を参照するf"l"ayt"
ために使用する必要があるため、これは少し混乱しますが、他にも探している文字"a
がたくさんあります。"
また、「マップ」内では、Enter キーのキーストロークを記録する必要がある場合があります。これを行う方法は、Ctrl+V を押してから Enter キーを押すことです。として表示され^M
ます。以下の私のコードでは、実際の後に実際のキーが続くことを意味するのではなく、Enter キーを表す単一のキー^M
を意味することを意図していないことがわかります。^
M
これで、2 つのキー マッピングを作成できます。v
ステップ1と2をg
実行し、ステップ3と4を実行するようにバインドしましょう.
:map v /^Description "/^Mf"l"ayt"
:map g /^TEXT "/^Mf"ldt""aP
実際に ^M を入力するのではなく、Ctrl+V と Enter を使用することを忘れないでください。編集せずに上記をコピー/貼り付けすることはできません。
次に、キーを使用v
して手順 1 と 2 を実行し、 キーを使用g
して手順 3 と 4 を実行します。
vim でスクリプトを使用してこれを行う方法もあるかもしれませんが、一方、これをスクリプト化したい場合は、短い Python スクリプト (または好みの言語) を書きたいだけかもしれません。上記の 2 つの主要なマクロは、vim でこの種のことを実行するための高速な方法を実際に提供します。
vimには、入力したキーを記録する機能があり、この種のマクロをすばやく作成するために使用できると思います。