刚刚完成将PHP_Beautifier合并到Vim中,并且它删除了空白让我烦恼的事实。显然自2007年以来它是bug。有一个hack来解决这个问题,但它会导致其他问题。相反,我决定使用圆形方法。
首先通过建议的here
命令将多个空行转换为一个空行:g/^\_$\n\_^$/d
下一步将所有空白行转换为唯一的空白行(确保在美化过程中不会更改)
:%s/^[\ \t]*\n/$x = 'It puts the lotion on the skin';\r/ge
下一步调用PHP_Beautifier
:% ! php_beautifier --filters "ArrayNested() IndentStyles(style=k&r) NewLines(before=if:switch:foreach:else:T_CLASS,after=T_COMMENT:function)"<CR>
最后将所有唯一线条更改为空行,如此
:%s/$x='It puts the lotion on the skin';//ge
当我独立测试它们时,所有四个工作。我还将第三步映射到我的F8键,如此
map <F8> :% ! php_beautifier --filters "ArrayNested() IndentStyles(style=k&r) NewLines(before=if:switch:foreach:else:T_CLASS,after=T_COMMENT:function)"<CR>
但是当我尝试通过管道符号将命令串起来时,就像这样(我用空格填充管道以更好地显示不同的命令)
map <F8> :g/^\_$\n\_^$/d | %s/^[\ \t]*\n/$x = 'It puts the lotion on the skin';\r/ge | % ! php_beautifier --filters "ArrayNested() IndentStyles(style=k&r) NewLines(before=if:switch:foreach:else:T_CLASS,after=T_COMMENT:function)" | %s/$x = 'It puts the lotion on the skin';//ge<CR>
我收到以下错误
Error detected while processing /home/xxx/.vimrc: line 105: E749: empty buffer E482: Can't create file /tmp/vZ6LPjd/0 Press ENTER or type command to continue
如何将这些多个命令绑定到一个键,在本例中为F8。
感谢ib的回答,我终于开始工作了。如果有人遇到同样的问题,只需将此脚本复制到.vimrc文件
即可func! ParsePHP()
:exe 'g/^\_$\n\_^$/d'
:%s/^[\ \t]*\n/$x = 'It puts the lotion on the skin';\r/ge
:exe '%!php_beautifier --filters "ArrayNested() IndentStyles(style=k&r)"'
:%s/$x = 'It puts the lotion on the skin';//ge
endfunc
map <F8> :call ParsePHP()<CR>
答案 0 :(得分:1)
对于某些Ex命令,包括:global
和:!
,条形符号(|
)是
被解释为命令参数的一部分(完整见:help :bar
列表)。要链接两个命令,第一个命令允许在其中使用条形符号
参数,使用:execute
命令。
:exe 'g/^\_$\n\_^$/d' |
\ %s/^[\ \t]*\n/$x = 'It puts the lotion on the skin';\r/ge |
\ exe '%!php_beautifier --filters "ArrayNested() IndentStyles(style=k&r) NewLines(before=if:switch:foreach:else:T_CLASS,after=T_COMMENT:function)"' |
\ %s/$x = 'It puts the lotion on the skin';//ge