2008/01/31

Recent entries from same category

  1. Software Design 2018年7月号「Vim 絶対主義」の執筆に参加しました。
  2. Vim の :terminal の中から外の Vim を操る方法
  3. Vim と日本語入力の話。
  4. Windows で子プロセスの標準入出力バッファリングを無効にする
  5. Vim で端末機能が動くようになった。

vimを使っていらっしゃる半数以上は開発者の方かと思います。
今日は、そんな開発者の方に便利なtipsをご紹介。

Makefile編集中のファイル名補完

一般的なファイルシステムでは、ファイル名に「=」という文字を使うことが出来ます。ただ、実際に使っているかどうかといえば、めったに使われる事はありません。なのに
TOP_DIR=/usr/inc
まで打って<c-x><c-f>とタイプしてもファイル名が補完されないのは、悲しかったりします。 こんなときには以下の設定をvimrcに入れておくと便利です。
autocmd FileType Makefile setlocal isfname-== isfname+=32
通常、フォルダ名やファイル名に「=」やスペースを使う事はまずありませんし、*unix系の開発を経験された事がある方ならば、スペースが混じってしまう事は一大事になる事もご存知かと思います。
この設定だと、Makefileにだけ適応されますし補完もサクサク出来ますね。
ちなみにWindowsで「C:/Program Files/hogehoge」を補完されたいならば
TOP_DIR="C:/Progra
と「"」を先頭にしておく事で補完出来ます。
もしかすると、*unixな方は「I」や「L」もisfnameから消してしまう事で
CFLAGS=-I/usr/inc
とか
LDFLAGS=-L/usr/li
でも補完出来て幸せかもしれません。

長いブロックや複数ブロックがある言語の開発

jsp(JavaServerPages)やASP(ActiveServerPage)、php等で開発される場合には、開始タグで各言語の処理を開始します。例えばphpであれば
<?php
$f = fopen("test.dat", "r");
と「<?php」が開始タグとなります。
vimでは各言語に合わせてシンタックスハイライト表示する機能を持っていますが、この開始/終了タグを辿って色付けをしています。この開始/終了タグの検索は、最悪ファイル全体を検索してしまい重たくなってしまう可能性がある為、vimでは閾値範囲内しか検索しないようになっています。
ただ、全ての言語でこの閾値が相応しいものとは限らず、まれに長いブロックが存在するとシンタックスハイライトが効かなくなってしまう事もあります。ここではこの閾値の変更方法を説明します。
閾値は、「syntax sync 」コマンドの「minlines」という値で設定でき、以下のようにautocmdで設定します。
autocmd FileType jsp,asp,php,xml,perl syntax sync minlines=500 maxlines=1000
私は上記の設定を使っています。

pythonのインデントをタブではなくスペースにする

これはvimユーザでpythonの開発をされる方であれば、これは必須ですね。
以下の設定はタブ幅4で、expandtabにしています。
autocmd FileType python setlocal ts=4 sw=4 sta et sts ai
ただ、まれにスペース2つの人とかもいますから、人のソースを修正する際には向かないかもしれませんね。

Emacsユーザに送るキーバインド

これはおまけ。
nmap <m-x> :
nmap <silent> <c-x>1 :only<cr>
nmap <silent> <c-x>2 :sp<cr>
nmap <c-x><c-w><c-w>
cmap <m-x> <nop>
もっとこだわりたい方は、vimacsの方をお勧めします。

追記1:リンクが間違ってました
追記2:KoRoN氏の指摘で「BufEnter」から「FileType」に修正(コピペ元がマズってました)
追記3:さらにKoRoN氏の指摘で「FileType」のpatternが間違ってるとの指摘で修正(もしかしたらBufEnter使ってたのは拡張子使いたいからだったのかな?覚えてないや)

mattn the Onsen Ikitai!

blog comments powered by Disqus