Vim (7.1.100) で使用出來る Omni 補完 (Omni Completion) は以下の九つ。
何故か Perl 用が無いので 「vim omni perl」で檢索すると PerlMonks と云ふサイトで以下の頁が見附かつた。
未だ開發中だつたらしい。リンクを辿ると、アーカイブは以下の場所に在つた。
此處から落として頁に書かれてゐる通りに、
% unzip omniperl.zip % vim omniperl.vba
と VimBall ファイルを Vim (7.1.100) で開き、
> :so %
を實行すると、
Vimball Archive extracted <ftplugin/perl/omniperl.pl>: 649 lines wrote /home/ishikawa/.vim/ftplugin/perl/omniperl.pl extracted <ftplugin/perl/omniperl.vim>: 1486 lines wrote /home/ishikawa/.vim/ftplugin/perl/omniperl.vim extracted <doc/omniperl.txt>: 394 lines wrote /home/ishikawa/.vim/doc/omniperl.txt did helptags 続けるにはENTERを押すかコマンドを入力してください
とメッセージが出力されてインストール完了。$HOME/.vim/ の下に以下のファイルが出來てゐた。
$HOME/.vim/.VimballRecord $HOME/.vim/ftplugin/perl/omniperl.vim $HOME/.vim/ftplugin/perl/omniperl.pl $HOME/.vim/doc/tags $HOME/.vim/doc/omniperl.txt
其處で適當な Perl スクリプト・ファイルを開くと、Vim で勝手に畫面分割されて、
OmniPerl : First Run, doing some checks ! Testing the perlscript with the standard module 'Carp' : Got some results...GOOD ...but not what I expected...BAD! Testing 'File::Basename' : Got some results...GOOD Found 'File::Basename::basename' ...EXCELLENT Testing 'Net::Ping' : Got some results...GOOD Found '$net_ping->ping' ...EXCELLENT Trying to build a module list ... Done. List contains 504 entries. Basic tests : 3/4 passed. All fine. To repeat this tests, exec the command :OmniPerlTest or remove the config file ! < OK > Creating config file with defaults : => /home/ishikawa/.vim/ftplugin/perl/omniperl_config.vim < OK >
と云つたメッセージが出力された。
此れで Perl でも Omni 補完 (Omni Completion) が利く樣に成つた。
Gentoo の emerge で入れた Vim (7.1.42) と FreeBSD 4.10 で野良インスコした Vim (7.1) では、
function <SNR>27_Init..<SNR>27_Test の処理中にエラーが検出されました: 行 3: E36: 充分な容量がありません function <SNR>27_Init の処理中にエラーが検出されました: 行 4: E171: :endif がありません
英語だと、
Error detected while processing function <SNR>27_Init..<SNR>27_Test: line 3: E36: Not enough room Error detected while processing function <SNR>27_Init: line 4: E171: Missing :endif
と云ふメッセージが出力されて動か無かつた。
四時間程悶々としたが、上の問題は解決した。
職場では PuTTY を五拾行で使用してゐるが、普段家では二拾四行で作業してゐる。
「E36: Not enough room」と云ふメッセージは、vim71/src/global.h, vim71/src/windows.c 邊を見るとウィンドウに關係するエラー・メッセージで主に新しいウィンドウを作成出來無かつた時に出力される樣に見えた。
其れを頭に入れて omniperl.vim を眺めてゐると、1384 行目附近に、
func! s:Test()
let cmdh_save=&cmdheight
try
set cmdheight=25
redraw!
echohl TODO
echo "OmniPerl :"
と書かれてゐて、畫面の高さが問題では無いかと思ひ、假想端末の行數を二拾四行から一行づゝ増やして行くと、二拾八行にした所でエラー・メッセージが出力されずに、正常終了のメッセージが出力され、omniperl_config.vim が作成された。
なんなんだよぅ、一體!!!。
GNU Screen でステータス領域を表示してゐ無い場合は二拾七行で正常に動いた。