2015-10-29 6 views
6

मैंने इस मामले में, लार्वेल के रूप में एक ढांचे के लिए वीआईएम के साथ एक अच्छा कार्य वातावरण बनाने की कोशिश कर दो दिन पहले ही बिताए हैं।PHP फ्रेमवर्क के लिए विम

सभी हमेशा की तरह एकदम सही है, लेकिन वहाँ एक बहुत महत्वपूर्ण मुद्दा है:

  • मैं हो omnicomplete ठीक से नहीं काम कर सकते हैं

मैं सभी की कोशिश की है कि मैं गूगल के माध्यम से पाया:

- phpcomplete: मेरी अन्य परियोजनाओं में अच्छी तरह से काम करता है, ऐसा लगता है कि संगीतकार के साथ पागल हो जाता है। फ्रेमवर्क के लिए facades और न ही सामान्य तरीकों को पहचान नहीं है।

- ctags: कुछ तरीकों से मदद करता है, लेकिन अभी भी omnicompletion के साथ एक गड़बड़ है।

- phpcomplete-बढ़ाया और laravel के लिए phpcomplete-बढ़ाया: लेखक अब इस प्लगइन प्रबंधित नहीं करता है (तार्किक के बाद से चौखटे तो जल्दी बदल जाते हैं) तो अब और काम नहीं करता।

- पीआईवी, स्टैंडएट phpcomplete, एक ही समस्या का उपयोग करता है।

- padawan.php मैं यह काम करने के लिए नहीं मिल सका है, IMHO खराब

कोई vim उपयोगकर्ता के लिए जो omnicompletion कार्यक्षमता ठीक से प्राप्त करने के लिए प्रबंधन कर सकते है प्रलेखित? मुझे लगता है कि करने के लिए मैं vim से बढ़ना चाहिए यह इन नई प्रौद्योगिकियों के लिए तैयार नहीं है, क्योंकि शुरू कर: '(

enter image description here

Grep AppServiceProvidertags फ़ाइल के खिलाफ:

AppServiceProvider एप्लिकेशन/प्रदाता/AppServiceProvider .php/^ वर्ग AppServiceProvider सेवा प्रदाता $ /; "सी नेमस्पेस: फ़ुरबुक \ प्रदाता फ़ुरबुक \ प्रदाता ऐप/प्रदाता/AppServiceProvider.php/^ नेमस्पेस फ़ुरबुक \ प्रदाता; $ /; "एन बूट ऐप/प्रदाता/AppServiceProvider.php/^ सार्वजनिक फ़ंक्शन बूट() $ /;" एफ वर्ग: फ़ुरबुक \ प्रदाता :: AppServiceProvider रजिस्टर ऐप/प्रदाता/AppServiceProvider.php/^ सार्वजनिक समारोह रजिस्टर() $ /, "च वर्ग: Furbook \ प्रदाता :: AppServiceProvider

+0

ऐसी रिपोर्टें हैं कि ctags ठीक काम करता है http://stackoverflow.com/a/9864307 क्या आप विस्तार कर सकते हैं कि यह आपके लिए क्यों काम नहीं कर रहा है? – Vitor

+0

यह मुझे विधियों की एक लंबी सूची (अन्य वर्गों से) देता है और उत्सुकता से मुझे जो चाहिए वह सूचीबद्ध नहीं है, एक गड़बड़ है। इसके अलावा, वर्गों को स्वत: पूर्ण नहीं करता है। अगर किसी ने कोशिश की है, तो मैं समझूंगा कि मैं क्या कह रहा हूं – vivoconunxino

+0

आपके द्वारा दिए गए उदाहरण की कोशिश कर रहा है, यह वही होता है जो ओपी टिप्पणियों, विधियों की एक लंबी सूची है। – vivoconunxino

उत्तर

5

यह मेरी शीर्ष चिंताओं में से एक हो गया है, यहाँ मेरे तीन पसंदीदा विकल्प हैं:

  1. ctags मैं उपयोग phpcomplete और ctags (php के लिए समझौता), लेकिन अभी भी अग्रभाग के लिए कोई स्वतः पूर्ण, मैं संकल्प लिया यह Laravel 5 IDE Helper Generator के साथ। विचार _ide_helper.php फ़ाइल बनाने के लिए पहले वर्गों और विधियों के साथ फ़ाइल बनाने के लिए है, और फिर टैग बनाएं।

मैंने अपने vimrc में एक फ़ंक्शन भी बनाया, इसलिए मैं स्वचालित रूप से टैग जेनरेट कर सकता हूं।

function! GenTags() 
    if isdirectory("./vendor") 
    echo '(re)Generating framework tags' 
    execute "!php artisan ide-helper:generate" 
    echo '(re)Generating tags' 
    execute "!ctags -R --filter-terminator=php" 
    else 
    echo 'Not in a framework project' 
    if filereadable("tags") 
    echo "Regenerating tags..." 
    execute "!ctags -R --filter-terminator=php" 
    else 
    let choice = confirm("Create tags?", "&Yes\n&No", 2) 
    if choice == 1 
    echo "Generating tags..." 
    execute "!ctags -R --filter-terminator=php" 
    endif 
    endif 
    endif 

    :endfunction 

    command! -nargs=* GenTags call GenTags() 
GenTags() 
  1. eclim थे अभी भी कुछ कष्टप्रद मुद्दों कोई कोड पूरा होने की तरह है, जब $a->b->c

मैं समाप्त हो गया चेनिंग eclim का उपयोग कर:

- eclipse स्थापित करें, ग्रहण इंस्टॉलर का उपयोग न करें, बेहतर अनार सीधे

- eclim इंस्टॉल करें, eclim installer का उपयोग करें।

- पूरा कोड पूरा होने के लिए अपने मॉडल को बदलने Eloquent के बजाय Model

विस्तार करने के लिए - और प्लगइन YouCompleteMe (आप किसी भी अन्य की कोशिश कर सकते हैं)

  1. PHP भाषा सर्वर यह इस समय मेरी पसंदीदा पसंद है, यह सीटीएजी से बेहतर और अधिक स्वचालित है और मैं कहूंगा कि सीटीएजी जितनी तेजी से।

स्वतः पूर्ण होने के बावजूद अभी भी ग्रहण (eclim) की तुलना में थोड़ा भी बदतर है, PHP भाषा सर्वर पीएचपी पर विकसित की है, पीएचपी उपयोगकर्ताओं का एक बहुत परियोजना के लिए योगदान कर सकते हैं इसका मतलब है और यह बहुत सक्रिय और सुधार है जो।

प्लग 'roxma/nvim-पूर्ण-प्रबंधक'

"(वैकल्पिक) जावास्क्रिप्ट

प्लग 'roxma/nvim सेमी-टैन', { 'है': 'NPM स्थापित'} "

" (वैकल्पिक) भाषा सर्वर प्रोटोकॉल ढांचे

प्लग 'autozimu/LanguageClient-neovim', { 'कर': ': UpdateRemotePlugins'} "

"(वैकल्पिक) LanguageClient-neovim के माध्यम से php पूरा होने

प्लग 'roxma/LanguageServer-php-neovim', { 'है': 'संगीतकार स्थापित & & संगीतकार रन स्क्रिप्ट पार्स-स्टब्स'}

किसी को भी और अधिक जानना यह कम या ज्यादा उपयोगी बनाने के लिए मेरे पास पर्याप्त vimrc GitHub

+0

हाय, क्या आप वीडियो प्रदान कर सकते हैं आपने इसे कैसे कार्यान्वित किया , क्योंकि मैंने एक्सीम स्थापित करने की कोशिश की लेकिन ऐसा लगता है कि यह काम नहीं करता है, यह कोई पूर्ण चीज़ नहीं है। –

+0

क्या आपने प्रोजेक्ट के रीडमे का पालन किया है? एक बार इंस्टॉल हो जाने पर आपको डेमॉन को '! ~/ग्रहण/eclimd '(या जहां भी आपका है) निष्पादित करना होगा। बीटीडब्ल्यू, मैं उस रीडेमे को बेहतर बनाने की कोशिश करूंगा, लेकिन मैं आपको यह नहीं बता सकता कि:/ – vivoconunxino

1

अस्वीकरण: मैं एक PHP प्रोग्रामर नहीं हूँ और मैं पीएचपी बारे में कुछ नहीं पता है।

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

जो मैं अन्य प्रश्नों में एकत्र कर सकता हूं (विशेष रूप से Vim PHP omni completion), सर्वोत्तम पीजीपी समापन प्लगइन phpcomplete है, इसलिए मैंने इसे इंस्टॉल किया है।

मैं तो here से laraval डाउनलोड किया है और ctags 5.9 ~ svn20110310 (Debian जेसी में उपलब्ध) भाग गया निम्न आदेश का उपयोग कर:

<?php 
    $example = new AppServiceProvider(); 
    $example-> 
?> 

जब मैं प्रेस: ​​

ctags -R --filter-terminator=php 

निम्नलिखित परीक्षण फ़ाइल का उपयोग i_ctrl-x_ctrl-o मुझे निम्नलिखित सुझाव मिलते हैं:

boot( f) 
register(f) 

जैसा कि देखा जा सकता है, विधियों की कोई लंबी सूची नहीं है।

मैं भी Universal Ctags उपयोग करने के लिए phpcomplete प्लगइन के लिए आवश्यक पैच शामिल है कि कोशिश की है, लेकिन इसे काम करने के लिए में मैं निम्न सिंटैक्स का उपयोग किया था:

ctags -R --fields=+aimS-s --filter-terminator=php . 

है, अतिरिक्त -s था की आवश्यकता है। शायद आप यहां से काम कर सकते हैं और अपने पर्यावरण में अधिक विस्तार से इसका परीक्षण कर सकते हैं।

+0

मैंने आपके उदाहरणों को पुन: उत्पन्न करने की कोशिश की है जैसा कि आपने सुझाव दिया था: सबसे पहले, मैं 'ऐपएस' लिखने के बाद कक्षा को स्वत: पूर्ण नहीं कर सका। और फिर, मैंने '$ example->' के दौरान तरीकों की एक विशाल सूची देखी। जब भी मैं कर सकता हूं (आज दोपहर या कल) मैंने जो कुछ भी कहा है, उसके साथ मैं इसे और अधिक ताजा इंस्टॉल कर दूंगा।बीटीडब्ल्यू धन्यवाद – vivoconunxino

+0

पूर्ण होने की सूची प्रकट होने पर आपकी स्क्रीन के निचले बाएं कोने को देखें। यह आपको पूरा होने का प्रकार बताएगा। मुझे यकीन है कि यह कीवर्ड पूर्णता और ओमनी पूर्णता नहीं कहता है। – Vitor

+0

दुर्भाग्य से नहीं, img – vivoconunxino

2

padawan.php कि दस्तावेज़ के बारे में सच है के बारे में बात पर, मैं खर्च नहीं किया है समय की जाँच कर सकते चाहता है, लेकिन padawan की स्थापना नहीं करना चाहिए यह कठिन हो:

  1. composer global require mkusher/padawan
  2. के माध्यम से padawan.php स्थापित कॉन्फ़िगर अपने $ पथ
  3. स्थापित padawan.vim
  4. अपनी परियोजना

सूचकांक उत्पन्न मैं यकीन नहीं है कि Laravel परियोजनाओं बाहर काम करेंगे नहीं हूँ बॉक्स के या आपको अभी भी आदर्श सहायक की आवश्यकता होगी, लेकिन सामान्य PHP चीजों को अच्छी तरह से काम करना चाहिए।

+0

मैं वर्तमान में अपने सेट अप से खुश हूं, लेकिन यह जानना अच्छा है। मैं इसे किसी और दिन कोशिश कर सकता हूं। धन्यवाद – vivoconunxino

संबंधित मुद्दे