카테고리 보관물: vi

vi

WinEnter, BufEnter, BufRead, Syntax, FileType 이벤트의 순서는 무엇입니까? :와 함께 BufRead). 이것을 잘 아는 사람이

나는 autocmd.txt도움을 받았고, 이것에 관한 정보는 흩어져 있고 항상 존재하지는 않습니다 (예 :와 함께 BufRead).

이것을 잘 아는 사람이 이러한 사건의 순서를 열거 할 수 있습니까?

WinEnter
BufEnter (if this window is for a different buffer than the current)

쉽게 참조 할 수 있도록?

참고 사항 (아래 내 자신의 의견에서 복사) : 나는 그들에 대한 개별 설명에 대해 이야기하는 것이 아니라 서로 상호 작용하는 방식과 발생 순서에 대해 이야기하고 있습니다. 예를 들어 WinEnter“Vim은 WinEnter 자동 명령 이후에 BufEnter 자동 명령을 실행합니다” TabEnter라고 말하고 “WinEnter를 트리거 한 후 BufEnter 이벤트를 트리거하기 전에”이렇게 여러 곳에 흩어져 있습니다. 그리고 때로는 전혀 언급되지 않습니다 (예를 들어 BufReadBufEnter 이후 또는 이전에 실행되는지 언급하지 않습니다 . 전문가가 다른 정보에서 정보를 추론 할 수는 있지만
그렇게 할 수는 없습니다. 비전문가가 신속하게 조회 할 수있는 이러한 이벤트 순서에 대한 단일의 간단한 참조를 작성합니다.autocmd 이벤트 사양.



답변

@sundar 답변을 완료하려면 다음을 수행하십시오.

로깅 기능을 사용하여 이벤트 순서를 간단히 기록 할 수 있습니다.

augroup EventLoggin
  autocmd!
  autocmd BufNewFile * call s:Log('BufNewFile')
  autocmd BufReadPre * call s:Log('BufReadPre')
  ...
  autocmd User * call s:Log('User')
augroup END

function! s:Log(eventName) abort
  silent execute '!echo '.a:eventName.' >> log'
endfunction

전체 파일보기 : https://gist.github.com/nobe4/aa8313fe98ca8821afad

그런 다음 tail -f log실시간 자동 명령 이벤트 활동을 얻을 수 있습니다 .


답변

나는 다른 키워드 세트로 이것에 대해 인터넷 검색을 시도하고 다음과 같은 시도로 금을 쳤다 : http://www.ibm.com/developerworks/library/l-vim-script-5/

특히이 부분은 현재 질문과 관련이 있습니다.

예를 들어, Vim을 시작하고 demo.txt라는 파일을 편집하고 삽입 모드로 바꾸고 일부 텍스트를 입력 한 후 파일을 저장 한 다음 Vim 세션은 Listing 1과 같은 일련의 이벤트를 받는다.

Listing 1. 간단한 Vim 편집 세션의 이벤트 순서

> vim

  1. BufWinEnter (기본 창 만들기)
  2. BufEnter (기본 버퍼 생성)
  3. VimEnter (Vim 세션 시작) : edit demo.txt
  4. BufNew (demo.txt를 포함 할 새 버퍼 만들기)
  5. BufAdd (새 버퍼를 세션의 버퍼 목록에 추가)
  6. BufLeave (기본 버퍼 종료)
  7. BufWinLeave (기본 창 종료)
  8. BufUnload (버퍼 목록에서 기본 버퍼 제거)
  9. BufDelete (기본 버퍼 할당 해제)
  10. BufReadCmd (demo.txt의 컨텍스트를 새 버퍼로 읽음)
  11. BufEnter (새 버퍼 활성화)
  12. BufWinEnter (새 버퍼 창 활성화) i
  13. InsertEnter (삽입 모드로 교체)

여전히 완전히 포괄적 인 것은 아니지만 (예 : BufReadaka에 대한 언급은 BufReadPost없지만 이후에 나올 것이라고 가정합니다 BufReadCmd) 훌륭한 출발입니다.

하지만 정보의 한 중요한 누락 된 부분은 어떻게 FileType하고 Syntax이와 상호 작용 autocmd 이벤트 (가정 filetypesyntax에 이미 새 파일은 그 파일 형식 및 구문 빔에 알려진 열립니다).


답변