vim 代碼規範工具php-cs-fixer.phar
(參考https://github.com/FriendsOfPHP/PHP-CS-Fixer)
INSTALL
curl http://get.sensiolabs.org/php-cs-fixer.phar -o php-cs-fixer sudo chmod a+x php-cs-fixer sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer
至此,你可以直接用php-cs-fixer格式化代碼了
USAGE
(目前支援的level有psr0, psr1, psr2,symfony,contrib)
php-cs-fixer fix test.php --level=psr2 php-cs-fixer fix ./--level=psr2
這並不能滿足一個vimer的小心靈
vim-php-cs-fixer
INSTALL
Bundle 'stephpy/vim-php-cs-fixer
CONFIGURE
.vimrc(參考:https://github.com/stephpy/vim-php-cs-fixer)
" If php-cs-fixer is in $PATH, you don't need to define line below"let g:php_cs_fixer_path = "~/php-cs-fixer.phar"" define the path to the php-cs-fixer.pharlet g:php_cs_fixer_level = "psr2" " which level ?(psr0, psr1, psr2, symfony)let g:php_cs_fixer_config = "default"" configurationlet g:php_cs_fixer_php_path = "php" " Path to PHP" If you want to define specific fixers:"let g:php_cs_fixer_fixers_list = "linefeed,short_tag,indentation"let g:php_cs_fixer_enable_default_mapping = 1" Enable the mapping by default (pcd)let g:php_cs_fixer_dry_run = 0 " Call command with dry-run optionlet g:php_cs_fixer_verbose = 0" Return the output of command if 1, else an inline information.
以上配置我們發現
let g:php_cs_fixer_enable_default_mapping = 1 " Enable the mapping by default (pcd)
這個配置快速鍵為\pcd 實際操作中會發現極易出錯,而且太長了吧
.vim/bundle/vim-php-cs-fixer/plugin/php-cs-fixer.vim
if(g:php_cs_fixer_enable_default_mapping == 1) nnoremap <silent><leader>pcd :call PhpCsFixerFixDirectory()<CR> nnoremap <silent><leader>pcf :call PhpCsFixerFixFile()<CR>endif
可以發現
pcd是格式化目錄
pcf是格式檔案
現在可以把pcd,和pcf換成自己喜歡的快速鍵了
ps:是nomal模式,是一個快速鍵的首碼預設是\,可在vim中用map命令查看
附錄
psr0 [PSR-0] Classes must be in a path that matches their namespace, be at least one namespace deep, andtheclassname should match thefilename.encoding [PSR-1] PHP code MUST use only UTF-8without BOM (remove BOM).short_tag [PSR-1] PHP code must use the long tags orthe short-echo tags; it must not use the other tag variations.braces [PSR-2] The body of each structure MUST be enclosed by braces. Braces should be properly placed. Body of braces should be properly indented.elseif [PSR-2] The keyword elseif should be used instead ofelseif so that all control keywords looks like single words.eof_ending [PSR-2] A file must always endwith a single empty line feed.function_call_space [PSR-2] When making a method or function call, there MUST NOT be a spacebetweenthe method or function nameandthe opening parenthesis.function_declaration [PSR-2] Spaces should be properly placed in a function declaration.indentation [PSR-2] Code MUST use an indent of4 spaces, and MUST NOT use tabs for indenting.line_after_namespace [PSR-2] There MUST be one blank line afterthe namespace declaration.linefeed [PSR-2] All PHP files must use the Unix LF (linefeed) line ending.lowercase_constants [PSR-2] The PHP constants true, false, and null MUST be in lower case.lowercase_keywords [PSR-2] PHP keywords MUST be in lower case.method_argument_space [PSR-2] In method arguments and method call, there MUST NOT be a spacebefore each comma and there MUST be one spaceafter each comma.multiple_use [PSR-2] There MUST be one use keyword per declaration.parenthesis [PSR-2] There MUST NOT be a spaceafterthe opening parenthesis. There MUST NOT be a spacebeforethe closing parenthesis.php_closing_tag [PSR-2] The closing ?> tag MUST be omitted from files containing only PHP.single_line_after_imports [PSR-2] Each namespace use MUST go onits own line and there MUST be one blank line afterthe use statements block.trailing_spaces [PSR-2] Remove trailing whitespace attheendof non-blank lines.visibility [PSR-2] Visibility MUST be declared on all properties and methods; abstract and final MUST be declared beforethe visibility; static MUST be declared afterthe visibility.blankline_after_open_tag [symfony] Ensure there is no code onthe same line asthe PHP open tag anditis followed by a blankline.concat_without_spaces [symfony] Concatenation should be used without spaces.double_arrow_multiline_whitespaces [symfony] Operator => should not be arounded by multi-line whitespaces.duplicate_semicolon [symfony] Remove duplicated semicolons.empty_return [symfony] A return statement wishing toreturn nothing should be simply "return".extra_empty_lines [symfony] Removes extra empty lines.include [symfony] Include andfile path should be divided with a single space. File path should not be placed under brackets.join_function [symfony] Implode function should be used instead of join function.list_commas [symfony] Remove trailing commas inlist function calls.multiline_array_trailing_comma [symfony] PHP multi-line arrays should have a trailing comma.namespace_no_leading_whitespace [symfony] The namespace declaration line shouldn't contain leading whitespace.new_with_braces [symfony] All instances created with new keyword must be followed by braces.no_blank_lines_after_class_opening [symfony] There should be no empty lines afterclass opening brace.no_empty_lines_after_phpdocs [symfony] There should not be blank lines between docblock andthe documented element.object_operator [symfony] There should not be spacebeforeorafter object T_OBJECT_OPERATOR.operators_spaces [symfony] Binary operators should be arounded byat least one space.phpdoc_indent [symfony] Docblocks should have the same indentation asthe documented subject.phpdoc_no_access [symfony] @access annotations should be omitted from phpdocs.phpdoc_no_empty_return [symfony] @return void and @return null annotations should be omitted from phpdocs.phpdoc_no_package [symfony] @package and @subpackage annotations should be omitted from phpdocs.phpdoc_params [symfony] All items ofthe @param, @throws, @return, @var, and @type phpdoc tags must be aligned vertically.phpdoc_scalar [symfony] Scalar types should always be written inthe same form. "int", not"integer"; "bool", not"boolean"; "float", not"real"or"double".phpdoc_separation [symfony] Annotations in phpdocs should be grouped together so that annotations ofthe same type immediately follow each other, and annotations of a different type are separated by a single blank line.phpdoc_short_description [symfony] Phpdocs short descriptions should endin either a full stop, exclamation mark, or question mark.phpdoc_to_comment [symfony] Docblocks should only be used on structural elements.phpdoc_trim [symfony] Phpdocs should start andendwith content, excluding the very firstandlast line ofthe docblocks.phpdoc_type_to_var [symfony] @type should always be written as @var.phpdoc_var_without_name [symfony] @var and @type annotations should notcontainthe variable name.pre_increment [symfony] Pre incrementation/decrementation should be used if possible.remove_leading_slash_use [symfony] Remove leading slashes in use clauses.remove_lines_between_uses [symfony] Removes line breaks between use statements.return [symfony] An empty line feed should precede a return statement.self_accessor [symfony] Inside a classy element "self" should be preferred totheclassname itself.single_array_no_trailing_comma [symfony] PHP single-line arrays should not have trailing comma.single_blank_line_before_namespace [symfony] There should be exactly one blank line before a namespace declaration.single_quote [symfony] Convert double quotes to single quotes for simple strings.spaces_before_semicolon [symfony] Single-line whitespace before closing semicolon are prohibited.spaces_cast [symfony] A single space should be between cast and variable.standardize_not_equal [symfony] Replace all <> with !=.ternary_spaces [symfony] Standardize spaces around ternary operator.trim_array_spaces [symfony] Arrays should be formatted like function/method arguments, without leading or trailing single line space.unalign_double_arrow [symfony] Unalign double arrow symbols.unalign_equals [symfony] Unalign equals symbols.unary_operators_spaces [symfony] Unary operators should be placed adjacent to their operands.unused_use [symfony] Unused use statements must be removed.whitespacy_lines [symfony] Remove trailing whitespace attheendof blank lines.align_double_arrow [contrib] Align double arrow symbols in consecutive lines.align_equals [contrib] Align equals symbols in consecutive lines.concat_with_spaces [contrib] Concatenation should be used withat least one whitespace around.ereg_to_preg [contrib] Replace deprecated ereg regular expression functions with preg. Warning! This could change code behavior.header_comment [contrib] Add, replace or remove header comment.long_array_syntax [contrib] Arrays should use the long syntax.multiline_spaces_before_semicolon [contrib] Multi-line whitespace before closing semicolon are prohibited.newline_after_open_tag [contrib] Ensure there is no code onthe same line asthe PHP open tag.no_blank_lines_before_namespace [contrib] There should be no blank lines before a namespace declaration.ordered_use [contrib] Ordering use statements.php4_constructor [contrib] Convert PHP4-style constructors to__construct. Warning! This could change code behavior.phpdoc_order [contrib] Annotations in phpdocs should be ordered so that param annotations come first, then throws annotations, thenreturn annotations.phpdoc_var_to_type [contrib] @var should always be written as @type.short_array_syntax [contrib] PHP arrays should use the PHP 5.4 short-syntax.short_echo_tag [contrib] Replace short-echo with long format with $strict param. Warning! This could change code behavior.
以上就介紹了vim php代碼規範,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。