1

私はこのコードを持っています:

fill_in "Name",with: "John"
fill_in "Email",with: "user@example.com"
fill_in "Password",with: "supersafe"

の後:に書かれているものはすべてに置き換えたいuser.のでname、.emailpassworduser.

fill_in "Name",with: user.name
fill_in "Email",with: user.email
fill_in "Password",with: user.password

さらに、ここでの主なポイントではありませんが、選択されたビジュアルブロックのある行から別の行に移動する方法 (おそらく vim プラグイン?) はもちろん最適です。

より簡単なオプションは、で置き換えるのではなくuser.、で削除することd$です。ただし、選択の問題は依然として残っています。

Ctrl-V通常の選択で試してみましたが、:文字が各行の異なる列に配置されているため、目的の動作がありません。

ありがとう

4

3 に答える 3

5

または、(私のように)クレイジーな正規表現ランドを入力する代わりに、手動で編集するために使用するコマンドを使用したい場合:

:g/with:/norm yi"$"_ca"␣user.C-r"Escv``.u`

  1. g:/with:/(「with:」を含むすべての行に適用されます (バッファに他の行が含まれていない場合、これは実際にはオプションです)
  2. norm通常モードでは次の「キー」:

    • yi" (最初に引用された値をヤンクします)
    • $ (行末に移動...)
    • "_ca" (引用されたテキストを変更) ␣user. (で始まるuser.) C-r" (および元のヤンクされたテキスト) Esc (完了)
    • v``.u` (貼り付けたビットを小文字にする)

好みの問題かもしれませんが、私にはとても合っています。

複雑?ここにトリックがあります:私が実際にqqしたことは、1行で編集を実行し( ...でマクロを記録q)、次に

:%norm @q

すべての行に適用します

デモ: (まだ``. vを使用していることに注意してください)guinstead of\``.u :

ここに画像の説明を入力

于 2013-09-10T19:07:31.463 に答える
3

これは、実行したい行を強調表示するだけで機能します。

非魔法の正規表現

s/.\{-}"\(.\{-}\)".\{-}:\zs.*/ user.\L\1/g

非常に魔法の正規表現

s/\v.{-}"(.{-})".{-}:\zs.*/ user.\L\1/g

これは引用符で囲みます。これは\zs、コロンの後に一致開始を使用するためです。user.したがって、コロンの後のすべてが、引用符で囲まれたものの小文字バージョンに置き換えられます。\L後の文字列を小文字バージョンに変換します。

于 2013-09-10T18:20:53.600 に答える