2011-03-03 13 views
1


私は、このサンプルのリストを持っている:
cat dog lion Vimの/他のエディタの一括編集

と私はそれを挿入する必要のある、このコード:
<li><img src="images/opcje/{value}.png" alt=""/><label for="wezel">{value}</label><input type="checkbox" id="wezel" {if strstr($opcje,"-{order_number}-")} checked {/if} name="opcje[]" value="-{order_number}-"/></li>

そして例の出力:
<li><img src="images/opcje/cat.png" alt=""/><label for="wezel">cat</label><input type="checkbox" id="wezel" {if strstr($opcje,"-1-")} checked {/if} name="opcje[]" value="-1-"/></li>
速いDRY方法はありますか?

+1

Vimのよりインタラクティブな編集のため。あなたは、このようなもののためにsedやawkを使いたいと思うでしょう - あなたが最初にファイルから猫/犬/獅子のものを読み込んでいると仮定すると仮定します。 –

+1

はい、ファイルから読むことができます。いくつかの例を投稿できますか? – methyl

+0

私は例のマクロで答えた –

答えて

1

マクロを使用できます。今、あなたは両方のファイルを開いている下のウィンドウに

  • :e mylist.txt
  • を行くために、ウィンドウ

  • C-w jを分割する

    1. vim my.xml
    2. :sp:それは次のようなものを働くだろう。マクロを作りましょう! my.xml
    3. の先頭に移動するには、トップ画面
    4. 1Gに行くために最初のリスト項目
    5. C-w kを削除するには、「」マクロ
    6. dwを記録する

      1. qa/\{value\}を入力して戻ると、{value}のメッセージが表示されます。
      2. Pからの前に
      3. {value}にジャンプし、それが
      4. C-w j

      今すぐあなたのマクロを複数回呼び出すマクロ記録を終了するには

    7. q下のウィンドウ
    8. にジャンプし、削除します。 10項目のリストについては、試してみてください。

      [email protected]

      出来上がりを!

  • 1

    これはvimでマクロを使って行うことができます。マクロを記録するには、qを押してから、マクロを保存するキーを押します。例えばqaは、キー(またはレジスタ)aにマクロの記録を開始します。その後、一度置き換えを行いますが、後でマクロを実行すると、リスト内の次の単語についても機能するようにしてください。もう一度qを押すと録音が停止します。マクロを正常に記録した場合は、@aを押すと、レジスタaに保存されたマクロを実行することができます。これは自動的に次の置換を行います。

    +0

    素晴らしい、病気にしてみて! – methyl

    1

    おそらく、次のような小さなスクリプトは、より適切であろう:

    #bash script 
    i=0; 
    for val in {cat,dog,lion}; do 
        i=$((i+1)); 
        sed -e "s/{value}/$val/g;s/{order_number}/$i/g" your_code > new_code_$i 
    done 
    
    関連する問題