Home > Vim Hacks > Hack #27: 選択範囲の数値を増分する

Hack #27: 選択範囲の数値を増分する

問題

Normal modeで<C-a>を打鍵するたびに、カーソル下の数値を1加算した値に置き換えることができます。また、3<C-a>などと打鍵することによって一度に指定した数値分だけ増分することができます。

しかし加算したい数値が複数あるときに、いちいちカーソルを移動して各数値の位置に移動して<C-a>を打鍵するのは非常に困難です。

解決

以下のコマンドで編集中バッファ内に現れる全ての数値を1加算します。

:%s/[0-9]\+/\=submatch(0)+1/g

また、Visual modeで範囲を選択してから上記コマンドを入力すると、選択範囲の行に現れる全ての数値を1加算します。

before after

議論

<C-a>はmotionを受け取って範囲を指定して一気に処理するという機能が標準で提供されているわけではないので、上記のような別の方法が必要となります。

多くの場合:s[ubstitute]/{pattern}/{string}/[flags]{string}部分には置き換え文字列を記述しますが、この部分を\=で始めることにより、任意の式を用いて記述することができます。<C-a>ではなくVimの式の+を用いて加算しています。これは:echo 1+2などで使われる+です。

なお、同様に数値を減らすには<C-a>のかわりに<C-x>を、あるいは:%s/[0-9]\+/\=submatch(0)-1/gを用います。

参考

  • :h sub-replace-expression

ujihisa

このエントリーをはてなブックマークに追加
はてなブックマーク - Hack #27: 選択範囲の数値を増分する
Share on Facebook
Post to Google Buzz
Bookmark this on Google Bookmarks
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://vim-users.jp/2009/06/hack27/trackback/
Listed below are links to weblogs that reference
Hack #27: 選択範囲の数値を増分する from Vim-users.jp

Home > Vim Hacks > Hack #27: 選択範囲の数値を増分する

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top