2016-08-09 31 views

答えて

-2
%s/^\(.*\):.\{-\}\(,\|\)$/\1: d[\1]\2/ 

多くは、私が「正常な」正規表現があることを知らない、異なっています。 Vimはかなり古く、グループを作るためにはカッコをエスケープする必要があります。\(\)と一致するので、一致数が\{\}の中括弧を使用し、.*?では貪欲でない一致はサポートされず、.\{-\}である必要があります。

これは、行の末尾に、

  • もの(非欲張り)コロン
  • コンマ、または何もライン開始から

    • ものと一致した

    group 1: d[group 1]group2と置き換えられます。

  • +0

    この置換を試すことができ、あなたのソリューションを試してみましたか? –

    +0

    @Meninxはい、もちろん - [スクリーンショット](http://i.imgur.com/TBwuvbK.png)と[screenshot after](http://i.imgur.com/7s7mS4l.png)。何を伝えたいかを明確に説明しようとしましたか? – TessellatingHeckler

    +0

    あなたが把握する私の答えをお読みください。あなたは、質問にOPがしたように正確な行をコピーしていません。 –

    2

    ファイルには、コロンおよび全角コロンであり、これにより処理が少し難しくなります。

    カーソルはあなたが彼らが同じではないことがわかります最初2行目:文字の上にあるときには、gaを入力した場合。

    は実際には、最初の行のためにあなたは全角コロン取得します:

    <:> 65306, Hexa ff1a, Octal 177432 
    

    を第二&三行目のためにあなたが知らコロン取得します:

    <:> 58, Hexa 3a, Octal 072 
    

    両方のコロンを置き換えるには、次のコマンドを実行します。

    :%s/\v("\w+")\s*(:|%uFF1A)\s*\d+(,?)/\1: d[\1]\3/g 
    

    あなたは16進数で全角コロンを表す第2グループの%uFF1Aに気付くことができます。

    +2

    いくつかの有益な人々は、この種の質問を自動的に作成する方法(https://github.com/reinderien/mimic)を見つけました。 ;) –

    0

    再帰マクロを使用することもできます。最初の行で

    、空のQレジスタ

    qqq 
    

    スタートQマクロ

    qq 
    

    は、一度仕事をして、自分自身を呼び出して、マクロを終了(あなたがする必要がある理由です最初にqレジスタを空にします)。ここで

    0yt:f ad[]<ESC>Pf]lC,<ESC>[email protected] 
    

    、我々:

    • は、カーソルD []
    • 後の次の空白文字までの列
    • 移動
    • インサートに
    • ヤンク最初の文字に行きます
    • 出口挿入モード
    • カーソルの前のペースト
    • 012再び右
    • ]チャー
    • 移動する
    • 移動次の行
    • コールに行くことによって、マクロの次の実行を準備コンマ
    • 出口挿入モードと
    • の行の末尾を置き換えます再びマクロ

    その後、マクロ

    q 
    
    の編集を停止します

    そして、あなたは

    @q 
    

    それを実行また

    :%s/^\("\S\{-}"\): \d\+\(,\?\)$/\1: d[\1]\2/ 
    
    関連する問題