পাইথনে কোনও ফাংশন সন্ধান করতে ইমাকগুলি কীভাবে ব্যবহার করবেন?


22

যেখানে কোনও ফাংশন সংজ্ঞায়িত হয়েছে সেখানে সন্ধানের জন্য ইমাসকে কনফিগার করার সহজতম উপায় কী? আমি এটি ইমাসে হাইলাইট করতে চাই এবং ফাংশনের উত্সটি কোথায় তা খোঁজার জন্য একটি কী কম্বো টিপতে চাই।

আপনি কোথায় সুনির্দিষ্ট ফাংশন ব্যবহার করা হচ্ছে তাও জানতে পারবেন?

এটি সহজেই পাইচার্মে সম্পন্ন হয়, তবে এটি কি সহজে ইম্যাক্সেও করা যায়?

উত্তর:


14

আপনি এলপিকে চেষ্টা করেছিলেন ? এটি elpy-goto-definitionচাবির সাথে আবদ্ধ M-.
আপনার যদি সাম্প্রতিক ইমাস থাকে তবে আমি মনে করি আপনি xref-pop-marker-stack( M-,) দিয়েও পিছনে যেতে পারবেন can এলপির আরও কয়েকটি দুর্দান্ত বৈশিষ্ট্য রয়েছে।

এটি ইনস্টল করতে লিংকের নির্দেশাবলী অনুসরণ করুন।


12

আমি পাইথনের জন্য জেডি মোড ব্যবহার করি এবং এতে আমি খুব খুশি। এটি কেবল ফাংশন কলগুলির জন্য সঠিক চেহারা গ্রহণ করে না, জটিল পরিস্থিতিতেও (উত্তরাধিকারের মতো) এমনকি সঠিক সংজ্ঞাটির সাথে এটি সমাধান করে। বুট করতে সম্পূর্ণ অটো নিয়ে আসে। http://tkf.github.io/emacs-jedi/latest/


8

পাইচারমের বৈশিষ্ট্য যা আপনি উল্লেখ করেছেন তা ছিল আমার পছন্দের একটি এবং আমি প্রথমে ইম্যাক্স দিয়ে পাইচার্মকে প্রতিস্থাপনের চেষ্টা করার মধ্যে একটি জিনিস খুঁজছিলাম (যা আমি করতে পেরে পেরে খুশি)।

অন্য উত্তরে উল্লিখিত হিসাবে elpyপ্যাকেজের এই বৈশিষ্ট্যটি রয়েছে (অন্যান্য অনেক দরকারী আইডিই বৈশিষ্ট্য ছাড়াও )। যাইহোক, আপনি যদি elpy-goto-definitionএই চিহ্নটি সন্ধান করতে চান তবে আপনি খুব শীঘ্রই খুঁজে পাবেন যে কিছু ক্ষেত্রে যেখানে পাইচার্ম আপনি যা সন্ধান করছেন তা সন্ধান করতে সফল elpyহবে , তা নয়। যেমন ডকস বলেছেন:

ব্যাকেন্ডগুলি সর্বদা সনাক্ত করতে পারে না কী ধরণের চিহ্নটি বিন্দুতে। বিশেষত কয়েকটা নির্দেশের পরে, তাদের মূলত সঠিক অনুমান করার কোনও আশা নেই, তাই তারা তা করে না

এই ক্ষেত্রে, অনুরোধ করা elpy-goto-definitionকিছু করবে না এবং প্রতিধ্বনি অঞ্চলে একটি সামান্য ত্রুটি বার্তা প্রদর্শন করবে। এটি যখন ঘটে তখন অবশ্যই আপনি যা সন্ধান করছেন তা সন্ধান করতে চান এবং elpyআপনাকে ঝুলন্ত অবস্থায় রাখবেন না। এই ধরণের পরিস্থিতিতে আমি সর্বদা C-c C-s( elpy-rgrep-symbol) ব্যবহার করি আমি rgrepযেই প্রকল্পে থাকি না কেন বিন্দুতে প্রতীকটির জন্য। কমপক্ষে আমার জন্য, আমি কম-বেশি যে জিনিসটির সন্ধান করছি তার rgrepফলাফলগুলি সর্বদা প্রদর্শিত হয় । প্রকৃতপক্ষে, আমি এটি পাইচার্মের মতোই বলে মনে করি: আপনি যদি কোনও কিছুর সংজ্ঞা খোঁজার চেষ্টা করেন এবং পাইচার্ম এটি সংজ্ঞায়িত কোথায় তা নিশ্চিত না হলে এটি আপনাকে একটি তালিকা থেকে বেছে নেবে। আমি আসলে elpyবাস্তবায়ন পছন্দ করি , কারণ আপনি প্রথম বিকল্পটিতে যাওয়ার সময় অদৃশ্য তালিকার চেয়ে অদৃশ্য হয়ে যায়,elpy-rgrep-symbol সম্ভাব্যতার তালিকাটি অন্য একটি বাফারে খোলা রেখে দেবে যাতে প্রয়োজনে আপনি তাদের মধ্যে পিছনে পিছনে লাফিয়ে উঠতে পারেন।

যেহেতু আমার কার্যপ্রবাহটি প্রায়শই প্রথম কল করা হয় elpy-goto-definitionএবং যদি এটি ব্যর্থ হয় তবে কল করুন elpy-rgrep-symbol, আমি ব্যর্থ হলে কেবল একটি সাধারণ ফাংশন হ্যাক করার সিদ্ধান্ত নিয়েছি যা কেবলমাত্র elpy-rgrep-symbolস্বয়ংক্রিয়ভাবে কল elpy-goto-definitionহয়। এই ফাংশনটি নীচে রয়েছে:

(defun goto-def-or-rgrep ()
  "Go to definition of thing at point or do an rgrep in project if that fails"
  (interactive)
  (condition-case nil (elpy-goto-definition)
    (error (elpy-rgrep-symbol (thing-at-point 'symbol)))))

তারপরে আমি এটির সাথে আবদ্ধ M-.(ডিফল্ট বাঁধাই elpy-goto-definition)।

(define-key elpy-mode-map (kbd "M-.") 'goto-def-or-rgrep)

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


4

পাইথন-মোড.েল একটি কমান্ড সরবরাহ করে py-find-definition- মেনুতে সহায়তা দেখুন।


6
দ্রষ্টব্য যে পাইথন-মোড.েল ইনস্টল করতে হবে। এটি python-modeইম্যাক্সের ডিফল্টরূপে নয়। ( স্ট্যাকওভারফ্লো.com / জিজ্ঞাসা / ১১3636৩০৮৯/২ )
ব্রায়ান জেড

2

এম। অ্যানাকোন্ডা-মোডে কাজ করে (যা আমি এলপিতে সমস্যা হওয়ার পরে স্যুইচ করেছি)।

নোট করুন যে আপনার যথাযথ অজগর পরিবেশ প্রয়োজন, আমার ক্ষেত্রে আমি নিম্নলিখিতটি করি: - mkvirtualenv someenv - python setup.py developসমস্ত মডিউলগুলির জন্য বিকাশ বা ব্যবহার (বা ইনস্টল সংস্করণের পরিবর্তে উত্সে পৌঁছা পছন্দ করে) - M-x venv-workon someenvইমাসে পাথ সক্ষম করতে।

তারপরে আমি anaconda-modeযখনই অজগর এবং ভয়েলা সম্পাদনা করি, M-.কাজ করি তখন সক্রিয় হওয়ার জন্য কনফিগার করি


1

ভাল প্রশ্ন, এটি বাক্সের বাইরে পাওয়া যায় না এবং এটি সম্পূর্ণ ব্লাউড আইডিইগুলির একটি সহজ বৈশিষ্ট্য। আমি এটি cscopeএকটি সুন্দর হেল্ম ইন্টারফেস দিয়ে করি:  http://wikemacs.org/wiki/Python#cscope এটি "এই চিহ্নটি কোথায় সংজ্ঞায়িত করা হয়েছে? এটি কোথায় ব্যবহার করা হয়েছে?" এর মতো প্রশ্নের উত্তর দিতে পারে।

PS: অশুভ-মোডে আমরা একই ফাইলের সাথে একটি চিহ্নের সংজ্ঞাতে যেতে পারি gd


আমি gdখারাপতে বিশ্বাস করি কেবলমাত্র ফাইলটিতে প্রতীকটির প্রথম উপস্থিতিটি খুঁজে পাওয়া যায় (ডক্টরিং সত্ত্বেও: "সংজ্ঞাতে যান বা চিহ্নের মধ্যে প্রথম চিহ্ন উপস্থিত হন।")
গর্ডন গুস্তাফসন

0

M-.elpy-goto-definitionকৌতুক করতে বাধ্য যা । ব্যবহারের M-*ফলে আপনি বাফার করে আগের অবস্থানে ফিরে যেতে পারবেন। এটি আপনাকে দ্রুত কিছু পরীক্ষা করতে এবং আগের অবস্থানে ফিরে যেতে সহায়তা করে।

আমি C-c C-oপ্রায়শই ব্যবহার করি ( elpy-occur-definitions)। এটি সমস্ত শ্রেণীর সাথে একটি উইন্ডো খুলবে এবং ফাংশনটি হ'ল বর্তমান বাফার। সেই বাফার থেকে, টিপে Enterদেওয়া আপনার উত্স কোডের সংজ্ঞায় নেমে আসবে।


প্রকৃতপক্ষে, এএএএফআইটিটি, ডিফল্টরূপে কোনও কীতে M-.আবদ্ধ xref-find-definitionsএবং elpy-goto-definitionএটি নয় (যদিও এটি মেনুতে রয়েছে)। সাইট প্যাকেজগুলিতে সংজ্ঞা অনুসন্ধান করা মোটেও ভাল লাগবে না।
রবার্ট পি। গোল্ডম্যান

0

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

Golang স্বয়ংক্রিয়ভাবে ইঞ্জিন (যেমন gocode) VIM এবং Emacs জন্য উভয় কাজ করে শুধু একই Jedi ইঞ্জিন উভয় কাজ করে তেজ এবং Emacs

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