Mar*_*slo 5 vim perl indentation autoindent
我有一段格式错误的 Perl 代码:
if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}
Run Code Online (Sandbox Code Playgroud)
我想在 Vim 中重新格式化它。使用命令后gg=G,代码格式为:
if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,我想在 Vim 中将其格式化如下:
if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
假设您使用的是类 Unix 操作系统...
获取perltidy(一个高度可定制的 Perl 代码缩进/格式化程序)。然后更新您的~/.vimrc文件以包含以下内容:
filetype plugin indent on
autocmd FileType perl setlocal equalprg=perltidy\ -st
Run Code Online (Sandbox Code Playgroud)
这将允许您标记您想要的任何 Perl 代码块,然后按 重新格式化它=。这假设perltidy在您的 中找到$PATH,否则只需指定可执行文件的完整路径。
默认情况下,perltidy将您的代码格式化为
if ( $a == 1 ) {
&err_report("$a");
while ( $b != 1 ) {
&err_ok();
}
}
Run Code Online (Sandbox Code Playgroud)
...但是通过使用-i=2( --indent-columns=2) 和-pt=2( --paren-tightness=2) (您可以将这些选项放在您的~/.perltidyrc文件中,每行一个)您会得到
if ($a == 1) {
&err_report("$a");
while ($b != 1) {
&err_ok();
}
}
Run Code Online (Sandbox Code Playgroud)
这几乎就是你所要求的。
如果您确实必须在 之后没有空格while,请使用-nsak=while( --nospace-after-keyword=while)。
| 归档时间: |
|
| 查看次数: |
4501 次 |
| 最近记录: |