PHP スクリプトを書く時に、関数名は覚えているのですが、引数などを忘れてしまって、関数の使い方を調べるようなことがよくあると思います。PHP マニュアルから探す場合、探している関数がどのカテゴリに属しているのか、分かりにくいことが多く、関数名にたどり着くのに結構面倒でした。以前は、Namazu
などを使って、マニュアルをインデックス化して、検索して関数を探していたのですが、それでも探すのに関数名を入力する必要がありました。
PHP マニュアルの HTML ファイルのファイル名を見ると、関数名が直接ファイル名になっており、関数名が分かれば Vim スクリプトから呼び出すことができそうでしたので、man.vim を参考にして、実際に書いてみました。
Vim を使って PHP を書いている人はそれほど多くはないと思いますが、役に立つこともあるかもしれませんので、置いておきます。Vim スクリプトを書いたのは初めてですので、何か問題があるかもしれません。何か問題や気になった点などがありましたら、メールで指摘をお願いします。
RedHat Linux 7.3 と Gentoo Linux 1.4 などの Linux 環境でしかテストしていませんので、他の環境では問題があるかもしれません。また、Windows の Vim では動きません。
Windows では、chm 形式の PHP マニュアルがありますので、そちらを使用すると良いと思います。もし、一部文字化けなどが気になるようでしたら、少し古いかもしれませんが、PHP ユーザ会が配布している chm 形式のマニュアルを使用してください。
以下からバージョンを選択してダウンロードしてください。
カラー表示に対応しました。カラー表示が必要ない場合はバージョンアップの必要はありません。
細かい修正です。大きな機能追加などはありません。
誤字、脱字の修正を行いました。
:PHPManual reflist
を実行した時に、リファレンス一覧取得をPHP マニュアルの funcref.(html|php) ファイルから取得するように変更し、ウインドウ内に表示するようにしました。
以下の修正、機能追加を行いました。
誤字、脱字の修正を行いました。
ヘルプを作成しました。:PHPManual help
でヘルプを表示します。
関数リファレンスの説明ページを表示できるようにしました。:PHPManual ref <識別名>
で関数リファレンスの説明ページを表示します。
関数一覧、関数リファレンスの一覧を表示できるようにしました。:PHPManual reflist
で、リファレンスの説明ページの一覧を、:PHPManual funclist
で、関数一覧表示を行います。
1.0 から以下の修正のみを行っています。森さん、指摘をどうもありがとうございました。
GNU libiconv で文字コード変換に失敗していたのを修正しました。
関数名の最初が大文字だった場合、不正な関数名になってしまっていた問題を修正しました。
初版です。1.0.1 でバグ修正を行っていますので、そちらをダウンロードした方が良いと思います。修正個所の確認を行いたい場合はダウンロードしてください。
以下のコマンドが必要です。OS によっては、標準でインストールされていることが多いと思います。
wget
Web サイトから PHP マニュアルを取得するのに必要です。ローカルの PHP マニュアルを使用する場合は不要です。
iconv
PHP マニュアルは、UTF-8 で書かれているため、EUC-JP に変換する際に使用します。オプションによって、別のコマンド( 例えば UTF-8 の変換に対応した nkf )に変更することも可能です。
w3m
取得した PHP マニュアルのテキスト整形に w3m を使用しています。オプションによって、別のコマンドに変更することも可能です。ただし、標準入力からテキストに変換することができる必要があります。
Vim のプラグインディレクトリに置くか、:source phpmanual.vim
で呼び出すことで使用できます。個人的には、~/.vim/ftplugin/ に置くと良いと思います。ソースの中にも、説明を書いておきましたので、そちらも参考にしてください。
phpmanual.vim を読み込んだら、Vim のコマンドラインで以下のコマンドを入力してください。
:PHPManual <PHP 関数名>
または、PHP の関数名の上で、\P
と押すと、上部に新しいウインドウが開いて、該当のマニュアルが表示されます。
外部ブラウザを使用する場合は、以下のコマンドを実行してください。外部ブラウザの設定が行われていない場合は機能しません。
:PHPManualExtBrowser <PHP 関数名>
または、PHP の関数名の上で、\E
を入力すると、外部ブラウザが開きます。
バージョン 1.1 からは、以下のようにいくつかのオプションを追加しました。
:PHPManual <関数名>
<関数名>で指定した関数のマニュアルを表示します。前のバージョンと動作は同じです。
:PHPManual func <関数名>
<関数名>で指定した関数のマニュアルを表示します。func は省略可能で、機能は同じです。
:PHPManual funclist
関数一覧ページを表示します。
:PHPManual ref <識別名>
関数リファレンスの説明ページを表示します。<識別名>は :PHPManual reflist
で確認してください。
:PHPManual help
使い方の説明を表示します。
バージョン 1.3 でカラー表示に対応しました。
カラー表示が不要な場合は phpmanual_color = 0
を設定してください。
<Leader>P
(デフォルト: \P)
カーソルにある PHP の関数に対してマニュアルを開きます。
<Leader>E
(デフォルト: \E)
設定した外部ブラウザでカーソルにある PHP 関数のマニュアルを開きます。デフォルトでは使用できないようになっていますので、使用する場合は設定を行ってください。
~/.vimrc または、~/.vim/ftplugin/php.vim のように、ユーザ設定用のファイルを作成することで設定を変更できます。
let phpmanual_command = 'PHPManual' プラグイン呼び出しの Vim コマンド名 ( デフォルト: PHPManual ) let phpmanual_mapname = '<Leader>P' カーソルの下にある関数を引数にしてコマンドを呼び出すための キーマップ ( デフォルト: \P ) let phpmanual_use_ext_browser = 0 0: 外部ブラウザは使用しません。(デフォルト) 1: 外部ブラウザを使用します。 let phpmanual_ext_command = 'PHPManualExtBrowser' 外部ブラウザを呼び出すときの Vim コマンド名 ( デフォルト : PHPManualExtBrowser ) let phpmanual_ext_mapname = '<Leader>E' カーソルの下にある関数を引数にして外部ブラウザを呼び出すための キーマップ ( デフォルト: \E ) let phpmanual_ext_browser_cmd = 'mozilla' 外部ブラウザの実行コマンド ( デフォルト: mozilla ) let phpmanual_man_site = 'http://jp.php.net/' 外部ブラウザから呼び出すサイト。 ( デフォルト: http://jp.php.net/ ) Note: 外部ブラウザからの呼び出しは、PHP の WEB サーバのトップに 関数名を付けて呼び出す機能を使用しているため、 PHP のミラーサーバ以外ではうまく表示されません。 let phpmanual_dir = 'http://jp.php.net/manual/ja/print/' Vim のウインドウ分割から呼び出されるサイトです。 またはローカルディレクトリも指定できます。 ( デフォルト: http://jp.php.net/manual/ja/print/ ) Note: 外部からマニュアルを取得するため、サイトの接続に時間が かかると、しばらく操作ができなくなりますので、ローカルに PHP マニュアルをダウンロードして、そのディレクトリを 設定した方が良いです。 let phpmanual_file_ext = 'php' 取得するファイルの拡張子。PHP サーバにある PHP マニュアルは 拡張子が php ですが、ダウンロードしたマニュアルは拡張子が html ですので、必要に応じて変更してください。 php : PHP マニュアルの拡張子が php (デフォルト) html : PHP マニュアルの拡張子が html let phpmanual_convfilter = 'iconv -c -f utf8 -t euc-jp' PHP マニュアルの文字コードは UTF-8 ですので、それを EUC に変換 する必要があります。iconv の方がインストールされている可能性が 高いので、デフォルトでは iconv にしました。 let phpmanual_htmlviewer = 'w3m -T text/html' HTML をテキストに変換するツールとして w3m を使用します。 標準入力から整形ができるように -T オプションを使用しています。 let phpmanual_color = 1 PHP マニュアルでカラー表示を行います。 カラー表示が必要ない場合は 0 に設定してください。
設定例として、.vimrc や、~/.vim/ftplugin/php.vim に記述することで、オプションの変更が可能です。.vimrc に記述してしまうと、Vim を起動すると不必要でも読み込まれてしまいますので、~/.vim/ftplugin/php.vim に記述した方が良いと思います。
let phpmanual_dir = '/home/manual/php_manual/' " ローカルの /home/manual/php_manual/ にある PHP マニュアルを使用 " するように設定します。 let phpmanual_file_ext = 'html' " ローカルにある PHP マニュアルの拡張子は html であることを指定 " します。 let phpmanual_use_ext_browser = 1 " 外部のブラウザを使用するように設定します。 let phpmanual_ext_browser_cmd = '~/bin/mozilla.sh' " 外部ブラウザの呼び出しでは mozilla のラッパースクリプトを呼び出す " ように指定します。 let phpmanual_convfilter = '/usr/local/bin/nkf -e' " 文字コード変換に UTF-8 対応の nkf を使用するように設定します。
デフォルトでは、外部サーバの PHP マニュアルを読みに行きますので、ローカルに PHP マニュアルを置いた方が良いと思います。
個人的には、~/.vim/ftplugin/ に phpmanual.vim を置き、php.vim を作成して、設定を書き込んでいます。さらに、~/.vimrc に設定を加えて、PHP スクリプトを編集するときのみ、読み込まれるように設定しています。
" ~/.vimrc に記述 " 拡張子が inc や phtml の場合も PHP スクリプトとして扱うように設定 autocmd! BufRead,BufNewFile *.inc set filetype=php autocmd! BufRead,BufNewFile *.phtml set filetype=php
" ~/.vim/ftplugin/php.vim に記述 " 外部ブラウザを使用する let phpmanual_use_ext_browser = 1 " /home/manual/php_manual/ に PHP マニュアルを設置している場合 let phpmanual_dir = "/home/manual/php_manual/" " PHP マニュアルの拡張子は html let phpmanual_file_ext = "html" " 外部ブラウザとして Mozilla を起動するためのラッパーシェルスクリプト let phpmanual_ext_browser_cmd = "mozilla.sh" " 文字コード変換に nkf を使用 let phpmanual_convfilter = "nkf -e" " w3m での整形時に幅を 100 文字に指定 let phpmanual_htmlviewer = "w3m -T text/html -cols 100" " phpmanual.vim を置いているパスを指定 source ~/.vim/ftplugin/phpmanual.vim
外部ブラウザとして、Mozilla を使用する場合、以下のようなシェルスクリプトを作成しておくと便利です。既に Mozilla を開いた状態の場合、タブに指定した URI を開くようにします。
#!/bin/sh MOZILLA=/usr/bin/mozilla RESULT=`$MOZILLA -remote "ping()" 2>&1` if [ "$RESULT" ]; then exec $MOZILLA $1 & else $MOZILLA -remote "openurl($1, new-tab)" & fi
カラー表示に対応しました。
1.1 以下の古いバージョンについては削除しました。
全体的にドキュメントの書き直し、修正を行いました。