문제

다음과 같은 기능 정의로 시작하는 Bash 스크립트 파일이 있습니다.

#!/bin/bash
# .....
# .....
function test {
...
...
}
...
...

VIM 7.2를 사용하고 설정했습니다 g:sh_fold_enabled=1 배쉬로 폴딩이 활성화되도록합니다. 문제는 함수 테스트의 폴딩이 올바르게 끝나지 않으며, 즉 파일 끝까지 지속된다는 것입니다. 다음과 같이 보입니다.

#!/bin/bash
# .....
# .....
+-- 550 lines: function test {----------------------------------------
~
~

함수 자체는 약 40 줄에 불과하며, 나는 이와 같이 보이는 무언가를 원합니다 ( "이미지"는 thousend 단어 이상을 말합니다.

#!/bin/bash
# .....
# .....
+-- 40 lines: function test {----------------------------------------
...
...
...
~
~

이 문제에 대한 좋은 해결책을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

나는 일부 연구를 수행했고 문제를 해결하는 방법을 찾았습니다. 파일이 끝날 때까지 VIM이 접는 기능을 중단하려면 구문 영역에 건너 뛰기 진술을 추가해야했습니다. shExpr (파일에서 sh.vim, 보통 어딘가에 배치됩니다 /usr/share/vim/vim70/syntax/):

syn region shExpr ... start="{" skip="^function.*\_s\={" end="}" ...

이 변경 사항은 구문 파일이 { 그리고 } 실제로 기능 그룹에 속할 때 Shexpr 그룹에 속합니다. 아니면 어쨌든 내가 이해 한 방법입니다.

참고 :이 수정은 다음 구문에만 작동합니다.

function test
{
....
}

그리고 이것을위한 것이 아닙니다 :

function test {
....
}

마지막 버그에 대한 빠르고 더러운 수정은 @shfunctionList 클러스터에서 SHEXPR을 제거하는 것입니다.

다른 팁

단지 작동해야하지만 구문 파일에는 버그가있는 것 같습니다. 폴드 영역은 실제로 '함수'라는 단어에서 시작하여 '}'를 계속하려고 시도하지만 '{... ...}'영역에 대한 강조 표시는 '}'를 인수하고 다른 사람을 검색 할 때 계속됩니다. 하나. 다른 '}'를 추가하면 이것을 실제로 볼 수 있습니다.

function test {
    ...
}
}

더 간단한 솔루션이있는 것 같습니다 레딧.

게시물의 저자를 인용하기 위해 :

내가 사용하는 옵션은 다음과 같습니다.

syntax=enable

filetype=sh

foldmethod=syntax

let g:sh_fold_enabled=3

g:is_sh=1

편집 : 해결 방법

vim -u none -c 'let g : sh_fold_enabled = 7'-c ': set fdm = syntax'-c 'sy on'file.sh

G : Sh_fold_enabled = 4는 토론에서 주름 수준으로 합의 된 것 같습니다. 이 솔루션은 저를 위해 완벽하게 작동합니다. 구문 파일을 편집 할 필요가 없었습니다.

편집 : g : sh_fold_enabled = 5는 실제로 올바른 것입니다. 또한 4. 또한 포스터가 Reddit에 표시된 것처럼 해당 명령은 플러그인을 제외한 VIMRC의 다른 설정보다 먼저 가야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top