Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

vim (vi) でマッチした文字列の一部を置換

      2013/07/15

vim (vi)の置換のお話です。

全行のoldをnewに置換したい場合は普通こうしますよね。

:%s/old/new/g

しかしoldで始まってnewで終わる単語のoldをnewにしたい場合、つまりold○○○newoldxxxnewnew○○○newnewxxxnewに置換したい場合は置換対象の文字列に正規表現を使うため、上記のように単純な置換で実現できません。よって、○○○やxxxの部分を変数のように扱う必要がでてきます。これは以下のようにして実現できます。

:%s/old\(.*\)new/new\1new/g

“\(” と  “\)” で囲まれた部分はホールドバッファと呼び、9つまで使うことができ、\1~\9として呼び出すことができます。つまりold・・・・newの・・・・の部分を正規表現”.*”でマッチさせて\1として扱えるため、上記を実行するとnew・・・・newに置換されます。

ホールドバッファは何度でも呼びさせるため、以下のような置換もできます。

:%s/old\(.*\)new/new\1new\1/g

これでold○○○newoldxxxnewnew○○○new○○○newxxxnewxxxに置換されます。

 - IT技術

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
GoogleIMEで記号入力

GoogleIME をローマ字テーブルを眺めていたら、デフォルトで記号に変換でき …

no image
電源ボタンを押して休止状態(ハイバネート)にする@Fedora 14

電源ボタンを押すと、デフォルトではシャットダウンプロセスが走りますが、休止(hi …

no image
起動時にswaponを実行して、スワップを有効にする @ Android Galaxy S with root

Galaxy S は、Google Map 使うとフリーズしてしまうが、スワップ …

no image
screenを起動するとウィンドウの幅が変わる@RHEL6

Windows上からsshログインしたRHEL6でscreenを使うと、ウィンド …

no image
リモートデスクトップに繋がらない with COMODO Firewall

COMODO Firewall を入れたWindows 7に、リモートデスクトッ …

no image
Wireless Tetherで無線LANが繋がらない原因@Galaxy S + Windows 7

Galaxy S + Wireless Tether を使ってテザリングをしよう …

no image
pythonスクリプトをダブルクリックで起動する→拡張子関連づけ詳細設定@Windows 7 with python 2.7

拡張子 .py を持ったファイルをダブルクリックで起動する方法です。 ※Wind …

no image
gvfsを使用して、Windowsの共有フォルダを使用する@Ubuntu 9.04

今までmaznはWindowsの共有フォルダにLinuxからアクセスする時は、m …

GO言語 1.12をインストール@Ubuntu 18.04

GO言語1.12がそろそろリリースされるようですが、2/25にリリースされたので …

no image
Samsung KiesでService Initiali Failed エラー@Windows 7 64bit

Galaxy S管理用のソフト、SamsungのKiesをインストールすると、W …