2010-01-04 61 views
36

我終於決定嘗試Vim,因爲我越來越受到GUI編輯的沮喪。到目前爲止,我很喜歡它,但我無法找到我遇到的問題的任何幫助...向Vim添加命令

我想映射命令:Pyrun:!python %在Vim使用cmap。如果我輸入:cmap,映射顯示正常。但是,在輸入:Pyrun時,我收到以下錯誤消息:

不是編輯器命令:Pyrun。

這裏就是我想在.vimrc裏:

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

我能做些什麼來解決這個問題?

+0

閱讀本網址爲http 42 PDF:// zmievski。org/talks/ – 2011-07-09 02:18:31

回答

35

我會嘗試在.vimrc這樣的事情或你的ftplugin/python_ft.vim

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

然後:Pyrun:Intpyrun應該工作

然後,您可以映射一個功能鍵,每個

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

工作正常!謝謝! – 2010-01-04 18:32:40

+2

緩衝區本地命令(-b)會更好。 – 2010-01-06 12:40:16

+0

添加緩衝區本地命令,請使用':command -buffer' ...':命令-b'不起作用 – tbhartman 2016-10-19 16:22:31

24

我個人更喜歡另一種方法。首先創建一個函數接收命令行參數,然後創建一個命令來調用該函數:

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

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

所以它會像

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

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

但是,有一種更好的方式來做到這一點的Vim的。使用makeprg:

makeprg=python\ % 

只需鍵入:make運行您當前的Python文件。使用:copen顯示錯誤列表。

+0

聽起來像是一種更具可擴展性的方法。如果我需要執行多個命令,我可能會這樣做。 – 2010-01-04 18:36:24

6

天兒真好,

到karoberts答案類似,我更喜歡更直接:

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

如果我的腳本創建一些輸出我也喜歡捕捉到它在一個臨時文件,然後自動讀將文件內容存入另一個緩衝區,例如

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

我然後設置輸入:set autoread而在另一個緩衝區打開結果文件

:split /tmp/results<CR> 

然後,我可以很容易地看到運行在自動刷新緩衝區中的結果時,結果文件是自動讀通過運行正在開發的腳本進行更新。

HTH

歡呼聲,