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
パイプを使ったループの中で使用した変数をループ外で参照できない@bash

bashでパイプを使って以下のような処理をすると、ループ内の変数の値をループ外で …

no image
Firefox 3.6.x のメモリ消費が激しすぎる

Firefox を長時間使っていると、メモリ消費が700MBを超えています。 タ …

no image
lxc-cloneでoverlayfsを使ってみる@Ubuntu 14.04

既存Linuxコンテナのディレクトリをコピーして、LXCのクローン環境を作るので …

no image
rubyのirbで補完@cygwin

cygwin上でrubyのirbを動かしている時に、ふと補完ができたら便利だと思 …

no image
cygwin上にSphinxをインストール

Cygwin 上に Sphinx をインストールしたときのメモです。 pytho …

no image
CPU数を動的に変更する@CentOS 5.5

カーネルにパラメータ(maxcpus)を与えて、OSで使うCPU数を変更できるこ …

no image
apt系コマンド

インストールの管理にDebian系ではaptを使いますが、すぐ忘れてしまうのでメ …

no image
ブラウザ上でのWYSIWYG HTMLエディター

このサイトで使用しているWordPressでも記事作成するときに使用しているよう …

no image
OpenStackをインストール中にはまった@Ubuntu 12.04

OpenStack は様々なコンポーネントがあるため、インストールのための支援ツ …

no image
WordPress高負荷対策→同一ApacheのIPのアクセス数制限@CentOS 5

一日に数回サーバ高負荷で応答がなくなってしまって困っていました。load ave …