কিভাবে ফাংশন কল ঝাঁপ?


14

এর সাথে একটি ট্যাগ ফাইল তৈরির পরে exuberant-ctagsআমি একটি ফাংশন কল থেকে তার ঘোষণায় ঝাঁপিয়ে পড়তে পারি <C-]>যা বেশ সুবিধাজনক।

আমার প্রশ্নটি এটি অন্য উপায়ে কীভাবে করা যায়? যখন আমার কার্সারটি কোনও ফাংশনের সংজ্ঞাতে থাকে, তখন ফাংশনটি যে লাইনে ডাকা হয় সেখানে আমি কীভাবে যেতে পারি?

আমি যখন ctags দ্বারা উত্পন্ন ফাইলটির দিকে তাকাই আমি কেবল সংজ্ঞাগুলির অবস্থানের সাথে সম্পর্কিত এবং কলের সাথে সম্পর্কিত তথ্যগুলি দেখতে পাই, তার অর্থ কি এই যে আমি এটি করতে পারছি না, সেই ভিম একটি চতুর কাজ হিসাবে বা আমাকে কিছু ব্যবহার করতে হবে আর exuberant-ctagsকি?


আ্যাক বা এজিও কাজ করবে এবং আপনি খুব সহজেই এই কমান্ড লাইন সরঞ্জামগুলির জন্য প্লাগইন র‌্যাপারগুলি খুঁজে পেতে পারেন। যেমন github.com/mileszs/ack.vim এবং github.com/rking/ag.vim
ড্যাশ-টম-ব্যাং

উত্তর:


11

আপনি কল করতে কল করতে লাফ দিতে পারবেন না ctags। সি / সি ++ এবং জাভার জন্য রয়েছে cscopeএবং এটি ভিমের সাথে দুর্দান্তভাবে সংহত করে (দেখুন :help cscope)। অন্যান্য ভাষার জন্য আপনি এমন একটি সরঞ্জাম খুঁজে পেতে সক্ষম হতে পারেন যা তৈরি করে / রফতানির সাথে cscopeসামঞ্জস্যপূর্ণ ডাটাবেসগুলি ( hscopeহাস্কেলের জন্য ফাই , এবং starscopeরুবি, গো এবং জাভাস্ক্রিপ্টের জন্য)। এছাড়াও আপনি ব্যবহার করতে পারেন cscopeসঙ্গে গনুহ বিশ্বব্যাপী , ডেটাবেস প্রতি নির্দেশ করে cscopeprgকরতে gtags-cscope

একটি পার্শ্ব নোট অন: আপনি মাঝে মাঝে ব্যবহার বিরক্তিকর দ্বারা বন্ধ না করা হয় Engrish ,;) আপনি সম্ভবত এছাড়াও ব্যবহার করতে চান সার্বজনীন-ctags পরিবর্তে exuberant-ctags। পরের বছরগুলিতে আপডেট করা হয়নি। পূর্ববর্তীটি একটি সক্রিয়ভাবে রক্ষণাবেক্ষণ করা কাঁটাচামচ।


সিস্কোপ সি / সি ++ এবং জাভা বাদে অন্য ভাষাগুলি সমর্থন করে?
edi9999

@ এডি 9999 cscopeনিজেই সি / সি ++, লেক্স এবং ইয়্যাক সমর্থন করে। জাভার সমর্থন সামান্য কার্যকর। আপনি ইউটিলিটির globalমাধ্যমে জিএনইউ থেকে (পুরানো স্টাইলের) পিএইচপি এবং জাভাস্ক্রিপ্টের জন্য সমর্থন পেতে পারেন gtags-cscope। এবং, যেমনটি আমি উপরে বলেছি, অন্যান্য সূচকগুলি রয়েছে যা cscopeসামঞ্জস্যপূর্ণ ডাটাবেসগুলি রফতানি করতে পারে ।
সাটো ক্যাটসুরা 16

8

আপনি ctags দিয়ে এটি করতে পারবেন না।

মত একটি beefier বিকল্প ব্যবহার করে দেখুন cscope : (এমনকি তার নিজস্ব সাহায্যের অধ্যায় আছে :help cscopeবা) বিশ্বব্যাপী


সিস্কোপ সি / সি ++ এবং জাভা বাদে অন্য ভাষাগুলি সমর্থন করে?
edi9999

হ্যাঁ, কমপক্ষে পিএইচপি এবং জাভাস্ক্রিপ্ট।
রোমেনেল

1
@romainl Nope, cscopeনিজেই পিএইচপি, না জাভাস্ক্রিপ্ট সমর্থন করে। তবে আপনি জিএনইউ দিয়ে পিএইচপি এবং জাভাস্ক্রিপ্ট ফাইলগুলি সূচী করতে পারেন global, তারপরে gtags-cscopeফলস্বরূপ gtagsফাইলটি ব্যবহার করতে চালান cscope
সাটো ক্যাটসুরা

@ স্যাটোক্যাটসুরা, হ্যাঁ, সিস্কোপ জাভাস্ক্রিপ্ট সমর্থন করে (এবং সিএসএস, স্পষ্টতই)।
রোমেনেল

2
@romainl আপনি এ খুঁজছেন বিবেচনা করা উচিত cscope'র সূত্র পরিবর্তে দ্রুত পরীক্ষায় উপর ভিত্তি করে অনুমান। cscopeএকটি বরং শিথিল সি পার্সার আছে। এটির যা আছে তা এবং এটি সবই করে। "পার্সার" এর সাহায্যে এটি "সমর্থন" এর উপযুক্ত মানগুলির জন্য প্রচুর ভাষাকে "সমর্থন" করে। কনস্ট্রাক্টশনগুলি যতক্ষণ না সি এর মতো কম-বেশি দেখায় ততক্ষণ তাদের স্বীকৃতি দেওয়া হয় যার কারণে ফাই জাভা ক্লাস এবং নতুন পিএইচপি কনস্ট্রাক্টগুলি স্বীকৃত নয়। স্টারস্কোপের সাথে ফাইয়ের তুলনা করুন , যা আসলে নতুন ভাষাগুলি যুক্ত করতে দেয়।
সাতো ক্যাটসুর

8

আপনি আপনার প্রকল্পের সমস্ত ফাইল সন্ধান করতে ভিমের গ্রেপ কমান্ডটি ব্যবহার করতে পারেন :

:grep! "\<<cword>\>" . -r
:copen

এটি একটি কীবাইন্ডে রাখি:

nnoremap <F4> :grep! "\<<cword>\>" . -r<CR>:copen<CR>

আমি যখন একটি বড় অপরিচিত কোডবেস অন্বেষণ করছি তখন আমি এই এক-কী প্রকল্প-প্রশস্ত অনুসন্ধানকে অমূল্য বলে মনে করি।

\<এবং \>regexp ক্রম যা শব্দের শুরু এবং শেষ নির্দেশ করে, তাই আপনি আংশিক মিল পাবেন না। ( -wগ্রেপ করার বিকল্পটি এটি অর্জনের অন্য উপায় হতে পারে))

যাইহোক, এটি একটি নির্বিঘ্ন অনুসন্ধান , সুতরাং যদি একই শব্দটি সম্পর্কহীন প্রসঙ্গে দেখা যায় তবে এটি মিথ্যা-পজিটিভ তৈরি করতে পারে।


সত্য সত্য, আমি পরিবর্তে grep.vim প্লাগইনের নিজস্ব পরিবর্তিত সংস্করণটি ব্যবহার করি । এটি ব্যবহারে কিছুটা বন্ধুত্বপূর্ণ:

  • এটি আপনাকে অনুসন্ধানের প্যাটার্নটি সম্পাদন করতে দেয় এবং গ্রেপ কমান্ডলাইনও (যাতে আপনি নির্দিষ্ট ফোল্ডারগুলিকে src/ lib/পরিবর্তে টার্গেট করতে পারেন .) এবং পরিবর্তনগুলি মনে রাখে।
  • আমি গুগলের সিসার্কের জন্য সমর্থন যোগ করেছি । এটি গ্রেপের তুলনায় অনেক দ্রুত হতে পারে কারণ এটি প্রতিবার প্রতিটি ফাইল স্ক্যান করার চেয়ে শব্দের সূচক তৈরি করে। উল্লেখযোগ্যভাবে, সিসার্ক কিছুটা আলাদা রেজিপ এক্স স্ট্যান্ডার্ড \bব্যবহার করে , সুতরাং \<এবং এর পরিবর্তে অবশ্যই ব্যবহার করা উচিত \>

আমি এটি কনফিগার করেছি এবং এর মতো কিছু স্ট্যান্ডার্ড ফাইল বাদ দিই ।

দ্রুত অ্যাক্সেসের জন্য, আমি দুটি কী-বাইন্ড তৈরি করিF3আমাকে কমান্ডলাইনটি সম্পাদনা করতে দেয়, F4কোনও অতিরিক্ত কীস্ট্রোক ছাড়াই পূর্ববর্তী কনফিগার করা কমান্ডলাইন ব্যবহার করে। প্রক্রিয়াটি বেশ কুৎসিত, এবং কিছু পরিষ্কার ব্যবহার করতে পারে তবে এটি আমাকে ভালভাবে পরিবেশন করেছে।

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