Vim �� PHP �ؿ��μ�������������ˡ�ˤĤ��ƤΥ��

HOME | ������ | LastUpdate: 2009-08-16

�����ȴĶ�

PHP �μ��������ˡ��ޤȤ�Ƥߤޤ�����

�ޤ���ctags �ʤɤ�Ȥäơ�Vim �򤵤�������˻Ȥ����Ȥ��Ǥ���褦�ˤʤ�ޤ��Τǡ����λ���Ĵ�٤��ꡢ�Ԥä��ꤷ����ȤΥ���ޤȤ�Ƥ����ޤ���

���Υ��ϡ�Gentoo Linux �Ǻ������ޤ������ġ���ΥС������䡢Vim �ΥС������ʤɤˤ�äƤϤ��ޤ������ʤ����⤢��Ȼפ��ޤ������������ˤʤä���������ʤɤ�����ޤ����顢�᡼����Ϣ�����Ƥ���������


�ܼ�

Vim �� PHP �μ�������������ˡ�� ctags �ˤĤ��ƤΥ�� �ܼ�

  1. �����ȴĶ�
  2. Vim �Ѥ� PHP �ؿ�������������
    1. PHP �ޥ˥奢�뤫��ؿ��μ�����������
    2. PHP ������ץȤ�������Ѥߴؿ�����Ϥ���
  3. ctags ����Ѥ���
    1. tags �ե�������������
    2. PEAR �� tags �ե�������������
  4. PHP �ޥ˥奢���ɽ������ Vim ������ץ�
  5. ��������

Vim �Ѥ� PHP �ؿ�������������

Vim �Ǥϡ�:set dictionary �˼���ե��������ꤷ��Ctrl+x, Ctrl+k �ǡ������䴰���Ԥ���褦�ˤʤ�ޤ���������ե������ɤΤ褦�˺������뤫�Ȥ������꤬����ޤ��Τǡ��פ��Ĥ�����ˡ���⤷�Ƥ����ޤ����ɤ��Ȼפ�����ˡ�Ǽ����������Ƥ���������PHP ������ץȤ�������Ѥߴؿ�����Ϥ���������PHP 4 �� PHP 5 �μ����ʬ���뤳�Ȥ��Ǥ��ޤ��Τǡ��������Ȼפ��ޤ���

a. PHP �ޥ˥奢�뤫��ؿ��μ�����������

  1. �ޤ���PHP �ޥ˥奢�������������ɤ��ޤ������ܸ�ޥ˥奢������������ɤ��Ƥ�����Ϥʤ��ΤǤ����������Υ�����饰�δط��ǡ��������ɲä��줿�ؿ��ʤɤ��ܤäƤ��ʤ���ǽ���⤢��ޤ��Τǡ�Vim �μ�����������ˤϡ��Ѹ�Υޥ˥奢��������ɤ��Ȼפ��ޤ���

  2. Ŭ���ʥǥ��쥯�ȥ��������ơ��������� PHP �ޥ˥奢���Ÿ�����ޤ����Ѹ�ޥ˥奢������������ɤ������ϡ��ʲ��Τ褦��Ÿ�����ޤ���

    $ mkdir php_manual
    $ cd php_manual
    $ tar jxvf php_manual_en.tar.bz2
    
  3. ����ե�����( �ʲ�����Ǥ� php.dict )��������ޤ����ե�����̾����ؿ�̾������������Ƥ��ޤ���¿ʬ�����ޤ������Ȼפ��ޤ��������Ԥ��Ƥ����ǽ���⤢��ޤ��Τǡ��������줿 php.dict �� PHP �δؿ������ޤ���ФǤ��Ƥ��뤫��ǧ���Ƥ�������������ե����뤬�����Ǥ����顢Ŭ���ʥǥ��쥯�ȥ�( �ʲ�����Ǥϡ�~/.vim/dict/ )�˰�ư�����ޤ���

    $ ls function.* | sed 's/^function\.\([-_a-z0-9.]*\)\.html$/\1/' | sed 's/-/_/g' | sed 's/\./->/g' | sort > php.dict
    $ mkdir -p ~/.vim/dict/
    $ mv php.dict ~/.vim/dict/
    
  4. .vimrc(Windows �ʤɤξ��� _vimrc) �ˡ��ʲ���������ɲä��ޤ���php.dict �� �ۡ���ǥ��쥯�ȥ�� ~/.vim/dict/ ���֤�����������Ǥ���

    autocmd FileType php  :set dictionary=~/.vim/php.dict
  5. Vim �ǡ�PHP �Υ�����ץȤ��񤫤줿�ե�����򳫤������󥵡���(����)�⡼�ɤǥ��ޥ�ɤκǽ�ο�ʸ�������Ϥ��ơ�Ctrl-x, Ctrl-k �����Ϥ���ȡ�����ե�����ˤ���ñ����椫�顢�䴰����ޤ���

    �㤨�С�

    array_s

    �ޤ����Ϥ��ơ�Ctrl-x, Ctrl-k �򲡤��ȡ�

    array_search

    �Τ褦�˴ؿ�̾���䴰����ޤ������θ����ɽ������ˤϡ�Ctrl-n�����θ����ɽ������ˤϡ�Ctrl-p�򲡤��ޤ���

�Ȥꤢ������������ˡ�Ǥ��ñ�˼���ե����������Ǥ���Ȼפ��ޤ��������������ѤǤ��ʤ��ؿ��ʤɤ⼭��˴ޤޤ�Ƥ��ޤ����ᡢ����̵�̤�¿�����񤫤⤷��ޤ���

�Ϥκǽ�� | �ܼ���

b. PHP ������ץȤ�������Ѥߴؿ�����Ϥ���

PHP �ޥ˥奢�뤫�鼭������������ˡ�ʳ��ˡ�PHP ������ץȤ�����Ѥߤδؿ�̾����Ϥ���ؿ������ä����Ȥ˵����Ĥ��ޤ����Τǡ����ν��Ϥ򸵤ˡ�����ե������������Ƥ��ɤ��Ȼפ��ޤ���

�㤨�С��ʲ��Τ褦�ʥ�����ץȤ� mkvimdic.php �Ȥ�����¸���ޤ���

<?php
$functions = get_defined_functions();
sort( $functions['internal'] );
echo implode( "\n", $functions['internal'] );

(2009.08.16 �ɵ�)

�Ƕ�ϰʲ��Τ褦�ʥ�����ץȤ���Ѥ��Ƽ����������Ƥ��ޤ������湽¤�� PHP 5.3.0 ���ɲä��줿��ư�����������饹�ʤɤ��ɲä��Ƥ��ޤ���

<?php
$keywords = array(
    'if', 'else', 'elseif', 'endif', 'while', 'endwhile', 'do', 'as', 'for', 'endfor', 'foreach', 'endforeach',
    'break', 'continue', 'switch', 'endswitch', 'case', 'default', 'declare', 'enddeclare',
    'try', 'catch', 'return', 'exit', 'const', 'class', 'function',
    'require', 'include', 'require_once', 'include_once',
    'abstract', 'final', 'interface', 'private', 'protected', 'public', 'static',
    '__LINE__', '__FILE__', '__DIR__', '__FUNCTION__', '__CLASS__', '__METHOD__', '__NAMESPACE__'
);
$functions  = function_exists( 'get_defined_functions'   ) ? get_defined_functions()   : array();
$constants  = function_exists( 'get_defined_constants'   ) ? get_defined_constants()   : array();
$interfaces = function_exists( 'get_declared_interfaces' ) ? get_declared_interfaces() : array();
$classes    = function_exists( 'get_declared_classes'    ) ? get_declared_classes()    : array();

$arrays = array_merge(
    $keywords,
    $functions['internal'],
//  array_keys( $constants ),   // ������䴰���������Ϥ��ιԤ�ͭ���ˤ���
    $interfaces,
    $classes
);
sort( $arrays );
$arrays = array_unique( $arrays );
echo implode( "\n", $arrays );

�ʲ��Τ褦�˥��ޥ�ɥ饤���� PHP �Ǽ¹Ԥ���ȡ����Ϥ��줿�ؿ����������Ϥ���ޤ������Υե�����򼭽�Ȥ��ƻ��Ѥ��ޤ���

$ php mkvimdic.php > php.dict

������ˡ�ξ�硢���߻��Ѥ��Ƥ��� PHP �ǻ��Ѳ�ǽ�ʴؿ��Τߤ򼭽����Ͽ���뤳�Ȥ��Ǥ��ޤ�����������PHP �ΥС�����󥢥åפ䡢�ƥ���ѥ����Ԥä����ϡ��ºݤ˻��ѤǤ���ؿ��ȼ������Ͽ����Ƥ���ؿ��˰㤤���Ф��ǽ��������ޤ��Τǡ��С�����󥢥åפ䡢����ѥ��륪�ץ������ѹ��������ˤϼ������ľ���������ɤ��Ȼפ��ޤ���

�Ϥκǽ�� | �ܼ���

�� �ܼ������


ctags ����Ѥ���

���Ϥ��䴰��ǽ����Ѥ�����ˡ�Ȥ��ơ�ctags ��Ȥ����Ȥ�Ǥ���褦�Ǥ���ctags �������䴰�����Ǥʤ������������פε�ǽ�������Ǥ��Τǡ��Ȥ���褦�ˤ��Ƥ����ȡ�������ץȤ�񤯤Ȥ��ʤɤ����˸�Ψ���ɤ��ʤ�ޤ���

ctags �ϡ��С������ 5.0 �ʹߤ� PHP �򥵥ݡ��Ȥ��Ƥ��ޤ��Τǡ�ctags --version ��¹Ԥ��ơ��С������ 5.0 �ʹߤǤ��뤳�Ȥ��ǧ���Ƥ����Ƥ����������⤷��ctags ���ʤ����ޤ��ϡ��С�����󤬸Ť����ϡ�Exuberant Ctags ���顢�������ե���������������ɤ��ơ�����ѥ��뤹�뤫���� Linux �ǥ����ȥ�ӥ塼���������ۤ���Ƥ���ѥå������ʤɤ򥤥󥹥ȡ��뤷�Ƥ���������

a. tags �ե�������������

ctags ��Ȥäơ������ȥǥ��쥯�ȥ�ʲ��Υե�������Ф��ơ�tags �ե�������������ˤϡ��ʲ��Τ褦�ˤ��ޤ�����ĥ�Ҥϼ�ưȽ�̤Dz��Ϥ��Ƥ���ޤ������ǥե���ȤǤϡ���ĥ�Ҥ� .inc �� PHP �ե�����Ȥ��Ƥߤʤ��Ƥ���ޤ���Τǡ����ץ����� --langmap �� .inc �� PHP �ե�����Ȥ��Ƥߤʤ��褦�˻��ꤷ�ޤ�����ĥ�Ҥȥե�����δ�Ϣ�դ��ˤĤ��Ƥϡ�ctags --list-maps ��¹Ԥ����ɽ������ޤ��Τǡ��ܤ����Ϥ��ν��Ϥ򻲾Ȥ��Ƥ���������

$ ctags -a -R --langmap=PHP:.php.inc --php-types=c+f ./

��ñ�˥��ץ����������򤷤Ƥ����ޤ����ʲ��˾Ҳ𤷤���ΰʳ��Υ��ץ����ˤĤ��Ƥϡ�ctags --help �dz�ǧ���Ƥ���������

��ǻ��Ѥ��� ctags �Υ��ץ��������
���ץ��������
-a���� tags �ե����뤬������ϡ��ե�������񤭤������ɲä��ޤ���
-R���ꤷ���ǥ��쥯�ȥ�˴ޤޤ�����ƤΥե������Ĵ�٤ޤ���
--langmap �ǥե���Ȥ����ꤵ��Ƥ���ե�����γ�ĥ��������񤭤��ޤ��� �ǥե��������ϡ�ctags --list-maps �dz�ǧ�Ǥ��ޤ���
--php-types PHP �ե������ tags �ե���������������Υ���̾�� PHP �Υ��饹�ȴؿ���ξ������Ѥ��ޤ��� ���ѤǤ��륿��̾�ϡ�ctags --list-kinds=php �dz�ǧ�Ǥ��ޤ��� �㤨�С�¾�θ���ξ�硢Java �ǻ��ѤǤ��륿��̾�� ctags --list-kinds=java �� �褦�˻��ꤹ��ȳ�ǧ�Ǥ��ޤ���

��������λ����ȡ������ȥǥ��쥯�ȥ�� tags �Ȥ����ե����뤬��������Ƥ��ޤ���Vim �Ǥϡ��ǥե���Ȥǡ������ȥǥ��쥯�ȥ�� tags �ե��������Ѥ���褦�ˤʤäƤ���Ȼפ��ޤ�����ǧ����ˤϡ�Vim �ǰʲ��Τ褦�ˤ��Ƥ���������

:set tags

�ʲ��Τ褦��ɽ������Ƥ���� tags ����Ͽ���줿ñ����Ф��ơ����������פ��䴰��ǽ�����ѤǤ���褦�ˤʤäƤ���Ȼפ��ޤ���

tags=./tags,./TAGS,tags,TAGS

����ɽ������ʤ��ä����ϡ��ʲ��Τ褦�˥ե�����ξ�����ꤷ�Ƥ���������

:set tags=./tags

�ʾ�ǡ�tags �ե����뤬����ǥ��쥯�ȥ�� PHP �ե�������Խ�������������ؿ�̾�ξ�� Ctrl+] �򲡤��ȡ����̤��ڤ��ؤ�äơ�������줿�ե�����γ����ؿ��ΰ��֤˰�ư����Ϥ��Ǥ������ξ��������ϡ�Ctrl+t �򲡤��Ƥ���������Ctrl+w, Ctrl+] �Ȥ���ȡ�������ɥ���ʬ�䤵��ơ������ؿ���ɽ������ޤ��Τǡ����ޤ��Ȥ�ʬ����������Ǥ���

�ޤ���������줿�ؿ�̾������ޤ����Ϥ��ơ�Ctrl+x, Ctrl+] �Ȥ���ȡ�tags �ե������������줿�ؿ�̾���䴰���Ԥ��ޤ�������ե������Ʊ���褦�ˡ�Ctrl+n �� Ctrl+p ���Ѵ���������򤹤뤳�Ȥ��Ǥ��ޤ���

�Ϥκǽ�� | �ܼ���

b. PEAR �� tags �ե�������������

PHP �� PEAR �ʤɤΥ⥸�塼������Ѥ��Ƥ����硢�ʲ��Τ褦�ˡ�tags �ե������ޤȤ�Ƥ����Ȥ���������ˤʤ�Ȼפ��ޤ���

  1. ctags ��Ȥäơ�PEAR �򥤥󥹥ȡ��뤷�Ƥ���ǥ��쥯�ȥ� ( �����Ǥ� /usr/local/lib/php/ )�� tags �ե������������ޤ��������Ǥϡ�pear.tags �Ȥ����ե�����̾�ǽ��Ϥ��Ƥ��ޤ���

    $ ctags -f pear.tags --langmap=PHP:.php.inc --php-types=c+f `find /usr/local/lib/php/ -name '*.php' -or -name '*.inc'`

    PEAR �Υǥ��쥯�ȥ�ˤϡ�PHP �ʳ��Υե������ޤޤ�Ƥ��ޤ��Τǡ�tags �ե���������פʾ��󤬴ޤޤ��Τ���򤹤뤿��ˡ�find ���ޥ�ɤ� ��ĥ�Ҥ� php �� inc �ˤʤäƤ���ե�����Τߡ��������Ͽ����褦�ˤ��Ƥ��ޤ���

  2. �����ȥǥ��쥯�ȥ�� pear.tags �Ȥ����ե����뤬��������ޤ��Τǡ��ե������Ǥ�դξ��( �����Ǥϡ�~/.vim/tags )�˰�ư�����ޤ���

    $ mkdir -p ~/.vim/tags
    $ mv pear.tags ~/.vim/tags/
    
  3. ~/.vimrc ���Խ����ơ�PHP �ե�������Խ�����Ȥ��Τߡ�tags �ե������ƤӽФ��褦�����ꤷ�ޤ���

    autocmd FileType php :set tags+=~/.vim/tags/pear.tags

��������PEAR �Υ⥸�塼����ɲä����ꡢ���åץǡ��Ȥ������ϡ����� ctags ���ޥ�ɤ�¹Ԥ���ɬ�פ�����ޤ���

�Ϥκǽ�� | �ܼ���

�� �ܼ������


PHP �ޥ˥奢���ɽ������ Vim ������ץ�

PHP �ޥ˥奢���ɽ������ Vim ������ץ��ʤɤ�񤤤Ƥߤޤ�����PHP ������ץȤ�񤯻��ˤϰճ��������Ǥ���

�� �ܼ������


��������

( 2009.08.14 )

�Ƕ�μ�������ѤΥ�����ץȤ�Ǻܡ�

( 2004.05.02 )

������æ���ʤɡ����ˤʤä���ʬ�ν������������������ץȤ��ñ�ʷ����ѹ���

( 2003.10.05 )

Vim �Υ����Ȥǡ�PHP.dict 0.2 ����������Ƥ����Τ��ɵ���

( 2003.07.13 )

���Ǻ�����������

�� �ܼ������

LastUpdate: 2009-08-16 | ������ | HOME