に置き換え:Vimは私はvimの下、以下の交換を行うようにしようとしていたグループ
"a": 1,
"b": 2,
"c": 3
"a": d["a"],
"b": d["b"],
"c": d["c"]
にvimの下の正規表現は、通常の正規表現からdiffをされているようです。誰も私にそれを手伝ってもらえますか?
おかげで正規表現エンジンの
に置き換え:Vimは私はvimの下、以下の交換を行うようにしようとしていたグループ
"a": 1,
"b": 2,
"c": 3
"a": d["a"],
"b": d["b"],
"c": d["c"]
にvimの下の正規表現は、通常の正規表現からdiffをされているようです。誰も私にそれを手伝ってもらえますか?
おかげで正規表現エンジンの
%s/^\(.*\):.\{-\}\(,\|\)$/\1: d[\1]\2/
多くは、私が「正常な」正規表現があることを知らない、異なっています。 Vimはかなり古く、グループを作るためにはカッコをエスケープする必要があります。\(\)
と一致するので、一致数が\{\}
の中括弧を使用し、.*?
では貪欲でない一致はサポートされず、.\{-\}
である必要があります。
これは、行の末尾に、
とgroup 1: d[group 1]group2
と置き換えられます。
ファイルには、コロンおよび全角コロンであり、これにより処理が少し難しくなります。
カーソルはあなたが彼らが同じではないことがわかります最初と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
に気付くことができます。
いくつかの有益な人々は、この種の質問を自動的に作成する方法(https://github.com/reinderien/mimic)を見つけました。 ;) –
再帰マクロを使用することもできます。最初の行で
、空のQレジスタ
qqq
スタートQマクロ
qq
は、一度仕事をして、自分自身を呼び出して、マクロを終了(あなたがする必要がある理由です最初にqレジスタを空にします)。ここで
0yt:f ad[]<ESC>Pf]lC,<ESC>[email protected]
、我々:
その後、マクロ
q
の編集を停止します
そして、あなたは
@q
それを実行また
:%s/^\("\S\{-}"\): \d\+\(,\?\)$/\1: d[\1]\2/
この置換を試すことができ、あなたのソリューションを試してみましたか? –
@Meninxはい、もちろん - [スクリーンショット](http://i.imgur.com/TBwuvbK.png)と[screenshot after](http://i.imgur.com/7s7mS4l.png)。何を伝えたいかを明確に説明しようとしましたか? – TessellatingHeckler
あなたが把握する私の答えをお読みください。あなたは、質問にOPがしたように正確な行をコピーしていません。 –