21세기소년

vim의 autocmd 이벤트들

vim은 특정 이벤트가 발생할 때 자동으로 명령을 수행할 수 있는데, 이를 au[tocmd]로 지정할 수 있다. 자동 명령 세팅 방법은 다음에 다루기로 하고, 오늘은 이들 이벤트에 대해서 좀 정리

  • 버퍼 읽기/시작하기
    • BufNewFile 새 파일을 만들어서 편집하기 시작함
    • BufReadPre 파일을 읽기 전, 새 버퍼를 편집하기 시작함
    • BufRead 파일을 읽고 새 버퍼를 편집함
    • BufReadPost 위와 같이 파일을 읽고 새 버퍼를 편집함 (차이가?)
    • BufReadCmd 새 버퍼를 시작하는 명령을 받았을 때
  • 파일 읽기
    • FileReadPre :read 명령으로 새 파일을 읽기 직전
    • FileReadPost :read 명령으로 새 파일을 읽은 직후
    • FileReadCmd :read 명령을 입력받는 때
  • 버퍼 전체 쓰기
    • BufWrite 전체 버퍼를 파일에 쓰기 시작할 때
    • BufWritePre 전체 버퍼를 파일에 쓰기 시작할 때
    • BufWritePost 전체 버퍼를 파일에 쓴 후
    • BufWriteCmd 쓰기 명령을 받았을 때, 아직 파일에는 쓰기 전
  •  버퍼 일부 쓰기
    • FileWritePre 버퍼의 일부를 파일에 쓰기 시작함
    • FileWritePre 버퍼의 일부를 파일에 쓰기 시작함
    • FileWriteCmd 버퍼의 일부를 파일에 쓰는 명령을 받을 때
    • FileAppendPre 파일의 뒤에 내용을 덧붙일 때
    • FileAppendPost 파일의 뒤에 내용을 추가한 후
    • FileAppendCmd 파일에 추가 명령을 받을 때
  •  버퍼 관련
    • BufAdd 새 버퍼가 버퍼 목록에 추가된 직후
    • BufCreate 새 버퍼가 생성되어 버퍼 목록에 추가된 직후
    • BufDelete 버퍼 목록에서 버퍼가 삭제되기 전
    • BufWipeout 버퍼를 완전히 삭제하기 직전
    • BufFilePre 현재 버퍼의 이름을 바꾸기 직전
    • BufFilePost 현재 버퍼의 이름이 바뀐 직후
    • BufEnter 버퍼에 진입한 직후
    • BufLeave 버퍼를 떠나 다른 버퍼로 옮기기 직전
    • BufWinEnter 화면 창에 버퍼가 표시된 후
    • BufWinLeave 창에서 버퍼가 제거되기 직전
    • BufUnload 버퍼가 언로드되기 전
    • BufHidden 버퍼가 숨겨진 직후
    • BufNew 새 버퍼를 만든 직후
  • 스왑
    • SwapExists 스왑파일이 있을 때
  • 옵션
    • FileType “filetype” 옵션이 세팅될 때
    • Syntax “syntax”옵션이 세팅될 때
    • EncodingChanged “encoding” 옵션이 세팅될 때
    • TermChanged “term”의 값이 바뀔 때
  • 시작 및 종료
    • VimEnter vim 시작 후
    • GUIEnter GUI가 잘 시작된 후
    • TermResponse 터미널 응답 t_RV을 받은 후
    • VimLeavePre vim 종료 직전, viminfo 파일에 쓰기 전
    • VimLeave 종료 직전, viminfo 파일을 쓴 후
  • 그 외
    • FileChangedShell – Vim에서 파일을 편집한 이후, 이 파일이 변경됐음을 vim이 감지했을 때
    • FileChangedShellPost – 편집이 시작된 후 파일이 변경되었을 때
    • FileChangedRO – 읽기 전용 파일에 변경을 시작하려 할 때
    • ShellCmdPost – 쉘 명령을 실행한 후
    • ShellFilterPost – 쉘 명령으로 필터링한 후
    • FuncUndefined – 정의되지 않은 사용자 함수를 호출할 때
    • SpellFileMissing – 존재하지 않는 문법 파일을 사용하려할 때
    • SourcePre – vim 스크립트를 반입하기 직전
    • SourceCmd – 명령모드에서 vim 스크립트를 반입할 때
    • VimResized – vim 창의 크기가 변경되었을 때
    • FocusGained – vim이 입력 포커스를 받을 때
    • FocusLost – 입력 포커스를 잃을 때
    • CursorHold – 특정 시간 동안 아무 것도 눌러지지 않을 때
    • CursorHoldI – 입력 모드에서 특정 시간 동안 아무 키도 눌러지지 않을 때
    • CursorMoved – 일반 모드에서 커서가 움직일 때
    • CursorMovedI – 입력모드에서 커서가 움직일 때
    • WinEnter – 다른 창으로 들어갈 때
    • WinLeave – 창을 떠날 때
    • TabEnter – vim 창 내의 특정 탭으로 들어갈 때
    • TabLeave – 특정 탭을 떠날 때
    • ColorScheme –  색상 스킴이 변경될 때
    • RemoteReply – 서버의 응답을 vim이 받았을 때
    • QuickFixCmdPre – quickfix 명령이 실행되기 전
    • QuickFixCmdPost – quickfix 명령이 실행된 후
    • SessionLoadPost – 세션 파일의 로딩이 끝난 후
    • MenuPopup – 메뉴 팝업을 보여준 후
    • User“:doautocmd”와 함께 쓰임