Vim에서 파스칼 자동 들여 쓰기에 문제가 있습니다.빔 : 파스칼 자동 들여 쓰기
begin
writeln('Hello World');
end.
빔은 들여 쓰지 않음 end.
. 그러나 end;
이 있으면 올바르게 들여 쓰기됩니다.
gg=G
을 수행 할 때 전체 코드가 올바르게 들여 쓰여집니다. Vim에게 gg=G
같은 명령을 "실행 중"으로 사용하게하는 방법이 있습니까?
Vim에서 파스칼 자동 들여 쓰기에 문제가 있습니다.빔 : 파스칼 자동 들여 쓰기
begin
writeln('Hello World');
end.
빔은 들여 쓰지 않음 end.
. 그러나 end;
이 있으면 올바르게 들여 쓰기됩니다.
gg=G
을 수행 할 때 전체 코드가 올바르게 들여 쓰여집니다. Vim에게 gg=G
같은 명령을 "실행 중"으로 사용하게하는 방법이 있습니까?
그래 보이네요. (버그 보고서를 제출해야합니다. 파일 맨 위의 $VIMRUNTIME/indent/pascal.vim
에있는 스크립트의 관리자를 찾으십시오.
=end.
에서 indentkeys
까지 추가하면됩니다. indentkeys
은 vim이 현재 행을 다시 시도해야 할 때 제어합니다. 이렇게하려면 setlocal indentkeys+==end.
을 파일 ~/.vim/after/indent/pascal.vim
에 추가하십시오 (존재하지 않으면 파일과 디렉토리를 만들어야합니다).
이 파일은 일반적인 들여 쓰기 스크립트가 원본으로 만들어지면 원본이됩니다.
는 :h indentkeys
보고 :h after
사이드 기록해 둡니다 : gg=G
는 전체 파일을 reindents 그러나 그것은 하나의 명령이 아닙니다. 그것은 실제로 두 개의 다른 것들입니다. gg
은 파일의 맨 위로 이동하고 ={motion}
은 현재 라인에서 모션의 끝으로 다시 들어가게됩니다. 이 경우 {motion}
은 파일의 끝으로 이동합니다. 그래서 우리는 전체 파일을 다시 열었습니다.
나는 당신이 무엇을 요구하고 있는지 전혀 모른다. – FDinoff
@ Fdinoff,'end.' 토큰은'begin'과 같은 열에서 시작되도록 들여 쓰기되어야합니다. 이 설명에 따르면,'end' 다음에 세미콜론이 올 때 제대로 들여 쓰여지지만 마침표가 올 때가 아니라 들여 쓰기됩니다. 마침표는 현재 파일의 끝을 표시하기 때문에 프로그램에서 다른'begin'-'end' 쌍과 비교해 거의 발생하지 않으며, 아마도 Vim의 Pascal 구문 파일에서 그 세부 사항을 무시했을 것입니다. –
@ RobKennedy 설명해 주셔서 감사합니다. Vim의 Pascal 들여 쓰기 파일에서 무시되었습니다. – FDinoff