VIM自动插入PHPdoc

2024-04-16

有没有办法使用命令或组合键在 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
*/

然后我可以手动完成剩下的部分。谢谢


使用轻量级可以非常有效地完成此操作phpDocumentor 插件 http://www.vim.org/scripts/script.php?script_id=1355.

Edit 这是修改后的版本 http://www.vim.org/scripts/script.php?script_id=2980随着最近的发展。

Edit 这是 phpDocumentor 插件的版本 2 https://github.com/tobyS/pdv。它比上面两个链接更新。

将插件安装到您的$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> 

The above binds phpDocumentor to Ctrlp in insert, normal, and visual modes. Place your cursor on a class, function, or variable definition, press Ctrlp, and the plugin will attempt to form a doc block based on the definition.

示例函数文档块:

/**
 * 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 <[email protected] /cdn-cgi/l/email-protection> 
 * @license 
 */
class TestClass {

}

完整的抽象类示例:

<?php
/**
 * TestClass 
 * 
 * @abstract
 * @package 
 * @version $id$
 * @copyright 
 * @author Michael <[email protected] /cdn-cgi/l/email-protection>
 * @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...
  }
}
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VIM自动插入PHPdoc 的相关文章

随机推荐

  • 为什么 gcc 和 NVCC (g++) 会看到两种不同的结构大小?

    我正在尝试将 CUDA 添加到 90 年代末编写的现有单线程 C 程序中 为此 我需要混合两种语言 C 和 C nvcc 是 c 编译器 问题在于 C 编译器将结构视为特定大小 而 C 编译器将相同的结构视为略有不同的大小 那很糟 我对此感
  • PHP:SimpleXMLElement() 类和 SimpleXML_load_string() 之间有什么区别?

    我见过很多程序员实现SimpleXML load string 而不是SimpleXMLElement 班级 使用前者比后者有什么好处吗 我读过simplexml 的 PHP 手册 http www php net manual en bo
  • 在钥匙串中找不到有效的 iOS 代码签名密钥。您需要申请协同设计证书

    因此 我构建了一个 Xamarin Forms 应用程序 现在我想在物理 iOS 设备上进行测试 调试器成功运行了我的程序 但不幸的是 当我在物理 iPhone 上部署程序时遇到了问题 为了部署我的应用程序 我执行了以下操作 按照本教程为我
  • 仅当尚未设置时才进行原子设置

    仅当尚未在 Redis 中设置时 是否有办法执行原子设置 具体来说 我正在创建一个像 myapp user user email 这样的用户 并且希望 Redis 在 user email 已被占用时返回错误 而不是默默地替换旧值 比如声明
  • node.js/angular.js - 无法获取

    我有根路径并且工作正常 我还有另一条路线 127 0 0 1 3000 dashboard 如果我只是在地址栏中输入该 url 我会收到此错误 无法获取 仪表板 如果我创建一个指向相同网址的链接 它就可以正常工作 如果我刷新该页面 我会再次
  • 如何递归探索Python嵌套字典? [复制]

    这个问题在这里已经有答案了 我很好奇是否有一种方法可以在 python 中递归地探索嵌套字典 我的意思是 假设我们有一个如下示例 d a b c 1 2 3 获取最里面字典的内容需要什么代码 c 1 2 3 遍历a and b 在这种情况下
  • userLocation:纬度/经度返回零?

    我只是在查看 mapKit 并决定创建一个快速按钮来显示我当前的位置 但是当我按下该按钮时 我的纬度 经度始终显示为 0 000000 0 000000 地图视图已加载 因为在按下按钮之前我可以在模拟器上看到地图 以前 我通过使用 core
  • 向 Web 应用程序的所有 HTML 元素添加 ID 属性?

    目前 我正在使用 RoR MySQL HTML CSS 和 jQuery 等构建一个 Web 门户 我收到自动化测试工程师的请求 要求向我的应用程序的所有元素添加 ID 属性 如果可能的话 还有 NAME 属性 我对此感到困惑 也许我不确定
  • Bootstrap 卡头 - 所有卡头高度相同

    我在两个网页上使用引导卡 在一页上 标题文本是固定的 因此我可以使用 min height 来匹配其卡片标题高度 在第二页上 将生成这些卡片 因此我不知道文本长度和单词 我希望连续的所有卡头都具有相同的高度 有没有办法根据一行中最大的卡头计
  • 使用 xpose 挂接一个以自定义类数组作为参数的方法

    如何挂钩包含自定义类数组的方法 Lcom samsung android uniform widget notification NotificationItem 这就是 smali 论证 我可以上课XposedHelpers findCl
  • 显示从 SBT 构建发出的确切 scala 命令

    当我针对本地版本的 Scala 构建我的 相对复杂的 SBT 项目时 出现以下错误 scalac error bad option Ydelambdafy method 这可能是一个错误scalac或我们的构建文件 但是 我无法在调用时重现
  • 无法在守护进程模式下运行 Ansible

    我可以运行 Ansible 像守护进程一样管理我的主机吗 例如 我有时会更改我的剧本 但我不想手动运行 ansible playbook main yml 请不要建议 crontab 有一个特定的点 我不能在生产服务器上使用 crontab
  • sun.* 包发生了什么

    我在 JDK 7 文档中没有找到任何关于sun 包 是否已弃用 但替代品是什么 For eg sun reflect 已被弃用 那么现在有什么选择呢 如果有人可以发布已弃用的软件包和可用的新选项 那就太好了 Note I succeded
  • c中如何检查字符串中的重复字符

    我正在尝试创建一个程序来检查命令行参数字符串中的重复字符 该字符串假定仅包含 26 个字符 并且所有字符都必须是字母顺序的 但是 字符串中不能有任何重复的字符 每个字母字符只能出现一次 我弄清楚了程序的前两部分 但我不知道如何检查重复的字符
  • 多线程代理检查器

    我有很少的代码 例如 using WebClient wc new WebClient wc Proxy new WebProxy IP Port resume if wc IsBusy string rtn msg string Empt
  • 使用 php 从 mysql 删除逗号

    我有一个列名称战斗机 其中包含 mysql 中的一些值 例如 战士 摇滚 约翰 塞纳 承办人 所以 我希望当我在浏览器中显示它时 它应该看起来像 Rock 约翰 塞纳 送葬者 我只想使用 PHP 从数据库中删除逗号 任何帮助将不胜感激 Gi
  • Tweetsharp 授权不呈现 oauth 令牌

    我正在尝试在我的 asp net mvc 3 应用程序中实现 tweetsharp 但遇到了问题 我使用以下设置创建了一个新的 Twitter 应用程序 申请网站 http 127 0 0 1 8545 http 127 0 0 1 854
  • 当互联网连接或断开时收到通知

    我有一个在 Net 4 0 客户端下开发的 WPF 和 C 桌面应用程序 必须根据 PC 上的互联网是否可用来显示或隐藏某些数据的框架 这意味着我必须能够尽快检测到互联网是否断开或连接 以便做出反应 例如 断开无线网络或拔掉网络电缆 当我进
  • Angular 6 构建中的 style.js 是什么

    偷看html源代码 我使用 sass 使用 ng 6 构建 SPA 我找到了这些文件列表 我想知道 style js 是做什么用的 我正在
  • VIM自动插入PHPdoc

    有没有办法使用命令或组合键在 VIM 中插入 PHPDoc 例如 我有一堂课 class MyClass public function construct public function destruct command here to