Vim でバッファにあるファイルの中身を一括置換

:bufdo :%s/foo/bar/g | :w

Vim をタスクトレイから起動する VimTray をリリースしました

  VimTray という Vim をタスクトレイから起動する Windows アプリケーションを作ってみました。
  実は、8 月くらいにすでに作り終わっていたのですが、バグが残っていたのでアナウンスしていませんでした。
  今日突然直したくなったので直して、アナウンスすることにします。

  VimTray は、タスクトレイに駐屯して Vim を起動するという単純なことしかできません。

  VimTray

  アイコンをダブルクリックすると Vim が開きます。右クリックすると上記のようなメニューが表示されます。

  ちょっと変わった機能として、mru.vim という、いわゆる最近使ったファイルを管理するプラグインを使うと、上記のようにメニューに最近使ったファイルがリストされます。

  あと、Vim 7.0 以上を使っている場合は、ファイルをタブで開くようにすることもできます。

  VimTray

  VimTray は Google Code の Project Hosting で配布しています。
  ライセンスは、修正 BSD ライセンスです。

- vimtray - Google Code
  http://code.google.com/p/vimtray/

  バイナリのダウンロードやソースのダウンロードも上記 Google Code Project Hosting からお願いします。

  Windows 環境で Vim を利用している方は、是非お試しください。

  なお、Project Hosting は Subversion が使えるので svn でソースをチェックアウトすることができます。
  最新版を取得するには、http://vimtray.googlecode.com/svn/trunk/ をチェックアウトしてください。

$ svn checkout http://vimtray.googlecode.com/svn/trunk/ vimtray

  開発言語は、あまり慣れていない Delphi 7 で、Windows XP (SP2) 上でコンパイルしています。

Vim を 256 色で使いたい

  以前ターミナルを 256 色にしたのですが,せっかくなので Vim も 256 色で使いたいと思って以下のようなスクリプトを書きました.

#!/usr/bin/env perl

use strict;
use warnings;

my $fg = "\x1b[38;5;";
my $bg = "\x1b[48;5;";
my $rs = "\x1b[0m";

my $color = 0;

for (my $row = 0; $row < 32; ++$row) {
    for (my $col = 0; $col < 8; ++$col) {
        print get_color($color);
        $color++;
    }
    print "\n";
}

sub get_color {
    my ($color) = @_;
    my $number = sprintf '%3d', $color;
    return qq/${bg}${color}m ${number} ${rs} ${fg}${color}m${number}${rs} /;
}


  さて,こいつは何をするかというと,使っているターミナル上で何番の番号が何の色かを表示するものです.
  自分の環境では以下のようになります (クリックして大きくなります).

  

  この番号はそのまま Vim の色指定の番号になります.
  つまり ctermfg とか ctermbg とかに,表示された色を見ながら番号を指定することができます.
  例えば,上記スクリプトで表示された色番号 21 を使いたい場合は,以下のように設定する感じですね.

hi diffAdded    ctermfg=21


  こうやって設定して vim -d をしたサンプルです.淡い色も使えていい感じです.

  

PuTTY + screen + Vim + マウスが便利すぎる件

  PuTTY では Vim の操作にマウスが使えるということを以下のページで知ったので,早速試してみました.

- おさかなラボ - vimのマウス機能が便利すぎる件
  http://kaede.to/~canada/doc/vimiythyyuceoioei

- おさかなラボ - 便利過ぎるvim + マウスをscreenで使う
  http://kaede.to/~canada/doc/vimmouse-with-screen

  設定は以下のようにすれば OK です.

set mouse=a
set ttymouse=xterm2


  動きが面白かったので,Wink でキャプチャしてみました.

- PuTTY + screen + Vim + マウスが便利すぎるキャプチャ
  http://pocari.org/demo/vim-mouse/vim-mouse.html

Vim 7 で configure で生成されたファイルのありか

vim70/src/auto/config.mk

  にある.

  LDFLAGS が記述されているファイルは src/auto/config.mk で,
  config.log もここにある.

Vim 7 のメニューの文字化けを直す方法

  これは環境依存のようなきもするけど,Vim 7 on Solaris 10 (JDS) の環境ではメニューが文字化けする.
  どうも,変なメニューファイルを読みにいっているみたいなんだけど原因が不明.

  そこで強引に .vimrc で直してみた.

"" メニューを強制的に EUC-JP にする
source $VIMRUNTIME/delmenu.vim
set langmenu=ja_JP.euc-jp.vim
source $VIMRUNTIME/menu.vim


  これを .vimrc に記述してあげることで,メニューがきちんと ja_JP.euc-jp.vim を見に行ってくれて文字化けが解消された.

- 文字化け
  文字化け

- 修正後
  修正後

文字の補完が賢くなった Vim 7

  Vim 7 になって文字の補完も賢くなったようだ.
  Vim では Ctrl-P や Ctrl-N で文字を補完してくれるが,これが Vim 7 になって見やすくなった.

  例えば,以下の図.

  Vim 7

  適当に Java とか打ってみる.ここでおもむろに Ctrl-P を押すとピンク色のメニューがでてきてここに文字列の候補がでてくる.
  後は,十字キーなんかで選択すれば OK.

  Vim 7 はかなり便利.

タブ・インタフェースを採用した Vim 7

  Vim 7

  Vim 7 のファイナル・ベータがリリースされたということで,いち早くインストールしてみた.
  いろいろ新機能が増えてみるみたいだけど,タブ・インタフェースが採用されたことが一番いいかも.

: tabe[dit] filename


  で filename がタブで開く.タブを選択するには

: tabn[ext]


  で次のタブを選択することができて,

: tabp[revious]


  で前のタブを選択することができる.
  
  タブを閉じるのは

: tabc[lose]


  で OK.

  gvim の場合は,もちろんマウスで選択することもできるし,コンソールでももちろん上記コマンドで移動できるのがいい.

vim でのオススメ plugin

  http://d.hatena.ne.jp/secondlife/20060203/1138978661

  いろいろ便利そうな Vim のプラグインの紹介.

  ソースを気が利いた風に整形してくれる Align.vim や
  vim の正規表現を ruby や perl の正規表現な入力でできる eregex.vim なんかは早速導入.

  選択範囲をコメントアウトする commentout.vim は map で実現できているので導入を見送り.

  例えば,以下のようにして autocmd でファイルタイプ別に記述してあげればいい.
  ,c でコメントアウト ,u でコメント解除

" Perl
autocmd FileType perl
    \   map ,c :s/^/# /<CR>:noh<CR>
    \ | map ,u :s/^# //<CR>:noh<CR>

" PHP
autocmd FileType php
    \   map ,c :s/^/\/\/ /<CR>:noh<CR>
    \ | map ,u :s/^\/\/ //<CR>:noh<CR>

VimWiki

  http://vimwiki.net/

  Vim の TIPS やスクリプトなどの Wiki.
  面白そうな TIPS が何個かあった.