2

私が次のようないくつかの行を持っているとしましょう:

$repeat_on =  $_REQUEST['repeat_on'];    
$opt_days = $_REQUEST['opt_day'];  
$opt_days = explode(",", $opt_days);

... 等々。

ビジュアルモードを使用してすべての行を選択するとします。行=の最後まですべてを置き換えて、次のようにするにはどうすればよいですか。

$repeat_on = NULL;    
$opt_days =  NULL;
$opt_days =  NULL;
4

2 に答える 2

7

ブロックを選択した状態で、次の代替を使用します。

s/=.*$/= NULL;

=置換正規表現は、行の間と行末を含むすべてを。に置き換えることにより、各行を変更== NULL;ます。

コマンドの最初の部分は、置き換えられるものに一致する正規表現です=.*$

  • =文字通り取られます。
  • ドット.任意の文字を意味します。
  • つまり、0個以上の任意の文字を.*意味します。
  • これは行末で$終了しますが、実際にはここでは必要ありません。。なしでも試してください。$

したがって、正規表現は=各行の最初の領域の後の領域と一致し、その領域を置換である。に置き換え= NULL;ます。=置換するマッチの一部であるため、置換に含める必要があります。

ブロックを選択し、を押し:てコマンドを入力すると、コマンドラインには、次のような視覚的選択の範囲が自動的にプレフィックスとして付けられます。

:'<,'>

上記のコマンドを入力し続けると、コマンドラインは次のようになります。

:'<,'>s/=.*$/= NULL;

これにより、選択したビジュアルブロックに置換が適用されます。

g1行に複数の置換が必要な場合は、フラグを追加する必要があります。

:'<,'>s/=.*$/= NULL;/g
于 2012-10-11T17:37:41.630 に答える
0

いくつかの選択肢:

ビジュアルブロック(高速)

最初の行/文字で...Wl<C-v>jjCNULL;<Esc>bi<Space><Esc>

マクロ(高速)

最初の行/文字で...qqWllCNULL;<esc>+q2@q

:norm(最速)

最初の行で...3:no<S-tab> WllCNULL;<Enter>

または、視覚的に線を選択した場合は、最初の3を省略します。

于 2012-10-11T23:24:34.657 に答える