আমি কীভাবে अस्पष्ट কোড সমাপ্তি পেতে পারি


27

ভিজুয়াল স্টুডিও চিহ্নগুলিতে রিশার্পার ব্যবহার করার সময় প্রিফিক্স ম্যাচের পরিবর্তে ফাজি ম্যাচিং ব্যবহার করে স্বয়ংক্রিয়ভাবে সম্পন্ন করা যায়। উদাহরণস্বরূপ, যদি আমি নামক একটি ফাংশন খুঁজছি DoSomethingAmazingআমি কি লিখতে পারব DoSoAmএবং এটি ধারণকারী সব চিহ্ন মেলে আমার প্রশ্নের সাথে প্রসারিত করতে চেষ্টা করবে Do, Soএবং Amতাদের নাম কোথাও।

নীচের জিআইএফ-তে আরও একটি উদাহরণ পাওয়া যাবে। আপনি বেশ কয়েকটি প্রসারণ দেখতে পাচ্ছেন যেখানে অ-উপসর্গের স্ট্রিংগুলি সঠিক প্রতীকটিতে প্রসারিত হয়েছে। (এই প্রশ্নে স্নিপেটের সম্প্রসারণকে উপেক্ষা করুন আমি কেবল ফাজি মেলাতে উদ্বিগ্ন)।একটি জিআইএফ ক্রিয়াকলাপে अस्पष्ट মিলের কয়েকটি উদাহরণ দেখায়

ভিমের জন্য YouCompleteMe প্লাগইনে আরও একটি উদাহরণ দেখা যাবে: ভিআইএম-এর সাথে ক্রিয়াকলাপে अस्पष्ट মিলের আরও উদাহরণ দেখানো একটি জিআইএফ

স্বতঃসিদ্ধ এবং সংস্থা মোড উভয়েরই উপসর্গের মিল রয়েছে বলে মনে হচ্ছে তবে আমি अस्पष्ट মিলটি সক্ষম করার কোনও উপায় খুঁজে পাচ্ছি না।

আদর্শভাবে সমাধানটি হ'ল ভাষা অজ্ঞেয়বাদী এবং আমি যে কোনও প্রতীক সমাপ্তির প্যাকেজটি ব্যবহার করছি তা প্রয়োগ করতে পারে তবে আমি ভাষা-নির্দিষ্ট সমাধানগুলিতেও আগ্রহী। আমি হেলমের দিকে চেয়েছি কিন্তু কোড সমাপ্তিতে এটি প্রয়োগ করার কোনও উপায় খুঁজে পাইনি।

আমি হেল্ফ বাফার ব্যবহার করে প্রতীক সমাপ্তি সক্রিয় করার জন্য কী-বাইন্ডিং থাকার বিকল্পগুলি বিবেচনা করেছি তবে আমি আশা করছি পপআপ-শৈলীর সম্পূর্ণতা ব্যবহার করে এটি করার একটি উপায় আছে।

আমি প্রতি ভাষা ভিত্তিতে ম্যানুয়াল কনফিগারেশন করার জন্যও উন্মুক্ত, কারণ কিছু ভাষা ড্যাশগুলির সাথে পৃথক চিহ্ন রয়েছে, অন্যরা আন্ডারস্কোর বা ড্যাশগুলি ব্যবহার করে যা আমি ধরে নিয়েছি যে মিলটি কীভাবে হবে তা প্রভাবিত করবে।


উত্তর:


19

ইমাসের অন্তর্নির্মিত সমাপ্তির কার্যকারিতা অনুরূপ ধোঁয়াটে ম্যাচিংয়ের প্রস্তাব দেয় (ডিফল্টরূপে এটি "DoSoAm" এর পরিবর্তে "do-so-am" এর জন্য ব্যবহৃত হয়) এবং আইআইইউসি-র সাম্প্রতিক সংস্করণ সংস্থা-মোড কমপক্ষে কিছু ক্ষেত্রে এটি ব্যবহার করে।

যেমন যদি আপনি একটি Elisp যদি আপনি টাইপ এ গিয়ে Emacs-24.4 এবং সর্বশেষ কোম্পানি-মোড ব্যবহার বাফার খুলতে (wi-syকোম্পানীর একটি সমাপ্তির মেনু দেখাচ্ছে পপ আপ করবে window-system, window-system-for-displayএবং with-syntax-table


2
ইমাস 24.4 company-modeসমর্থন সহ completion-styles, এই পোস্টটি চেষ্টা করে দেখার জন্য একটি সম্ভাব্য সেটিংসের পরামর্শ দেয়।
wasamasa

24.4 ইনস্টল করার পরে আমি খুঁজে পেয়েছি যে এটি ঠিক আমি যা খুঁজছিলাম। দুর্ভাগ্যক্রমে এটি ভাষা নির্দিষ্ট বলে মনে হয় এবং এটি অন্য ভাষার জন্য কাজ করার জন্য সংস্থার ব্যাকএন্ডে পরিবর্তন প্রয়োজন। তবে উত্তরগুলির বাইরে এটি আমি খুঁজে পেয়েছি এটি সবচেয়ে কাছের এবং আশা করছি আরও সময় নিয়ে এটি আরও বেশি ভাষায় প্রয়োগ হবে। ধন্যবাদ!
জ্যাক উডস

company-ycmdহ'ল অপর একটি ব্যাকএন্ড যা অস্পষ্ট সমাপ্তিকে সমর্থন করে।
দিমিত্রি

9

এর সাথে company-mode, আপনি C-sএটি উপলভ্য উপলব্ধ প্রার্থীদের থেকে অনুসন্ধান করতে ব্যবহার করতে পারেন । অনুসন্ধান ক্যোয়ারী মডেলিনে প্রদর্শিত হয়েছে (স্পট করা সহজ নয়, আমি জানি I আমি এখানে একটি সমস্যা দায়ের করেছি )।

আপনি যদি সমাপ্তির জন্য হেলম ব্যবহার করতে চান তবে হেলম -সংস্থা বা এসি-হেল্ম ব্যবহারের বিষয়টি বিবেচনা করুন । এর সাথে চেষ্টা করা হয়নি ac-helm, তবে এর সাথে helm-company, আপনি এর স্ট্যান্ডার্ড ইন্টারফেসটি প্রতিস্থাপন করতে সরাসরি একটি কীতে আবদ্ধ করতে পারেন company-complete


এটি আমি যা খুঁজছিলাম তার কাছাকাছি ছিল। আমি কী-টিপস না ছাড়াই সমাপ্তির আশা করছিলাম তবে আমি পেয়েছি যে এটি উপসর্গের সাথে মিলিয়ে ব্যবহার করা একটি উপযুক্ত বিকল্প উপস্থাপন করে। ধন্যবাদ!
জ্যাক উডস

আপনি যদি company-modeইউআই ব্যবহার করেন , আপনি উপস্থাপিত C-sউপলব্ধ প্রার্থীদের একটি তালিকা থেকে একজন প্রার্থীর সন্ধান করতে টিপতে পারেন can company
টু

হ্যাঁ আমি এটি বুঝতে পারি এবং আমি উপরের মন্তব্যে বলেছি যা আমি যা খুঁজছিলাম তার কাছাকাছি। আদর্শ সমাধানের (আমার জন্য) সিএস লাগবে না এবং আমি টাইপ করার সাথে সাথে পপআপ উইন্ডোতে প্রার্থীদের ইনলাইন অনুসন্ধান করবে। তবে সিএস পদ্ধতির অবশ্যই আকর্ষণীয় এবং আমি এটিকে আমার কর্মপ্রবাহে একীভূত করতে চাই।
জ্যাক উডস

কোম্পানী ব্যবহার করলে আমি খুঁজে C-M-sপথ চেয়ে ভাল C-s। মেটা দিয়ে, এটি কেবল অনুসন্ধানের পরিবর্তে প্রার্থীদের ফিল্টার করবে।
আয়া

@ জ্ঞান যে জেনে মহান।
টু

5

যেমনটি আগে একটি মন্তব্যে উল্লেখ করা হয়েছিল, ycmdঅস্পষ্ট মেলানো সমর্থন করে। আপনি এটি মাধ্যমে ব্যবহার করতে পারেন company-ycmd। সঠিকভাবে কনফিগার করা হয়েছে, আপনি ভাষা-নির্দিষ্ট সমাপ্তির পাশাপাশি একটি সুন্দর বিরামবিহীন অভিজ্ঞতায় সাধারণ সনাক্তকারী-ভিত্তিক সমাপ্তি পেতে পারেন।


এখানে "সঠিকভাবে" অর্থ কী তা দেখানো ভাল লাগবে।
জেসন হু

2

এমন বেশ কয়েকটি প্যাকেজ রয়েছে যা এক ধরণের বা অন্য ধরণের ধূসর সমাপ্তির প্রস্তাব দেয়। আমি ধারণা করি যে হেলম করে, উদাহরণস্বরূপ (যেহেতু আপনি এটি উল্লেখ করেছেন)।

আপনি যদি গ্রন্থাগার আইকিকেল ব্যবহার করেন তবে কয়েকটি ধোঁয়াটে-সমাপ্তির পদ্ধতির মধ্যে আপনি ( ফ্লাইতে ) বেছে নিতে পারেন - আমি অন্য কোথাও যে প্রস্তাব দিয়েছি তার চেয়ে বেশি পছন্দ। (আমি নিজেও অস্পষ্ট সমাপ্তির ভক্ত নই, তবে আমি এটি অফার করছি))

Icicles সমাপ্তির (অত: পর ঝাপসা সমাপ্তির, আপনি যে পছন্দ করে থাকেন) প্রযোজ্য প্রায় কাছাকাছি সর্বত্র, কিন্তু একটি সম্পূর্ণ অনেক নও icicles -specific কোড -completion বৈশিষ্ট্য। আইকিলস ডকের এই পৃষ্ঠাটি এ জাতীয় বাফার-পাঠ্য সমাপ্তির কথা বলে।


সঙ্গে icicles , সমাপ্তির এর স্টিফান উদাহরণ ব্যবহার (wi-syগিয়ে Emacs পাতার মর্মর মোডে:

  1. সঙ্গে icicles vanillaসমাপ্তির (কি টিপে, Emacs, প্রদান করে সম্মান completion-styles), আপনি একই প্রতীক পেতে যে স্টিফান উল্লেখ করা হয়।

  2. সঙ্গে icicles চাল ঝাপসা প্রতীক সমাপ্তির (লাইব্রেরি থেকে el-swank-fuzzy.el) বর্তমান ট্যাবটি-সমাপ্তি পদ্ধতি হিসাবে, আপনি এই সমাপ্তি ক্যান্ডিডেট পাবেন:

    উইন্ডো-সিস্টেম                
    সঙ্গে-সিনট্যাক্স-টেবিল
    উইন্ডো-সিস্টেম-জন্য-প্রদর্শন
    উইজেট-কোডিং-সিস্টেম অ্যাকশন
    উইজেট-প্রতীক প্রম্পট-অভ্যন্তরীণ
    উইজেট-কোডিং-সিস্টেম-প্রম্পট-মান
    সঙ্গে-swfy-struct হয়
    উইজেট-উল্লেখ-ডক
    সঙ্গে-swfy-timedout
    উইজেট-উল্লেখ মাঠের
    উইজেট-উল্লেখ-সক্রিয়
    উইজেট-উল্লেখ বোতাম
    উইজেট-উল্লেখ-সন্নিবেশ
    উইজেট-উল্লেখ-নমুনা
    উইজেট-উল্লেখ-গোপন
    উইজেট-উল্লেখ-নিষ্ক্রিয়
    উইন্ডো-নিরাপদে-shrinkable-P
    উইজেট-ধরনের-অনুলিপি
    উইন্ডো-পুনরায় আকার দেওয়ার আবেদন
    উইন্ডো - পুনরায় আকার দেওয়ার-রুট-উইন্ডো-উল্লম্বভাবে
    উইন্ডো প্রদর্শনের-টেবিল
    উইন্ডো - প্রদর্শন-বাফার
    উইন্ডো - পুনরায় আকার দেওয়ার আবেদন-P
    উইন্ডো-পুনঃমাপের-প্রয়োগ- মোট
    widgetp প্রদর্শনের-সম্পূর্ণকরণ
    উইন্ডো-আবার দেখাও-এন্ড-ট্রিগার
    সঙ্গে-প্রদর্শিত-বাফার-উইন্ডো
    উইজেট-দৃশ্যমানতা-মান-তৈরি
    উইজেট-Emacs-গ্রন্থাগার-লিঙ্ক অ্যাকশন
    উইজেট-সম্পাদনযোগ্য-তালিকা-এন্ট্রি তৈরি
    উইজেট-Emacs-ভাষ্য-লিঙ্ক অ্যাকশন

প্রথম 3 জন প্রার্থী আবার স্টিফান উল্লেখ করেছেন তাদের।

  1. সরল অস্পষ্ট-ম্যাচ সমাপ্তির সাথে (গ্রন্থাগার fuzzy-match.el) একমাত্র প্রার্থী with-syntax-table

  2. সঙ্গে icicles ছিটান ঝাপসা সমাপ্তির , আপনি প্রার্থীদের সব পেতে যে চাল ঝাপসা সমাপ্তির অফার, প্লাস নিম্নলিখিত:

    Ange-FTP-অপেক্ষার নয়-ব্যস্ত
    dired-মধ্যে-Dir-সঙ্গে-symlinks
    ediff-চয়ন-উইন্ডো সেটআপ ফাংশনের-স্বয়ংক্রিয়ভাবে
    ediff-মেক-ব্যাপী প্রদর্শনের
    ediff-টগল ব্যাপী প্রদর্শনের
    ediff-উইন্ডো প্রদর্শনের-P
    ediff-উইন্ডো-ঠিক আছে-জন্য-প্রদর্শন
    ediff-সঙ্গে-সিনট্যাক্স-টেবিল
    এটি নতুন বাফার ফাইল-কোডিং-সিস্টেম
    গনুহ ফ্রেম-অথবা উইন্ডো প্রদর্শনের-নাম
    সাহায্যের-উইন্ডো প্রদর্শনের বার্তা
    লম্বমান-চয়ন-উইন্ডো-জন্য-বাফার প্রদর্শনের
    প্রত্যাবর্তন-বাফার-সঙ্গে-কোডিং-সিস্টেম
    সেট W32-সিস্টেম-কোডিং-সিস্টেম
    সেট উইন্ডো প্রদর্শনের-টেবিল
    সেট উইন্ডো-আবার দেখাও-এন্ড-ট্রিগার
    শেল-রাইট-ইতিহাস-অন-প্রস্থান
    বিভক্ত-উইন্ডো-বুদ্ধিমানের
    গাছ উইজেট - চিহ্নিতকরণ-উপ-ডিরেক্টরি
    W32 খুঁজতে-ফাইল-পাওয়া-সেট বাফার ফাইল-কোডিং-সিস্টেম
    W32-আরম্ভ উইন্ডো-সিস্টেম
  1. সঙ্গে icicles Levenshtein (1) ঝাপসা সাবস্ট্রিং সমাপ্তির (1 এর Levenshtein দূরত্ব), আপনি শুধুমাত্র এই সম্পূর্ণকরণ পাবেন:
    সাহায্যের-ফলো প্রতীক
    বার্তা-চেক-সংবাদ সিনট্যাক্স
    উইন্ডো-সিস্টেম উইন্ডো-সিস্টেমটি ডাব্লু 32-ইনিশিয়ালাইজ করুন
    উইন্ডো-সিস্টেম-জন্য-প্রদর্শন
  1. 2 পরিবর্তে 1 এর একটি Levenshtein দূরত্ব সঙ্গে, আছে চেয়ে বেশি 300 সমাপ্তি ক্যান্ডিডেট।

  2. সঙ্গে কঠোর Levenshtein (1 বা 2) সমাপ্তির আছে কোন প্রার্থী। তেমনি, আইকিলস জারো-উইঙ্কলারের অস্পষ্ট সমাপ্তির জন্য


1
আমি সম্মত হই যে अस्पष्ट সমাপ্তির জন্য কিছু সম্ভাব্য API ওভারল্যাপ রয়েছে, তবে কোড সমাপ্তির জন্য সাধারণত মোড নির্দিষ্ট সংকলিত বা রানটাইম পরিদর্শন প্রয়োজন requires আপনি নিজের বিবরণ হিসাবে, আইকিলগুলি কোড-সমাপ্তির বৈশিষ্ট্যগুলির ক্ষেত্রে সামান্য সরবরাহ করে, তাই এটি হাতে থাকা প্রশ্নের সাথে প্রাসঙ্গিক বলে মনে হয় না।
27:34

@ ডিজিটেড: আচ্ছা, আমি একমত নই আপনি চেষ্টা করেছেন completion.el? (একইভাবে, dabbrevএবং hippie-expand- সমস্ত তিনটি জিএনইউ ইম্যাক্সের অন্তর্ভুক্ত)) কোড সমাপ্তিতে এই জিনিসগুলি বেশ সহায়ক, যদিও আপনার পরামর্শ অনুসারে, তাদের কোনও কোড-নির্দিষ্ট জ্ঞান নেই। তারা অবাক হতে পারে যে তারা কতটা সহায়ক হতে পারে (অস্পষ্ট ম্যাচের সাথে বা ছাড়া)। এবং এগুলির মতো, কোনও কোড-নির্দিষ্ট সমাপ্তি যা একাধিক প্রার্থী যখন আইক্লিকস ফাজি সমাপ্তি থেকে স্বয়ংক্রিয়ভাবে উপভোগ করে তখন মিনিবফারটি সম্পূর্ণ করতে ব্যবহার করে ।
ড্র

2

আপনি যদি ব্যবহার ivyকরেন তবে সাম্প্রতিক আপডেটগুলিতে ivyএকটি ওভারলেতে পয়েন্ট কার্যকারিতা সম্পূর্ণ করার পক্ষে সমর্থন করে। আইভির সাহায্যে অস্পষ্ট মিলকে সমর্থন করে flx। চেকআউট এই কিভাবে এটি কাজ করে ভিডিও :)

আপনাকে যা করতে হবে তা হ'ল, complete-symbolডিফল্টরূপে আবদ্ধ হওয়া কী বাঁধাইটি টিপুন C-M-iএবং একটি ওভারলে পপ আপ হবে এবং আপনি সম্পূর্ণ প্রার্থী পেতে অস্পষ্ট মিলটি ব্যবহার করবেন।

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