2016-07-17 2 views
2

vim-latex 플러그인에서 큐를 가져 와서 포트란 프로그램 단위, 유형 정의 등의 자동 완성을위한 Vim 스크립트를 작성했습니다. 커서가 단어 program에있는 동안 내가 <F5>을 공격하면 순간 구조체 이름으로 사용 된 자리 표시자는 올바른 들여 쓰기를 손상시킵니다.

는 내가 처음 <+program_name+>

PROGRAM <+program_name+>   

    USE <+used_module_name+> 

    IMPLICIT NONE 

    <++> 

END PROGRAM <+program_name+> 

시각적으로 선택 빔 선택 모드에서 다음 얻는다. 그리고 이것은 나를 위해 완벽합니다.

이러한 자리 표시자를 IF 구조의 레이블로 사용하면 문제가 발생합니다. 내가 if를 확장 할 때 나는 두 번째 줄은 사실로 인해 들여 쓰기되지

<+name+>: IF (<+logical expression+>) THEN 
    <++> ! this line is not indented => in turn the following are negative indented 
ELSE IF (<+logical expression+>) THEN 
    <++> 
ELSE 
    <++> 
END IF <+name+> 

은 (적어도 내가 생각!) 문자열 <+name+>이 유효한 이름이 아닌 것을 얻을. 결과적으로 다음 행이 뒤로 이동합니다 (첫 번째 열에 if가있는 경우 분명히 두 번째 행만 잘못 표시됨).

이것은 또한 DO 구조를 위해 일하지만, 이상하게 SELECT CASE 구조에 대한 발생하지 않습니다

<+name+>: SELECT CASE (<+case expression+>) 
CASE (<+case selector+>) 
    <++> 
CASE DEFAULT 
    <++> 
END SELECT <+name+> 

을 그리고 나는 soultion이 존재하고 그렇게 복잡하지 있어야합니다 생각하는 이유입니다.

+3

[UltiSnips] (https://github.com/SirVer/ultisnips)와 같은 기존 스 니펫 솔루션 중 하나를 고려하는 것이 좋습니다. [vim-snippets] (https://github.com/honza/vim-snippets) 스 니펫 모음을 함께 사용할 수 있으며 Fortran에 대한 스 니펫이 있습니다. –

+0

'UltiSnips가 도움이 되었기 때문에 제대로 설치했다고 생각합니다.하지만 vim-snippets를 설치할 수 없었습니다. –

+0

왜 'vim-snippets'을 설치하지 않았다고 생각하십니까? 다른 플러그인과는 달리 'vim-snippets'은 데이터만으로 "아무것도"하지 않습니다. –

답변

0

"더러운"방식으로 즉, IF...THEN...ELSE...END IFDO...END DO 구조를 생성하는 명령 시퀀스에서 적절한 위치에 공백을 삽입하여 문제를 해결하기로 결정했습니다. 이것은 우아한 해결책은 아니지만 그렇게 많은 단점이 있다고 생각하지 않습니다. 변경할 수있는 유일한 것은 shiftwidth에 따라 명령 시퀀스에 수동으로 추가 할 공간의 수입니다.

@SatoKatsura가 의견에서 제안했듯이이 길을 포기하고 기존 스 니펫 솔루션을 사용하는 것이 좋습니다.

관련 문제