ভিআইএম-এর জন্য কোনও স্বয়ং-সমাপ্তি প্লাগইন রয়েছে?


12

ভিআইএম-এর জন্য একটি স্বয়ংসম্পূর্ণতা প্লাগইন আছে কি? এখানে আমার বিকল্পগুলি কি?

মুহূর্তে আমি ব্যবহার করছি AutoComplPop , কিন্তু এটা snipMate সঙ্গে খারাপ ইন্টিগ্রেশন যে আমি ব্যবহার এবং রুবি ফাইল (এমনকি <100 লাইন) লাশ ধীর হয়েছে।

আমি বেশ কয়েকটি অন্যান্য প্লাগইন দেখেছি তবে কমপক্ষে এক বছরেরও বেশি সময় থেকে সেগুলি মারা গেছে। সুতরাং, কোন ধারণা?


1
এসিপি এখানে খুব ভাল কাজ করে এবং স্নিপমেট নিয়ে আমার কোনও সমস্যা নেই। একটি সেটিংস রয়েছে ( let g:acp_behaviorSnipmateLength=-1দেখুন :help autocomplpop) আপনি আপনার .vimrc এ যুক্ত করার কথা, আপনি কি এটি যুক্ত করেছিলেন?
রোমেনেল

উত্তর:


16

এটি একটি পুরানো প্রশ্ন, তবে আমি একেবারে এবং তারপরেই বিবর্ণ আশা নিয়ে এক ঝলক নিয়ে ফিরে আসছি, এই ভেবে যে একদিন আমাকে ভিমের মধ্যে নিখুঁত স্বতঃপূরণ দেওয়ার জন্য প্লাগইনের সঠিক সংমিশ্রণটি খুঁজে পাব। অনুসন্ধান অব্যাহত রয়েছে, তবে বেশ কয়েক বছর ধরে আমি এই গবেষণাটি করেছি।

প্রথমত, আপনার অবশ্যই বুঝতে হবে ভিম কোনও কোড সম্পাদক নয়, একটি পাঠ্য সম্পাদক। কোড সম্পাদক, আইডিইএস হ'ল সরঞ্জামগুলির জেটব্রেইনস স্যুট, ভিজ্যুয়াল স্টুডিও কোড, ইক্লিপস ইত্যাদি tools

ভিম মৌলিকভাবে কোডটি সঠিকভাবে "স্বয়ংক্রিয়ভাবে সম্পূর্ণ" করতে পারে না। স্বতঃসম্পূর্ণতার জন্য আপনার উত্স কোডটি অন্তর্নিম্ন করা এবং এএসটি বিশ্লেষণ করা প্রয়োজন। বিবেচনা করুন যে 2016 সালে ভিম 8 মুক্তি না হওয়া পর্যন্ত ভিম অ্যাসিঙ্ক্রোনাস অপারেশন করতে পারবেন না, তাই কোনও ভিম ​​প্লাগইনে যে কোনও ধরণের কোড ইন্ট্রোস্পেকশন সফ্টওয়্যার চালানোর চেষ্টা করা দুঃস্বপ্ন হতে পারে। এটি না করার জন্য এটি ভিম বাস্তুতন্ত্রের ইতিহাসে বেকড। এবং যেগুলি চেষ্টা করে তারা সকলেই যেমন টার্ন ফর ভিমের মতো, এটি ব্যবহার করার জন্য দুঃস্বপ্ন।

একটি পাঠ্য সম্পাদক যা করতে পারেন তা হ'ল স্নিপেটস এবং একই শব্দ / লাইন / ইত্যাদি সম্পূর্ণরূপে এটি জানেন। আপনি যদি স্ব-পরিপূর্ণ কোডটি খুঁজছেন তবে আপনার কোনও পাঠ্য সম্পাদক নয়, একটি কোড সম্পাদক ব্যবহার করা উচিত।

এগুলি আপনার বিকল্পগুলি, যার মধ্যে আমি সমস্ত চেষ্টা করেছি:

  • দুটি দরকারী কীবোর্ড শর্টকাটগুলি হ'ল Ctrl- nযা কেবলমাত্র আপনার বর্তমান খোলা বাফারগুলির ভিত্তিতে কোনও শব্দ স্বয়ংক্রিয়ভাবে পূর্ণ করবে (কোনও কোড অন্তর্মুখী নয়), এবং Ctrl- xCtrl- lআপনি যদি কোনও সদৃশ করতে চান তবে কোডের একটি সম্পূর্ণ লাইন স্বয়ংক্রিয়ভাবে পূরণ করবে। আপনি সম্ভবত জানেন Ctrl- xCtrl- f, যা বর্তমানের তুলনায় পথ সহ একটি ফাইলের নাম স্বয়ংক্রিয়ভাবে পূর্ণ করবে :pwdপ্যাটার্ন-সম্পূর্ণ যদি আপনি দিয়ে অনুসন্ধান না প্লাগইন আস্তে উপযোগী হতে পারে /\v

  • - , - দ্বারা তৈরি ট্রি ভিম " ওমনিকম্প্লেশন " এ নির্মিত - ( এইটাই ভিম লেখকরা আপনাকে প্রতিবার টাইপ করতে চান) পাশাপাশি ভাষা নির্দিষ্ট প্লাগইনগুলির একগুচ্ছ উপস্থিত থাকে। আপনি করতে পারেন একটি ফাইলে যদি আপনি ইতিমধ্যে Omnicompletion আপ তেজ দ্বারা আপনার পছন্দের ফাইলের মধ্যে সেট করেছেন দেখতে।CtrlxCtrlo:echo &omnifunc

  • AutoComplPop স্বয়ংক্রিয়ভাবে টাইপ Omnicompletion মেনু উপরে খোলার জন্য।

  • সুপারটাব যা আপনাকে ভিমেরTab অন্তর্নির্মিত সম্পূর্ণরূপে ট্রিগার করতে টিপতে দেয় ।

  • নিওকম্প্লাচি যা কীওয়ার্ড সমাপ্তি (কীভাবে এটি ভিমের সম্পূর্ণরূপে নির্মিত তা আলাদা নয়), একটি জটিল .vimrcসেটআপ এবং স্নিপেট সমাপ্তির জন্য নিওস্নিপেট

  • ট্যাগ ফাইলগুলি থেকে সম্পূর্ণতা আহরণের জন্য একটি দানব সংমিশ্রণ exuberant-ctagsএবং DoctorJS(একটি মজিলা প্রকল্প যা এক বছর ধরে মারা গেছে), ট্যাগবার এবং একটি বাড়ির মধ্যে প্রাপ্ত জিনিস

  • স্নিপমেট , স্নিপেটের সাথে একটি বেসিক ট্যাগ সমাপ্তি প্লাগইন এবং কীভাবে স্নিপেটগুলি যুক্ত করতে হয় তা নিজেরাই নির্ধারণ করুন, কারণ এটি কিছুটা জটিল।

  • UltiSnips এর সাথে UltiSnips- স্নিপেটগুলি যা উপরের স্নিপেটগুলির চেয়ে পৃথক

  • টার্ন ফর ভিমের জন্য , একটি প্রতিশ্রুতিবদ্ধ গ্রন্থাগার যা সঠিক স্বতঃসম্পূর্ণ হওয়ার জন্য প্রকৃত কোড অন্তঃসংশোধন করে। তবে এটি বগি, খুব ধীরগতির, মেমরি ফাঁস রয়েছে যা ভিমকে বিধ্বস্ত করবে এবং সম্ভবত এটি পরিত্যক্ত।

  • YouCompleteMe , স্নিপেট সমাপ্তির জন্য হোম-বর্ধিত ফাংশন সহ, পটভূমিতে একটি সার্ভার চালিত এমন একটি अस्पष्ट হিসাবে আপনার ধরণের সমাপ্তি।

  • একলিম - ব্যাকগ্রাউন্ডে একটি Elpipse সার্ভার চালানোর একটি দুর্দান্ত প্রচেষ্টা এবং ভিমকে উড়ানের দিকে আত্ম - সম্পন্ন করতে বলুন। এটি টার্নের পাশাপাশি কাজ করে।

  • শেষ অবধি , টাইপ করার সময় স্বয়ংক্রিয়ভাবে ট্যাগ এবং প্রথম বন্ধ বন্ধ করার জন্য ক্লোসেট্যাগ বা ডিলিমেটমেট বা অটোক্লোজ বা একটি স্বল্প বয়স্ক কলাগ্রাম

এই তালিকার প্রায় প্রতিটি প্লাগইন এই তালিকার প্রায় প্রতিটি প্লাগইনের সাথে বিরোধ করবে will

YouCompleteMe এই প্যাকের শীর্ষস্থানীয় বলে মনে হচ্ছে তবে আমি ট্যাগ সমাপ্তির সাথে এটি যথাযথভাবে কাজ করতে সক্ষম হইনি এবং এর কোড-আত্ম-পরিপূরণ এখনও শক্তিশালী প্রমাণ করতে পারেনি।

আমার ব্যক্তিগত মতামত হ'ল ভিম স্বতঃপূরণ বিশ্বের বর্তমান অবস্থা খারাপ অবস্থায় আছে। ছোট প্রকল্পগুলির জন্য আপনি উপরের সমাধানগুলির একটি ব্যবহার করে ভাল হতে পারেন। আপনি যদি একটি সাধারণ এপিআই নিয়ে কাজ করে থাকেন তবে বেশিরভাগ ক্ষেত্রে আপনার মাথায় রাখতে পারেন, নন-কোড-অন্তঃসংশোধন সমাপ্তি সম্ভবত ঠিক আছে। আপনি একটি বড় প্রকল্পের সঙ্গে ডিল করা হয়, বা টাইপ নিরাপত্তা সুবিধার প্রয়োজন যখন প্রোগ্রামিং, একটি পূর্ণাঙ্গ আইডিই (যদি অন্ধকার , ভিসুয়াল স্টুডিও , WebStorm ) আপনি অনেক তেজ চেয়ে হবে ভাল অনুসারে যাচ্ছে।

অবশ্যই একটি আইডিইর সর্বনিম্নতা হ'ল আপনার হাতে আর ভিমের শক্তি থাকবে না। আমি একটি একক আইডিই ব্যবহার করি নি যা একটি গ্রহণযোগ্য ভিম মোড আছে।

ভিপকে টাইপ করা সি-জাতীয় ভাষাগুলির প্রতি মাঝারি ভাষার পক্ষপাত রয়েছে এবং অন্যথায় প্রত্যাশা রয়েছে যে কোনও ভাষা নির্দিষ্ট বৈশিষ্ট্য ব্যবহারকারীরা প্লাগইন হিসাবে যুক্ত করবেন। দুর্ভাগ্যক্রমে, এটি একটি বিভক্ত অটোকম্প্লেশন ইকোসিস্টেমের দিকে নিয়ে গেছে। কিছু বিকল্প শালীন, তবে কিছুই নিখুঁত নয় এবং খুব কমই নেতৃত্বাধীন / সেরা অনুশীলন রয়েছে।


6

এখানে একটি দুর্দান্ত: YouCompleteMe

YouCompleteMe যা আপনার টাইপ করার সাথে সাথে ড্রপডাউন মেনুটি স্বয়ংক্রিয়ভাবে উপস্থিত হয় এবং এটি अस्पष्ट নির্বাচনকে সমর্থন করে, সুতরাং আপনার যদি একটি সনাক্তকারী বলা হয় partition_finderএবং আপনি ptfসি ++ ফাইল সম্পাদনা করার সময় এমন কিছু টাইপ করেন তবে ড্রপডাউন পরামর্শ তালিকার মধ্যে উভয়ই অন্তর্ভুক্ত থাকবে printfএবং partition_finderকারণ সেগুলিতে একই অক্ষর রয়েছে একই ক্রমে। আপনার যদি ভেরিয়েবল বলা হয় তবে myBrainআপনি টাইপ করতে পারেন brnএবং এটি এটির পরামর্শ দেয়। YouCompleteMe পূর্ববর্তী ব্যবহারের ফ্রিকোয়েন্সি ভিত্তিতে পরামর্শগুলিও অগ্রাধিকার দেয়।




1

আমি বিশ্বাস করি ভিমের একটি বিল্ট-ইন রয়েছে যার নাম ওমনি কমপ্লিট। সন্নিবেশ মোড ব্যবহার ctrl+x,ctrl+o

অন্যথায় আপনি সন্নিবেশ মোড থেকে কীওয়ার্ড সমাপ্তিটি করতে পারেন ctrl+n। আপনি যখন এটি চালু করবেন তখন এটি আপনাকে সম্পাদনা করা ফাইলে পাওয়া শব্দের সম্ভাব্য ম্যাচগুলি প্রদর্শন করার পাশাপাশি আপনার খোলার অন্যান্য ফাইল থেকে পাওয়া একটি ড্রপডাউন দেবে। ctrl+nঅপশনগুলির মাধ্যমে চক্রটিতে আঘাত করা চালিয়ে যান । আপনি যে শব্দটি চান তা এলেই ঠিক স্বাভাবিকের মতো টাইপ করা চালিয়ে যান।

আপনি যে শব্দটি চান তা খুঁজে না পেলে ctrl+nশেষ পর্যন্ত তালিকার বাইরে চলে যাবেন এবং আপনি টাইপিং চালিয়ে যেতে পারেন, বা আপনি আঘাত করতে পারেন ESCএবং তারপরে আক্রমণাত্মক শব্দের শুরুতে অ্যাক্কে bcwযেতে পারেন bএবং cঅর্ডারটি যা wচান তার কাছে ফাঁসিয়ে দিতে পারেন।


ভিমের অন্তর্নির্মিত একটি চুষতে মনে হচ্ছে। আমি যখনই <cx> <co> চাপি তখন এটি কেবল "প্যাটার্নটি পাওয়া যায় নি" বলে। তবে, আমি <cn> টিপলে, শব্দটি টাইপ করা হচ্ছে এর ঠিক নীচে একটি ড্রপডাউনতে সম্পূর্ণতা উপস্থিত হয়। এটা কি একই জিনিস? একটি শর্টকাট টিপে না ফেলে স্বয়ংক্রিয়ভাবে সম্পূর্ণ ড্রপ ডাউনকে স্বয়ংক্রিয়ভাবে প্রদর্শিত করার কোনও উপায় আছে?
trusktr

আমি কোনও প্লাগইন সম্পর্কে সচেতন নই যা মিথস্ক্রিয়া ছাড়াই স্বতঃপূর্ন পপ আপ করে তোলে, দুঃখিত :(। <c-x><c-o>কেবলমাত্র এমনভাবে কাজ করে যা ভিমকে কীভাবে সমর্থন করতে হয় তা স্পষ্টভাবে বলা হয়েছে। ডিফল্টরূপে আমি মনে করি এটি কেবল কয়েকটি ছোটখাটো জিনিস এবং জিনিসগুলি করতে পারে সিএসএস সমাপ্তির মতো, তবে আপনি যদি
একটিগ্রহের

1
আমি ইউকম্পলমি নামে উইময়ের জন্য একটি প্লাগইন পেয়েছি যা আপনার টাইপ করার সাথে সাথে ড্রপডাউন মেনুটি স্বয়ংক্রিয়ভাবে উপস্থিত হয় এবং এটি अस्पष्ट নির্বাচনকে সমর্থন করে, তাই যদি আমার পরিচিতি বলা হয় partition_finderএবং আমি ptfসি ++ ফাইল সম্পাদনা করার সময় এমন কিছু টাইপ করি তবে ড্রপডাউন মেনু উভয়ই পরামর্শ দেবে printfএবং partition_finderকারণ এগুলি একই ক্রমে একই অক্ষর রয়েছে। আমার কাছে যদি ভেরিয়েবল বলা হয় তবে myBrainআমি টাইপ করতে পারি brnএবং এটি উপস্থিত হবে। YouCompleteMe পূর্ববর্তী ব্যবহারের ফ্রিকোয়েন্সি ভিত্তিতে পরামর্শগুলিও অগ্রাধিকার দেয়। এটি এখানে দেখুন: valloric.github.io/YouCompleteMe
trusktr

1

আমি মূল অটোকম্পলপপ থেকে একটি নতুন প্লাগইন সিম্পলআউটোকম্পলপপ তৈরি করেছি । যদিও আমি রুবি বা স্নিপমেটের সাথে পরিচিত নই, আপনার চেষ্টা হতে পারে এবং কিছু প্রতিক্রিয়া পেয়ে আমি আনন্দিত :)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.