2009-08-21 2 views
6

나는 vim에서 두 개의 autocmd 이벤트를 논리적으로 처리해야한다. 기본적으로 FileType이 tex 인 경우 명령은 InsertLeave에서 실행해야합니다. 이것이 (.vimrc에서) 작동해야하는 것 같습니다 :빔 : 자동 조합?

autocmd FileType tex :autocmd InsertLeave :w 

그러나 그렇게하지는 않습니다. 중첩 된 옵션은 수동으로해야한다고 나타내지 만 도움이되지 않습니다.

autocmd BufEnter,BufLeave ... 

가 할 너무 어렵지 않을해야 논리 AND : 논리적-OR 할

쉬운.

+0

ZyX의 솔루션은 Eevee의 로컬 버퍼 문제를 해결하므로 해답을 찾아야합니다. – Profpatsch

+0

끝났습니다.하지만 그 말을 듣고 있습니다. 로컬 버퍼 문제를 기억하는 것 같지만 몇 년 동안 라텍스를 작성하지 않았고 2 년 전에 이맥스로 전환했습니다. –

답변

8

나는 @Eevee 대답에 수정이있다.

+0

이것은 훌륭합니다. 이제 브라우저로 전환 할 때 asciidoc 문서를 다시 렌더링 할 수 있습니다. – Profpatsch

+1

아참. 문제 : 두 번째 자동 명령은 매번 * tex 파일로 전환합니다. 잠시 후 vim은 삽입 모드를 종료 한 후 연속으로 많은 시간을 절약하기 시작합니다. – Profpatsch

+1

@Profpatsch가 수정되었습니다. – ZyX

4

InsertLeave에는 여전히 매개 변수가 필요합니다.

이것은 나를 위해 작동 : 나중에 같은 버퍼에 비 tex 파일을 편집 할 경우이 문제가 유지됩니다

autocmd FileType tex :autocmd InsertLeave * :w 

참고. 을 편집 할 때 간단하게 제거 할 수 있는지 모르겠지만 특정 유형의 파일.

+0

사실, 매력처럼 작동합니다. –

+0

콜론은 실제로 필요하지 않습니다. 예 : 'au FileType go au VimLeave * call system ("killall gocode") – Meow

4

자동 완성의 패턴 옵션을 사용할 수 있습니다. 시간 autocmd-buflocal을 : 당신이

augroup TexAutoWrite 
    autocmd FileType tex :autocmd! TexAutoWrite InsertLeave <buffer> :update 
augroup END 

이,`볼 사용해야 하나의 버퍼에만 자동 명령 작업을 할 :

autocmd InsertLeave *.tex w 
+0

파일 확장명이 파일 형식과 일치하지 않거나 존재하지 않을 때 작동하지 않습니다. 백업/임시 파일과 비교할 때 또는 파일의 위치에 따라 파일 형식이 결정되는 경우에 발생합니다. 시스템 구성 파일. – Walf