有没有办法使用命令或组合键在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
*/
然后我可以手动完成剩下的工作。谢谢
答案 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 ,插件将尝试根据定义形成文档块。
/**
* 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块中。您可以修改插件以包含您自己的默认值:
/**
* 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(我使用它并且工作正常)。