पायथन 3 के लिए विम कोड समापन


26

मैं डेबियन जेसी चला रहा हूं और वर्तमान vim-nox (+ python -python3 के साथ) का उपयोग करता हूं। मैं पायथन 3 में प्रोग्राम करने की कोशिश कर रहा हूं, क्योंकि मैं पायथन 3 कोड पूरा करने के लिए संघर्ष कर रहा हूं।

YouCompleteMe Python3 का बिल्कुल समर्थन नहीं करता है। jedi-vim, Python 3 को पूरा करने का समर्थन करता है, लेकिन अगर मेरे पास सही तरीके से समझे तो ही मेरे पास + python3 विकल्प होगा। डेबियन डेवलपर्स के कई पोस्टों से ऐसा लगता है कि Vim + python3 ध्वज के साथ संकलन वास्तव में काम नहीं कर रहा है। इसलिए मुझे अजगर-मोड प्लगइन के साथ छोड़ दिया गया है।

इस तथ्य के अलावा कि पायथन-मोड अस्वाभाविक लगता है (खुले पुल-अनुरोधों और अंतिम हिट्स देखें) और वर्तमान में इसकी मास्टर शाखा में रस्सी से संबंधित एक विशाल बग है, यह YouCompleteMe के साथ हस्तक्षेप करता है। मुझे कुछ पायथन 3 कोड काम पूरा करने के लिए मिलते हैं, लेकिन केवल अगर मैं YouCompleteMe को पूरी तरह से अक्षम करता हूं। अजगर फाइलपेट के लिए YCM को ब्लैकलिस्ट करना या अजगर की फाइलों के लिए YCM को पूरा करने में अक्षम होना काम नहीं करता है, मुझे हर बार खुली विम पर वाईसीएम चेतावनी मिलती है।

तो मेरे सवाल हैं:

YouCompleteMe (जो मैं अन्य प्रोग्राम भाषाओं के लिए चाहता हूं) को निष्क्रिय नहीं करते हुए मुझे वर्तमान डेबियन वितरण पर काम करने के लिए पायथन 3 ऑटोकंप्लीशन कैसे मिल सकता है? इस तरह की एक महत्वपूर्ण प्रोग्रामिंग भाषा के लिए कोड को पूरा करने के लिए एक अनमने प्लग इन फिलहाल एकमात्र विकल्प कैसे है (पायथन 3 को अब नया नहीं माना जा सकता है ..)?


2
"इस तरह की एक महत्वपूर्ण प्रोग्रामिंग भाषा के लिए कोड को पूरा करने के लिए एक अनमने प्लगइन कैसे आता है, इस समय एकमात्र विकल्प है " -> लगभग कोई पायथन 3-केवल परियोजनाएं नहीं हैं, लगभग सभी पायथन प्रोग्राम पायथन 2 और 3 पर ठीक चलते हैं, इसलिए पायथन 2 पूर्णता लगभग सभी के लिए अच्छी होनी चाहिए।
मार्टिन Tournoij

@Carpetsmoker से सहमत हैं। विम बॉक्स के बाहर पायथन को पूरा करने के साथ आता है, और यह पायथन 3 के साथ भी अद्भुत काम करता है। वास्तव में, डिफ़ॉल्ट pythoncomplete जो विम के लिए बनाया गया है जो मैं उपयोग करता हूं। कोई YCM, कोई जेडी-विम, कोई पायथन-मोड। यदि आप अभी भी + python3
akshay

मैंने अभी-अभी pythoncomplete की जाँच की, मुझे नहीं पता था कि यह स्क्रिप्ट एक सामान्य विम इंस्टॉलेशन में शामिल है। यह निश्चित रूप से एक अच्छा बुनियादी विकल्प है। क्या आप कार्य कॉल (जैसे प्रिंट ('')) कोष्ठक जोड़ने के लिए pythoncomplete के लिए एक आसान तरीका जानते हैं?
xt440

मुझे लगता है कि आपको खुद को संशोधित करना होगा। यहाँ स्रोत vim.org: vim.org/scripts/script.php?script_id=1542 पर उपलब्ध है । बेशक, यह बहुत पुराना है, लेकिन यह मेरे लिए बहुत अच्छा काम करता है।
अक्षय

जवाबों:


17

आदर्श तरीका यह है कि विम का स्रोत प्राप्त करें और इसे स्वयं संकलित करें।

चरण 1: डेबियन जैसी प्रणालियों के लिए, आवश्यक पैकेज प्राप्त करें:

sudo apt-get build-dep vim

चरण 2: क्लोन विम का स्रोत कोड:

cd /tmp && git clone https://github.com/vim/vim.git && cd vim

चरण 3: कॉन्फ़िगर, बनाओ, स्थापित करें

./configure --with-features=huge --enable-multibyte --enable-python3interp \
    --enable-gui=gtk-2 --prefix=/usr

make VIMRUNTIMEDIR=/usr/share/vim/vim74
sudo make install

चरण 4: हो गया! आपके पास + python3 समर्थन के साथ विम का एक विशाल संस्करण होना चाहिए। इसमें + क्लिपबोर्ड समर्थन भी है ताकि आप इसे अपने सिस्टम क्लिपबोर्ड और एक gui संस्करण के साथ उपयोग कर सकें।

बेशक, आप उन कॉन्फ़िगर झंडे को हटा सकते हैं जिन्हें आप नहीं चाहते हैं या कुछ में जोड़ें। YouCompleteMe वास्तव में एक काफी लंबाई विकी है जो यह समझाने के लिए समर्पित है कि यहां स्रोत से विम का निर्माण कैसे किया जाए


तुम्हारा जल्दी उत्तर देने की लिए शुक्रिया। मैं + python3 / dyn और + python / dyn समर्थन के साथ vim बनाने में सक्षम था। लेकिन इससे मेरी समस्या हल नहीं होती। जैसे ही मैं विम शुरू करता हूं, YouCompleteMe शुरू हो जाता है (जो हमेशा मुझे पता है कि जहां तक ​​python2 शुरू होता है)। जब मैं प्रवेश करता :echo has('python3')हूं तो मुझे मिलता है 0, जबकि :echo has('python')रिटर्न 1। मेरे पास मेरे .vimrc में निम्नलिखित विकल्प हैं, लेकिन वे मदद नहीं करते हैं let g:ycm_path_to_python_interpreter = '/usr/bin/python3 let g:ycm_filetype_specific_completion_to_disable = { 'python' : 1 } let g:ycm_filetype_blacklist = { 'python' : 1 }:।
xt440

चरण 1 के लिए, मैं इसके बजाय सलाह देता हूं:apt-get build-dep vim
200_success

@ 200_success, मुझे यकीन नहीं है कि अगर यह भी क्लिपबोर्ड समर्थन के लिए आवश्यक x11 सामान नीचे खींचती है। हालांकि मेरे पास एक linux मशीन नहीं है, हालांकि मैं जांच कर सकता हूं।
अक्षय

से packages.debian.org/jessie/vim , देखने के .dscसाइडबार में लिंक की गई फ़ाइल। मेरा मानना ​​है कि आपके द्वारा सुझाए गए सभी पैकेजों को छोड़कर mercurial, सीधे या ट्रांसेटिव रूप में सूचीबद्ध हैं Build-Depends। विशेष रूप से, libgnomeui-devशायद उन निर्भरता के कई के लिए जिम्मेदार है।
२००_ पर असफल

@ 200_success, काफी निष्पक्ष, धन्यवाद! पोस्ट को अपडेट किया।
अक्षय

4

jedi-vim मेरे लिए अब ठीक काम करता है + विम में python3 समर्थन के साथ। मेरे .vimrc में निम्नलिखित विकल्प जोड़े let g:jedi#force_py_version = 3:।


4

इसे किसी भी चीज़ की तुलना में अपने लिए एक नोट के रूप में अधिक लिखना, लेकिन शायद यह कुछ के लिए उपयोगी होगा: आर्क लिनक्स पर, आप python3 के साथ संकलित विम का एक संस्करण स्थापित कर सकते हैं:

# pacman -S vim-python3
resolving dependencies...
looking for conflicting packages...
:: vim-python3 and vim are in conflict. Remove vim? [y/N] y

Y टाइप करें और यह आपके मौजूदा vim को python3 सक्षम विम के साथ बदल देगा।

फिर:

# pacman -S vim-jedi

python3 के लिए स्वतः पूर्णता स्थापित करेगा।


4

कुछ हफ़्ते से, YouCompleteMe , JediHTTP रैपर के माध्यम से जेडी का उपयोग करके पायथन 3 को पूरा करने का समर्थन करता है। केवल स्थापना निर्देशों के अनुसार YouCompleteMe (jedi-vim को इंस्टॉल करने की कोई आवश्यकता नहीं) स्थापित करें और निम्न पंक्ति को अपने साथ जोड़ें .vimrc:

let g:ycm_python_binary_path = '/usr/bin/python3'

यह YCM को Python3 के साथ जेडी का उपयोग करने के लिए मजबूर करता है (डिफ़ॉल्ट रूप से उसी Python दुभाषिया के साथ जेडी का उपयोग करना है जो कि ycmd सर्वर द्वारा उपयोग किया जाता है, जो Python2 है)।

अगर आपके विम को +python3झंडे के साथ या बिना संकलित किया जाता है, तो इससे कोई फर्क नहीं पड़ता - आपको पायथन 3 ऑटोकंप्लीशन (और प्रलेखन ऊपर और अधिक देखने) मिलता है।


1

मैं उस स्थिति में हूं, जहां मुझे लगातार दो अजगर परियोजनाओं के बीच स्विच करना पड़ता है, एक अजगर 2 का उपयोग कर दूसरा अजगर 3. जैसा कि आपने उल्लेख किया है कि आप pcomthon 3 के साथ काम नहीं करते हैं।

पहले मैंने अजगर 3 (जो मैं vim3 से शुरू करता हूं) के साथ विम का एक अतिरिक्त संस्करण संकलित किया और मैं प्लगइन प्रबंधक के रूप में vundle का उपयोग करता हूं।

मेरे .vimrc में मेरे पास है:

Plugin 'davidhalter/jedi-vim' " for python3
Plugin 'Valloric/YouCompleteMe' " for python2


if has('python3')
    let g:loaded_youcompleteme = 1 " disables loading it! doesnt support python3
    let g:jedi#force_py_version = 3
    let g:pymode_python = 'python3'

जब आप vim3 चलाते हैं तो यह youcompleteme को निष्क्रिय कर देता है, लेकिन मेरे पास इसके बजाय jedi-vim स्वतः पूर्ण है। मैंने केवल इसका उपयोग करना शुरू किया है, और यह ब्लॉग पोस्ट कहता है कि वे एक साथ संगत नहीं हैं, लेकिन मेरे लिए दोनों में स्वत: पूर्ण काम करता है, जेडी के गो-टू-डेफिनिशन काम करता है, पायथन-मोड के पाइलिंट काम करता है और स्टार्टअप पर कोई प्लगइन शिकायत नहीं करता है। अभी तक सभी अच्छे :)


0

यदि आप नवविवाहित हैं तो डोपेट और डोपेट-जेडी का उपयोग करें । मेरे अनुभव में यह काफी अच्छी तरह से काम करता है, जहां वाईसीएम में थोड़ी परेशानी है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.