2010-01-04 24 views
36

पर एक कमांड जोड़ना मैंने अंततः Vim को आजमाने का फैसला किया, क्योंकि मैं जीयूआई संपादकों द्वारा तेजी से निराश हो रहा हूं। अब तक, मैं इसे प्यार कर रहा हूँ, लेकिन मैं एक मुद्दा मैं हो रही है के लिए किसी भी मदद ...विम

मैं cmap का उपयोग कर विम में :!python % को आदेश मैप करने के लिए कोशिश कर रहा हूँ :Pyrun नहीं मिल रहा। अगर मैं :cmap टाइप करता हूं तो मानचित्रण ठीक दिखता है। हालांकि, :Pyrun टाइप करने पर, मुझे यह त्रुटि संदेश मिलता है:

कोई संपादक कमांड नहीं: Pyrun।

यहाँ है कि मैं क्या .vimrc में कोशिश कर रहा हूँ है:

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

मैं इस समस्या को हल करने के लिए क्या कर सकते हैं?

+0

इस यूआरएल http में 42 पीडीएफ पढ़ें: // zmievski।संगठन/वार्ता/ –

उत्तर

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

यह काम करता है! धन्यवाद! –

+2

एक बफर-स्थानीय कमांड (-बी) और भी बेहतर होगा। –

+0

बफर-स्थानीय कमांड जोड़ने के लिए, ': command -buffer'' का उपयोग करें ... ': command -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

चियर्स,