Vim의 Perl 자동 서식

Vim의 Perl 자동 서식

형식이 잘못된 Perl 코드가 있습니다.

if ($a==1){
   &err_report("$a");
while($b!=1){
                      &err_ok();
}
}

나는하고 싶다재포맷Vim에서요. 명령을 사용한 후 gg=G코드 형식은 다음과 같습니다.

if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}

실제로 Vim에서 아래와 같이 형식을 지정하고 싶습니다.

if ($a==1){
  &err_report("$a");
  while($b!=1){
    &err_ok();
  }
}

어떻게 해야 하나요?


  • 사용 후vim-펄, 자동 서식이 여전히 내가 원하는 대로 작동하지 않습니다.

답변1

Unix 계열 운영 체제를 사용한다고 가정하면...

잡아변덕스러운(상당히 사용자 정의 가능한 Perl 코드 들여쓰기/포맷터). 그런 다음 ~/.vimrc다음을 포함하도록 파일을 업데이트합니다 .

filetype plugin indent on
autocmd FileType perl setlocal equalprg=perltidy\ -st

이렇게 하면 원하는 Perl 코드 블록을 표시한 다음 를 눌러 다시 포맷할 수 있습니다 =. 이는 perltidy가 에 있다고 가정합니다 $PATH. 그렇지 않으면 실행 파일의 전체 경로를 지정하면 됩니다.

기본적으로 perltidy코드 형식은 다음과 같습니다.

if ( $a == 1 ) {
    &err_report("$a");
    while ( $b != 1 ) {
        &err_ok();
    }
}

-i=2... 하지만 ( --indent-columns=2) 및 -pt=2( )를 사용하면 (이러한 옵션을 한 줄에 하나씩 파일 --paren-tightness=2에 입력하게 됩니다 )~/.perltidyrc

if ($a == 1) {
  &err_report("$a");
  while ($b != 1) {
    &err_ok();
  }
}

이것은 당신이 요청한 것과 거의 같습니다.

뒤에 공백이 없어야 하는 경우에는 ( )를 while사용하십시오 .-nsak=while--nospace-after-keyword=while

답변2

먼저 필요한 서식 옵션을 설정합니다 set cindent sw=2 expandtab(예: C와 같은 들여쓰기 사용, 2개의 공백 들여쓰기, 탭 문자를 공백으로 확장). 그런 다음 전체 파일/버퍼를 들여씁니다.

답변3

Vim은 Perl 들여쓰기 플러그인과 함께 제공되며, :filetype indent on시작 프로그램(예: vimrc)에 있는 한 Perl 파일 들여쓰기를 수행할 수 있습니다. 그러나 들여쓰기만 수행할 뿐 개행 문자를 추가하거나 제거하지는 않습니다.

관련 정보