«前の日記(2006-01-13 (%J)) 最新 次の日記(2006-01-26 (%J))» 編集

"I" novel?


2006-01-25 (%J) [長年日記]

[vim] Vim7で新規追加されたInsertモードの補完

Vim7でInsertモードの補完が3つ増えたので簡単にまとめ。

  • ユーザ定義補完 (CTRL-X_CTRL-U)
  • 'completefunc'に設定した関数を使って補完。

  • Omni completion (CTRL-X_CTRL-O)
  • 'omnifunc'に設定した関数を使って補完。'omnifunc'はftpluginファイルの中で、ファイルタイプにあった関数を設定。いまのとこ、C、CSS、HTML、XMLのみ。autoload/pycomplete.vimもあるので、Pythonもできるっぽいけど、ftpluginファイルには書いてないみたい。

    あと、autoload/syntaxcomplete.vimはsyntaxファイルに設定されたキーワードから補完できるみたい。

    で使えるけど、

    ってしとけば、CTRL-X_CTRL-Uでsyntax補完、CTRL-X_CTRL-OでOmni補完ができるので、それもありかも。

  • スペル補完 (CTRL-X_s)
  • set spellの場合、内部辞書による候補がでるみたい。

[vim] ついでに、Vim6までにあるInsertモードの補完

以外としらなかったのが多くてびっくり。詳細は、香り屋さんにある和訳されたinsert.txtを見るといいかも。Vim7ならこれらの補完でも候補のポップアップが出る。

いっぱいあるけど、常用する(できる)のは2,3個だと思う。自分は'complete'補完と辞書補完しか使ってなかった。言語用の辞書やtagsファイルを作っておいて、Complete関数を改良してCTRL-X_CTRL-O一つですませられるようになれば、一番楽だろうなぁ。

  • 行全体の補完 (CTRL-X_CTRL-L)
  • 現在のファイルのキーワードで補完 (CTRL-X_CTRL-N, CTRL-X_CTRL-P)
  • 辞書補完 (CTRL-X_CTRL-K)
  • シソーラス補完 (CTRL-X_CTRL-T)
  • 編集中と外部参照しているファイルからの補完 (CTRL-X_CTRL-I)
  • タグで補完 (CTRL-X_CTRL-])
  • ファイル名で補完 (CTRL-X_CTRL-F)
  • 定義もしくはマクロ (CTRL-X_CTRL-D)
  • Vimのコマンドから補完 (CTRL-X_CTRL-V)
  • 'complete'で設定したバッファから補完 (CTRL-N, CTRL-P)

[vim] あと、Complete()メモ

Complete()はCTRL-X_CTRL-Oされた時に、2度呼ばれる。

1度目は、引数 findstart = 1, base = '' が渡され、入力中の単語の先頭位置を返す。

2度目は、引数 findstart = 0, base には1度目の返り値を元に入力中の単語が渡され、配列 (List) を返す事で候補のポップアップが表示される。


あとは、ccompleteの場合は '.' か '->' で文字列を配列にして、配列が1個だけならtagsファイルから候補を選択。

配列が1個以上なら、変数をgd (ローカル宣言の場所へジャンプ) か、:tag か gD (グローバル宣言の場所へジャンプ)で飛んで型を見て、構造体などのメンバの候補を選択する。

ちなみに、構造体のメンバの候補を表示するのは、ctagsで作ったファイルの行の最後に struct:構造体名 てのが入ってないと動かない。ctagsは、

(無名の構造体?)で定義したものは、struct:構造体名 というのを追加してくれないから、適当Perlスクリプトを書いてみた。久しぶりに書いて汚いので、使用は自己責任で :-)

いつも読んでるソースは、PHPかRubyなので、phpcompleteとかrubycompleteを作りたいけど、いつになるかどーか。まぁ、そのうち。

[vim] 色が違うよ!

Vim7を導入しようと思ったきっかけは、2nd lifeさんのこのエントリでした。

そこの画像の配色がきれいなので使わせてもらおーと思ったら、配色を変更する設定と画像が合ってないのかな?全然別のものに。syntax.txtによると0は黒、8がグレー、12が赤みたい。

自分は、普段はWindowsでgvimを使ってて、colorschemeはdesertなので、結局こんなかんじに。

ちなみに、colorscheme設定で上書きされちゃうようなので、colorscheme設定の後に書かないとダメ。

せっかくなので、トラックバック打ってみたりして。

(追記)

そうか、Termの配色を変えてるんだとトラバ送ってから気付いてみたりして。恥ずかしい…

[vim] redir

なんか、立て続けに書いてるな…。

さっきの設定を書き出すときに使ったコマンド redir @{a-zA-Z}は、Vimのメッセージを、指定したバッファにリダイレクトしてくれる。

で、:hiした内容がバッファjに入るので、編集してコピペ。vimスクリプトのデバッグとか、設定を表示させたりする時に使うと便利。

[]