是否有一种简单的方法可以在vim中对齐phpdoc注释块?
我想要
/**
* Call an API method.
* @param string $method The API method to call, e.g. 'lists/list'
* @param array $args An array of arguments to pass to the method. Will be json-encoded for you.
* @return array Associative array of json decoded API response.
*/
格式为
/**
* Call an API method.
* @param string $method The API method to call, e.g. 'lists/list'
* @param array $args An array of arguments to pass to the method. Will be json-encoded for you.
* @return array Associative array of json decoded API response.
*/
格式化包含@return的行可能很难,因为它不包含第三列。因此,即使我能想出一种方法来只对齐包含@param的行,这将是很好的。
修改:
我已经尝试了tabular addon,但这不起作用,因为在上述情况下,我们不能使用空格作为分隔符。
编辑2 :
这是@PeterRincker回答失败的第二个用例
/**
* Call an API method.
* @since 1.7
* @param string $method The API method to call, e.g. 'lists/list'
* @param array $args An array of arguments to pass to the method. Will be json-encoded for you.
* @return array Associative array of json decoded API response.
*/
变成
/**
* Call an API method.
* @since 1 .7
* @param string $method The API method to call, e.g. 'lists/list'
* @param array $args An array of arguments to pass to the method. Will be json-encoded for you.
* @return array Associative array of json decoded API response.
*/
答案 0 :(得分:3)
我确信这可以简化,但它适用于您的示例案例:
:Tabularize/@\w\+\s\+\zs\S\+\|\%(@\w\+.*\)\@<=\u.*/
概述
关键是选择好的分隔符来分割,因为我们想要对齐@return
行以及@param
行。使用Tabularize在@
- 单词和第一个大写字母之后拆分WORD的开头。
解释
\|
以正则表达式模式创建分支。这意味着我们可以拆分两个分隔符@\w\+
匹配@
后跟一个字。例如@param
\zs
设置匹配的开头@\w\+\s\+\zs\S\+
匹配@
- 单词后跟WORD,并将匹配的开头设为WORD的开头\u
匹配大写字母\u.*
匹配大写字母后跟其他行以防止更多分割\%(...\)
非捕获组\@<=
是vim的正面看法。 \(foo\)\@<=bar
在bar
foo
后匹配foobar
\%(@\w\+.*\)\@<=\u
匹配@
- 字常用表格对齐成语
\zs
设置匹配的开始.*
结束以消耗其余部分并阻止更多分裂如需更多帮助,请参阅:
:h :Tabularize
:h /\|
:h /\S
:h WORD
:h /\zs
:h /\u
:h /\%(
:h /\@<=