自动插入PHPdoc的VIM插件

19

有没有一种方法可以在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
*/

然后我可以手动填写剩下的部分。谢谢。


5
请点击此处获取phpdoc.vim(http://markus.fischer.name/vim/phpdoc/),PDV请点击此处(http://www.vim.org/scripts/script.php?script_id=1355),自动生成PHPdoc注释请参考http://vim.wikia.com/wiki/Automatically_generate_PHPdoc_comments;下次您可以尝试使用谷歌搜索(http://tinyurl.com/65l8bkw)。 - sehe
@sehe 我确实尝试了谷歌,但我发现解决方案非常复杂。我希望我能像你一样聪明。 - Tech4Wilco
4
没问题;我并不是要贬低你。然而,如果你使用了谷歌搜索,那在发帖时说明一下会更好。告诉我们你找到了什么,哪个部分让你有困难——这样,人们才能给你真正的帮助,而不仅仅是给出显而易见的答案。 - sehe
1
@sehe 哦,好主意,谢谢,我还是新手但正在学习中;) - Tech4Wilco
3个回答

46

使用轻量级的phpDocumentor插件可以很有效地完成此操作。

编辑 这是一个修改过的版本,其中包含更新的开发内容。

编辑 这是phpDocumentor插件的第二个版本。它比上面两个链接更为新近。

将插件安装到$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绑定到插入、正常和可视模式中的Ctrlp。将光标放在类、函数或变量定义上,按下Ctrlp,插件将尝试根据定义创建一个文档块。

示例函数文档块:

/**
 * 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...
}

示例类文件注释块

版权、版本、作者等信息默认包含在类文件注释块中。您可以修改插件以包含自己的这些信息的默认值:

/**
 * 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...
  }
}
?>

映射是 <C-P>,但快捷键是 <kbd>Ctrl</kbd>+<kbd>p</kbd>,这导致了另一个问题。我已经修复了映射。 - romainl
这里有另一个支持php7的版本:https://github.com/Rican7/php-doc-modded - phux

4
假设您将模板放置在~/templates/phpdoc.php。 使用以下缩写,如果您键入,p,则会将phpdoc.php的内容读取到当前文件中(在当前行或以下之一)。
map ,p :r ~/templates/phpdoc.php<cr>

接下来只需将该行添加到您的 .vimrc 文件中,将 file-path 和 ,p 替换为您喜欢的内容即可。


这与您想要的有些相似,但使用了MIT许可证和一些额外的功能,展示了如何通过模板潜在地减少一些手动工作:http://vimeo.com/30391489或http://vimeo.com/30441772。 - kikuchiyo

1

我不能具体代表PHP,但你有几个选择。你可以使用缩写(也许不适用于特定的例子),或者你可以寻找一个插件。我可以建议https://github.com/garbas/vim-snipmate(我使用它,它运行良好)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接