2010-01-04 6 views
36

나는 GUI 편집기가 점점 더 좌절함에 따라 마침내 Vim을 시도하기로 결정했습니다. 지금까지, 나는 그것을 사랑 해요,하지만 난 내가 가지고 있어요 문제에 대한 도움 ... 내가 cmap를 사용하여 빔에 :!python %에 명령을 :Pyrun을지도하려고Vim에 명령 추가

를 찾을 수 없습니다. 내가 :cmap을 입력하면 매핑이 잘 보입니다. 그러나 :Pyrun을 입력 할 때 다음과 같은 오류 메시지가 나타납니다.

편집기 명령이 아닙니다. Pyrun. 여기

나는의 .vimrc에 노력하고있어 무엇 :

:autocmd FileType python :cmap Pyrun<cr> !python %<cr> 
:autocmd FileType python :cmap Intpyrun<cr> !python -i %<cr> 

나는이 문제를 해결하기 위해 무엇을 할 수 있는가?

+0

이 URL에 http에서 42 PDF 읽기 : // zmievski.org/talks/ –

답변

35

그런 다음 각

에 기능 키를 매핑 할 수 있습니다

내가

command Pyrun execute "!python %" 
command Intpyrun execute "!python -i %" 

그런 :Pyrun:Intpyrun 작동합니다 당신의 .vimrc에서이 같은 또는 ftplugin/python_ft.vim을 시도 할 것

map <F5> :Pyrun<CR> 
map <F6> :Intpyrun<CR> 
+0

그게 효과가 있습니다! 감사! –

+2

버퍼 로컬 명령 (-b)이 더 좋습니다. –

+0

버퍼 로컬 명령을 추가하려면': command -buffer' ...': 명령 -b'이 작동하지 않습니다. – tbhartman

24

저는 개인적으로 다른 접근 방식을 선호합니다. 먼저 명령 인수를 수신 함수를 만든 다음 함수를 호출하는 명령을 생성합니다

fun! Pyrun(arg) "{{{ 
    execute '!python ' . expand('%') 
endfunction "}}} 

command! -nargs=* Pyrun call Pyrun('<args>') 

는하지만, 빔에서 그것을 할 수있는 더 좋은 방법이 같은

fun! DoSomething(arg) "{{{ 
    echo a:arg 
    " Do something with your arg here 
endfunction "}}} 

command! -nargs=* Meh call DoSomething('<args>') 

는 그래서 일 것이다. makeprg 사용

makeprg=python\ % 

그냥 현재 파이썬 파일을 실행 :make을 입력합니다. 오류 목록을 표시하려면 :copen을 사용하십시오.

+0

더 확장 성있는 접근 방식처럼 들립니다. 하나 이상의 명령을 실행해야한다면 아마 이런 식으로 할 것입니다. –

6

G'day는 karoberts 대답 유사

, 나는 더 직접적인을 선호 :

:map <F9> :!python %<CR> 

내 스크립트 나 또한 임시 파일을 캡처 한 후 autoread 싶은 몇 가지 출력을 생성하는 경우 그 내용을 다른 버퍼에 저장합니다.

:map <F9> :!python % 2>&1 \| tee /tmp/results 

그때 :set autoread을 입력하고 결과 파일이 때 쉽게 자동 갱신 버퍼의 실행의 결과를 볼 수 있습니다

:split /tmp/results<CR> 

그리고 다른 버퍼에 결과 파일을 열어 autoread 세트 개발중인 스크립트를 실행하여 업데이트되었습니다.

HTH

환호,

관련 문제