2017-03-15 16 views
0

vimを使用してリスト内のオブジェクトに新しいフィールドを追加したいとします。各オブジェクトは同じ数の行ではありません。ただし、最後のフィールドはオブジェクトごとに同じです。VIMでマクロを記録中に文字列を検索する

新しいフィールドはオブジェクトごとに同じですので、各オブジェクトの最後に静的フィールドを挿入し、前の行にコンマを挿入するvimマクロを作成できると考えました。私の問題は、マクロレコーダー内で文字列検索を実行できないことです。

は、ここで私が達成しようとしているものの例です:q q /last ENTER $ a , ESC p q

Input: [ { "prop1": 10, "prop2": 30, "last": 99 }, { "prop1": 80, "last": 10 }, { "propA": 33, "propB": 90, "propC": 38, "last": 100 } ]

Desired Output: [ { "prop1": 10, "prop2": 30, "last": 99, "new": 0 }, { "prop1": 80, "last": 10, "new": 0 }, { "propA": 33, "propB": 90, "propC": 38, "last": 100, "new": 0 } ]

私はvimのに次のように入力することでこれを実現しようとしました。私は"new: 0をクリップボードにコピーしました。マクロを実行するたびに、文字列 "last"の次のインスタンスではなく、カーソルが始まった行をペーストするため、検索部分が機能していないように見えます。

答えて

0
  • あなたは、このコマンドを実行することができます。

    :%s#\v^(\s*)"last":\s*\d*\zs#,\r\1"new": 0#g

  • あなたはまだマクロ使用していることを達成することができます:

最初のヤンクにこの行:

"new": 0 

は、これらのキーストロークを実行します。

qqq 
qq/last ENTER A,ESCpq 

注:ENTERやESCソリューションの

+0

おかげでキーボード上のキーです。私はあなたが提供した同じマクロを試しましたが、viモードではSublime Textで動作しませんが、viをUNIX端末で実行すると動作することに気付きました。私はあなたの答えを受け入れます。それは私の元の試みを確認して、それを端末で試してもらうように納得させました。 –

+0

**マクロはvi/vim **で実行されることを意図しています。 **異なるエディタ**である昇華で使用したい場合は、バインディングをチェックして、何がサポートされているのか、そしてヴィンテージパッケージに含まれていないものを知る必要があります。その時、あなたはそれがなぜ機能していないのかを知り理解することができます。 –

関連する問題