2011-10-20 2 views
0

저는 Janus를 사용하고 있습니다 (질문을 이해하는 데 중추적 인 것은 아닙니다). 그들이하는 일은 기본적으로 다음과 같이 재 작성됩니다. e : NERDTree로 작업하려면 편집하지만 NERDTree는 강제로 파일 열기 (예 : e!)를 지원하지 않습니다. 그래서 저는 다시 쓰는 것을 썼습니다 : 편집! 로 : 그래서 이미 내장 된 것처럼 경우 스푸핑하기 위해 노력하고있어! 편집이 내가 생각 해낸 것입니다 : : 전자!하지만 난 그냥 사용의 이점을 좋아한다.Vim 함수/명령을 쓰려고합니까?

ca Edit! e! <bar> Edit 

만 문제는 적어도 한 번 저장하지 않은 파일에 대해서는 그렇게 할 수 없다는 것입니다. 하지만 나는 알고있다. 아무 일도 일어나지 않은 채로 저장되지 않은 버퍼를 닫고 계속 움직인다.

ca Edit! bd! <bar> Edit 

필자가해야 할 일은 항상 적절한 시나리오에서 올바른 명령을 사용할 논리를 작성하는 것입니다. 논리가 모든 페이지에서 실행되지 않는 것이 바람직합니다. 명령을 실제로 실행해야만 실제로 알아낼 수 있습니다. 어떤 아이디어?

편집 : #vim 채널에 묻습니다. (도움이 많이되었습니다.) ... 확장 ("%")을 사용하여 존재 여부를 확인하면 내 사례에 도움이 될 것이라고 말했습니까? 모르겠지만 최대한 자세하게 설명하십시오.

+0

난 그냥 수퍼 유저에 비슷한 질문을했다. 대답은 도움이 될 수 있습니다. http://superuser.com/questions/348359/how-do-i-create-a-shortcut-for-a-find-and-replace-command-in-vim – CamelBlues

+0

조금 있지만 문제는 내가 저장하지 않은 버퍼 또는 한 번 저장 한 파일에 있는지 여부를 감지하고 명령 (또는 사용자 명령) 내에서 사용하는 방법을 알아내는 것입니다. – xckpd7

+0

명령 줄 약어를 사용할 때는주의해야합니다. 자세한 내용은 http://stackoverflow.com/questions/7513380/vim-change-x-function-to-delete-buffer-instead-of-save-quit/7515418#7515418을 참조하십시오. –

답변

0

시도해보십시오. 이 같은 함수를 정의 :

function! CommandAbbrForEdit() 
    if &modified 
     return 'bd! | Edit' 
    endif 
    return 'e! | Edit' 
endfunction 

는 다음과 같이 귀하의 약어를 정의

cabbrev <expr> Edit! CommandAbbrForEdit()