Vim Insert PHPDoc automatycznie

Czy można wstawić PHPDoc do Vima za pomocą kombinacji komend lub klawiszy?

Na przykład mam klasę:

class MyClass
{

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

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

}

Chciałbym wstawić coś w stylu:

/**
* method() 
*
* description
*
* @access   
* @author    
* @param    type    $varname    description
* @return   type    description
* @copyright
* @version
*/
A potem mogę wypełnić resztę ręcznie. Dziękuję
 17
Author: Tech4Wilco, 2011-09-29

3 answers

Można to zrobić całkiem skutecznie za pomocą lekkiej wtyczki phpdocumentor .

Edytuj Oto zmodyfikowana wersja Z nowszym rozwojem.

Edytuj Oto Wersja 2 wtyczki phpDocumentor . Jest to nowsze niż dwa powyższe linki.

Zainstaluj wtyczkę w swoim katalogu $VIMFILES/plugin i dodaj ją do swojego .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> 

Powyższe wiąże phpDocumentor z Ctrlp in insert, tryb normalny i wizualny. Umieść kursor na definicji klasy, funkcji lub zmiennej, naciśnij Ctrlp, A wtyczka spróbuje utworzyć blok doc na podstawie definicji.

Przykładowy blok funkcji doc:

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

Przykładowy blok klasy doc

Prawa autorskie, wersja, autor itp. są domyślnie dołączane do bloku doc klasy. Możesz zmodyfikować wtyczkę, aby zawierała własne domyślne wartości dla tych:

/**
 * TestClass  
 * 
 * @package 
 * @version $id$
 * @copyright 
 * @author Michael <[email protected]> 
 * @license 
 */
class TestClass {

}

Pełna klasa abstrakcyjna przykład:

<?php
/**
 * TestClass 
 * 
 * @abstract
 * @package 
 * @version $id$
 * @copyright 
 * @author Michael <[email protected]>
 * @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...
  }
}
?>
 44
Author: Michael Berkowski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-15 15:08:15

Załóżmy, że umieścisz swój szablon w ~ / templates / phpdoc.php. Z poniższym skrótem, jeśli wpiszesz ,p, będziesz przeczytaj zawartość swojego phpdoc.php do bieżącego pliku, (Przy lub poniżej bieżącej linii - jedna z nich ).

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

Następnie po prostu dodaj wiersz do swojego .plik vimrc, zastępujący file-path I ,p do Twoich upodobań.

 4
Author: kikuchiyo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-22 06:01:46

Nie znam się konkretnie na PHP, ale masz kilka opcji. Możesz użyć skrótów (może nie jest to dobre dla konkretnego przykładu) lub możesz poszukać wtyczki. Mogę zasugerować https://github.com/garbas/vim-snipmate ( używam go i działa dobrze).

 1
Author: lucapette,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-29 21:50:45