VIM Вставить PHPdoc автоматически - PullRequest
17 голосов
/ 30 сентября 2011

Есть ли способ вставить PHPDoc в VIM, используя команду или комбинацию клавиш?

Например, у меня есть класс:

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 ]

44 голосов
/ 21 января 2012

Это можно сделать довольно эффективно с легким плагином phpDocumentor .

Редактировать Вот модифицированная версия с более поздней разработкой.

Редактировать Вот версия 2 плагина 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 с 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...
}

Пример блока документа класса

Авторские права, версия, автор и т. Д. Включены по умолчанию в блок документации класса. Вы можете изменить плагин, добавив в него свои собственные значения по умолчанию:

/**
 * 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...
  }
}
?>
4 голосов
/ 22 января 2012

Предположим, вы разместили свой шаблон в ~ / templates / phpdoc.php. С помощью приведенного ниже сокращения, если вы введете ,p, вы будете прочитать содержимое вашего phpdoc.php в текущий файл, (в текущей строке или ниже - одна из них).

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

Затем просто добавьте строку в ваш файл .vimrc, заменив путь к файлу и ,p на ваше усмотрение.

1 голос
/ 30 сентября 2011

Я не могу говорить конкретно о PHP, но у вас есть несколько вариантов.Вы можете использовать аббревиатуры (возможно, не подходит для конкретного примера) или вы можете найти плагин.Я могу предложить https://github.com/garbas/vim-snipmate (я использую его, и он отлично работает).

...