VIM自动插入PHPdoc

时间:2011-09-29 21:12:55

标签: vim phpdoc

有没有办法使用命令或组合键在VIM中插入PHPDoc?

例如,我有一个班级:

class MyClass
{

  public function __construct() { }
  public function __destruct() { }

  /* command here to insert PHP doc */
  public function abc() { }

}

我想插入类似的内容:

/**
* method() 
*
* description
*
* @access   
* @author    
* @param    type    $varname    description
* @return   type    description
* @copyright
* @version
*/

然后我可以手动完成剩下的工作。谢谢

3 个答案:

答案 0 :(得分:44)

使用轻量级phpDocumentor plugin可以非常有效地完成此操作。

编辑 Here's a modified version进行更新的开发。

修改 Here's version 2 of the phpDocumentor plugin。它比上述两个链接更新。

将插件安装到$VIMFILES/plugin目录中,并将其添加到.vimrc:

" PHP documenter script bound to Control-P
autocmd FileType php inoremap <C-p> <ESC>:call PhpDocSingle()<CR>i
autocmd FileType php nnoremap <C-p> :call PhpDocSingle()<CR>
autocmd FileType php vnoremap <C-p> :call PhpDocRange()<CR> 

以上将插入,普通和可视模式下的phpDocumentor绑定到 Ctrl p 。将光标放在类,函数或变量定义上,按 Ctrl p ,插件将尝试根据定义形成文档块。

示例函数doc block:

/**
 * testDocBlock 
 * 
 * @param mixed $param1 
 * @param mixed $param2 
 * @static
 * @access public
 * @return boolean
 */
public static function testDocBlock($param1, $param2) {
  // Pressed Ctl-p while cursor was on the function definition line above...
}

示例类doc块

版权,版本,作者等默认包含在类doc块中。您可以修改插件以包含您自己的默认值:

/**
 * TestClass  
 * 
 * @package 
 * @version $id$
 * @copyright 
 * @author Michael <me@exmaple.com> 
 * @license 
 */
class TestClass {

}

完整的抽象类示例:

<?php
/**
 * TestClass 
 * 
 * @abstract
 * @package 
 * @version $id$
 * @copyright 
 * @author Michael <email@example.com>
 * @license 
 */
abstract class TestClass {
  /**
   * publicProp  
   * 
   * @var string
   * @access public
   */
  public $publicProp;
  /**
   * privateProp  
   * 
   * @var string
   * @access private
   */
  private $privateProp;

  /**
   * testDocBlock  
   * 
   * @param string $param1 
   * @param string $param2 
   * @static
   * @access public
   * @return boolean
   */
  public static function testDocBlock($param1, $param2) {
    // code here...
  }
}
?>

答案 1 :(得分:4)

假设您将模板放在〜/ templates / phpdoc.php中。 使用以下缩写,如果您键入,p,您将会 将phpdoc.php的内容读入当前文件, (在当前行或其下方 - 其中之一)。

map ,p :r ~/templates/phpdoc.php<cr>

然后将该行添加到.vimrc文件中,替换 文件路径和,p根据自己的喜好。

答案 2 :(得分:1)

我不能专门代表PHP,但你有几个选择。您可以使用abbreviations(可能对特定示例不太好)或者您可以查找插件。我可以建议https://github.com/garbas/vim-snipmate(我使用它并且工作正常)。