Windows 版 vim を使っています。
といってもちょっと便利な vi 程度にしか使っておらず、カスタマイズは最小限で
済ませています。コマンドシェルから gvim を起動してファイル毎に別のエディタを
開くスタイルです。
shell + gvim の組み合わせは X68000 の Ko-Window 上で vi (stevie) を使う
場合とよく似ています。shell と別ウィンドウでいくつでも開けるからです。
ほとんど同じ感覚で使用しています。
vim は vi 系のテキストエディタです。
コマンドシェルからヒストリを使ってエディタを呼び出していると、すでに開いている
ファイルなのに、つい多重で開いてしまうことがあります。
同じファイルを複数のエディタで同時に開くのはまずいです。
最後に保存した方の更新しか残らないからです。
stevie の時はよくミスしがちでした。
幸い vim の場合はあまり困ったことにはなりません。
ファイルを開くと .swp ファイルが作られるので、そのファイルがすでに編集中なのか
わかります。すでに .swp ファイルがあるなら、このまま開くか ReadOnly
で続けるか、起動を中止するか確認してくれます。
便利な反面、衝突するたびに動作を選択して中止し、起動中のウィンドウから
目的のものを探し出すのはだんだん面倒になってきます。
そこで、下記のようなプログラムを作って使っていました。
・指定したファイルがすでに gvim で開いているかどうか調べる
・もしすでに存在していたら、そのウィンドウをアクティブにする
・無ければ新たに gvim でそのファイルを開く
もしかしたら vim 自体に何らかの設定があったり、最初から似たような機能が付いて
いたり、または同等のものが存在しているのかもしれません。
必要あるかどうかわかりませんが置いておきます。
使い方
runvim [option] [<ファイル名>] -e<起動するgvimのパス>
たとえば alias や shell の関数定義で下記のように定義しておきます。
(gvim のパスは任意)
alias vi='runvim.exe -eC:/app/Vim71/gvim.exe'
上記定義した後「vi ファイル名」で起動すると、すでに開いていれば対応する
gvim を最前面に持ってきて入力フォーカスします。
無ければ gvim を通常起動します。
以下 vim (7.1) の個人的な設定です。
Vim 自体は本家 vim.org からダウンロードしたパッケージをそのままインストール
しています。
" $HOME/_vimrc se ai columns=80 lines=46 hls nobackup ruler se guifont=MS_ゴシック:h8:cSHIFTJIS se linespace=0 se guioptions=grLt se mouse=a se iminsert=0 imsearch=0 se enc=cp932 se guioptions-=a se statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%b\ %B\ %l,%c%V%8P lan en lan cty en lan mes en lan tim ja syntax enable hi Constant guifg=#a03800 hi PreProc guifg=#008010 hi Folded guifg=#808000 guibg=#fffffe hi FoldColumn guifg=#808000 guibg=#fffffe so $HOME/format.vim let format_join_spaces=2 se foldmethod=syntax
実はフォントは難ありで、この設定だと小文字のエル=l と大文字のアイ=I の区別が
付かないけど慣れました。このままプログラム書いてます。
format.vim は日本語で join したときに空白が入らないようにするため使用しています。
doxygen syntax を追加しています。
Vim を install したフォルダ内の filetype.vim を書き換えます。
"setf cpp" や "setf c" と定義されているところを全部 "setf cpp.doxygen"
のように変更します。".doxygen" を追加するわけです。
これで syntax として cpp が選択されると同時に doxygen のキーワードハイライト
が有効になります。
折りたたみ機能も利用しています。
そのまま folding を有効にすると C ソースコードのブロックも折りたたまれて
しまうので、その設定は削除。その代わり doxygen のコメントを部を折りたためる
ようにしています。
(1) syntax/c.vim の中の syntax ~ fold ~ と書かれた行の "fold" を全部削除
たとえば下記のように (syn ~ で始まる場合もあり)
syntax region cBlock start="{" end="}" transparent fold ↓ syntax region cBlock start="{" end="}" transparent
(2) syntax/doxygen.vim に下記の 2行を追加
syn region myDoxFold start="/\*!" end="\*/" transparent fold keepend syn sync fromstart
折りたたみ操作は vim 上で zr または zm です。
.hlsl や .fx 等、自分が使うファイルの syntax も追加しています。
専用の syntax ファイルが無くても、C言語系なら c や cpp を割り当てるだけで
見やすくなります。
たとえば filetype.vim を書き換えてこんな風に。(fsc は自前の C言語スクリプト)
" filetype.vim au BufNewFile,BufRead *.fsc setf cpp.doxygen
Vim の syntax や script ファイルは下記ページで検索できます。
関連エントリ
・vi の話