2010-08-15 3 views
6

새 파일이 기록 될 때마다 Vim이 'CommandTFlush'명령을 실행하려고합니다. Command-T 플러그인을 사용하지 않는 사용자는 'CommandTFlush'명령을 사용하여 현재 디렉토리의 파일 색인을 다시 작성합니다.새 파일을 쓸 때 CommandTFlush 명령을 실행하십시오.

내가 원하는 것은 CommandTFlush가 파일을 찾아 색인에 추가 할 수 있도록 파일을 디스크에 쓴 후 명령을 실행하는 것입니다.

나는 함수 나 자신을 작성하려고했지만, 하나는 발생하지 않거나 (파일이 기록되기 전에, 전체 포인트는 인덱스에 파일을 추가하는 것입니다) 너무 빨리 발사 :

au! BufWritePre * ks| call NewFilesUpdatesCommandT() 
function! NewFilesUpdatesCommandT() 
    let [email protected]% 
    if !filereadable(filename) 
     CommandTFlush 
    endif 
endfunction 

BufWritePre에서 일부 부울 var (isTheFileNew)를 설정하고 BufWritePost에서 CommandTFlush 명령을 실행하여 파일을 만들었지 만 구문을 이해할 수 없다면 해결할 수있을 것으로 생각됩니다. BufWritePre 콜백을 설정/해제 할 수있는 다른 솔루션이있을 수 있습니다. 가능한 경우 BufWritePre 콜백 내에서 호출합니다.

아무도 나를 도와 줄 수 없습니까? ;)

+0

자동 명령 시작시에'ks | '는 무엇을하고 있습니까? vim 도움말에서 찾을 수 없습니다. – ZyX

+0

발견. 왜 함수가 커서를 움직이지 않으면 자신의 위치를 ​​표시하고 싶습니까? – ZyX

+0

아무 생각도 없습니다. 그것은 #[email protected]에서 얻은 몇 가지 포인터에 기반한 잘못된 복사/붙여 넣기 작업 일뿐입니다. 도움말 파일에서 도움이되는 것을 얻는 방법을 아직 알지 못했습니다. 나는 여기에 Vim으로 제 3의 날에있다;) – peterfarsinsen

답변

2
augroup NFUCT 
    autocmd! 
    autocmd BufWritePre * call NFUCTset() 
augroup END 
function NFUCTset() 
    if !filereadable(expand('%')) 
     augroup NFUCT 
      autocmd BufWritePost * call NFUCT() 
     augroup END 
    endif 
endfunction 
function NFUCT() 
    augroup NFUCT 
     autocmd! 
     autocmd BufWritePre * call NFUCTset() 
    augroup END 
    CommandTFlush 
endfunction 

이 두 번째 제안의 실현이다.

+0

고마워! 내가 원했던 것처럼 정확하게 작동하고있는 것 같습니다. – peterfarsinsen

17

내 해결책은 다음과 같습니다. 파일이 작성 될 때마다 그리고 Vim의 창에 포커스가있을 때마다 CommandTFlush가 트리거됩니다. 이 기능은 vim 외부에서 파일을 만들 때 유용합니다. 예를 들어 버전 제어 시스템의 분기간에 전환하는 것입니다. 새 파일은 Vim에 다시 입력 한 직후 CommandT에서 사용할 수 있습니다.

augroup CommandTExtension 
    autocmd! 
    autocmd FocusGained * CommandTFlush 
    autocmd BufWritePost * CommandTFlush 
augroup END 
+0

잘 작동합니다. 나는 방금 .vimrc에 넣었고, CommandT는 내가 기대했던 것처럼 작동한다. 감사. –

+0

감사합니다. – jpc

+0

완벽한 - 감사합니다! – Skilldrick

관련 문제