আমি কীভাবে ভিএম ব্যবহার করে কোনও ফাংশন সংজ্ঞায় যেতে পারি? উদাহরণস্বরূপ ভিজ্যুয়াল অ্যাসিস্টের সাথে, আমি একটি ফাংশনের অধীনে Alt+ টাইপ করতে পারি gএবং এটি সংজ্ঞাযুক্ত ফাইলগুলি তালিকাভুক্ত একটি প্রসঙ্গ মেনু খুলবে।
আমি কীভাবে এইভাবে কিছু করতে পারি?
আমি কীভাবে ভিএম ব্যবহার করে কোনও ফাংশন সংজ্ঞায় যেতে পারি? উদাহরণস্বরূপ ভিজ্যুয়াল অ্যাসিস্টের সাথে, আমি একটি ফাংশনের অধীনে Alt+ টাইপ করতে পারি gএবং এটি সংজ্ঞাযুক্ত ফাইলগুলি তালিকাভুক্ত একটি প্রসঙ্গ মেনু খুলবে।
আমি কীভাবে এইভাবে কিছু করতে পারি?
উত্তর:
Ctags ব্যবহার করুন। একটি ট্যাগ ফাইল তৈরি করুন এবং vim কে এটি ট্যাগ: কমান্ডটি ব্যবহার করছে তা বলুন। তারপরে আপনি কেবল ফাংশন সংজ্ঞা ব্যবহার করে লাফিয়ে উঠতে পারেন Ctrl-]
এই প্রশ্নে আরও ট্যাগ কৌশল এবং টিপস আছে ।
যদি সমস্ত কিছু একটি ফাইলে থাকে তবে কমান্ডটি রয়েছে gd
('গোটো সংজ্ঞা হিসাবে'), যা আপনাকে কার্সারের নীচে শব্দের ফাইলের প্রথম উপস্থিতিতে নিয়ে যাবে, যা প্রায়শই সংজ্ঞা হয়।
/
/
এটি প্রায় সবসময় সুনির্দিষ্ট নয়, কারণ এটি সমস্ত ঘটনাকে মেলাতে চলেছে। আমি জানতে পেরেছিলাম যে আপনি :tag <function_name>
ctags এর মাধ্যমে সংজ্ঞাটিতে যেতে পারেন।
g* ctags সেট আপ না করে একটি শালীন কাজ করে।
অর্থাৎ টাইপ g, *(বা শুধু *- কার্সার অধীনে শব্দ জন্য অনুসন্ধান করতে (এই ক্ষেত্রে, ফাংশন নামে) নীচে দেখুন)। তারপরে nপরবর্তী (বা Shift- nপূর্ববর্তী) উপস্থিতিতে যেতে টিপুন ।
এটি সরাসরি সংজ্ঞাটিতে ঝাঁপ দেয় না, এই আদেশটি কেবল কার্সারের নীচে শব্দটির সন্ধান করে, তবে আপনি যদি এই মুহুর্তে ctags স্থাপনের সাথে মোকাবিলা করতে না চান তবে আপনি কমপক্ষে নিজেকে পুনরুদ্ধার থেকে বাঁচাতে পারবেন এর সংজ্ঞাটি অনুসন্ধান করতে ফাংশনের নামটি টাইপ করুন।
- সম্পাদনা - যদিও আমি দীর্ঘদিন ধরে জি * ব্যবহার করছি, আমি সম্প্রতি এই শর্টকাটগুলির জন্য দুটি শর্টকাট আবিষ্কার করেছি!
(ক) *কার্সারের নিচে শব্দের পরবর্তী ঘটনাতে লাফিয়ে উঠবে। ( g
Vi তে 'গোটো' কমান্ডটি টাইপ করার দরকার নেই )।
(খ) #আগের ঘটনাটিতে একই রকম ফ্যাশনে যায়।
এন এবং এন এখনও কাজ করে তবে '#' প্রায়শই বিপরীত দিকে শুরুতে অনুসন্ধান শুরু করার জন্য খুব কার্যকরী হয়, উদাহরণস্বরূপ, কার্সারের নীচে ভেরিয়েবলের ঘোষণার জন্য যখন।
*
এবং g*
অনুসন্ধান শব্দ সীমানা নেই। *
একটি করে \<keyword\>
অনুসন্ধান (হিসাবে একই \bkeyword\b
, নিয়মিত Regex মধ্যে) যখন g*
এর জন্য অনুসন্ধান keyword
শব্দ সীমানা ছাড়াই।
*
সংজ্ঞাটি পাওয়ার আগে আপনাকে গড়ে 50 টি হিট নিতে চলেছে।
পল টমব্লিন যেমন উল্লেখ করেছেন আপনাকে ctags ব্যবহার করতে হবে । আপনি প্লাগিনগুলি যথাযথ বাছাই করতে বা কার্সারের অধীনে কার্যটির সংজ্ঞাটি পূর্বরূপ বিবেচনা করতেও বিবেচনা করতে পারেন । প্লাগিন ব্যতীত আপনার ctags সমর্থন হিসাবে নির্মিত শত শত ওভারলোডেড 'doAction' পদ্ধতিগুলির মধ্যে একটি বেছে নেওয়ার চেষ্টা করে মাথা ব্যথার প্রসঙ্গটি বিবেচনা করে না - কেবল একটি নাম।
এছাড়াও আপনি সিস্কোপ ব্যবহার করতে পারেন এবং এটির 'গ্লোবাল সিম্বল সন্ধান করুন' ফাংশনটি ব্যবহার করতে পারেন । তবে আপনার ভিমে + সিস্কোপ সমর্থন দিয়ে সংকলন করতে হবে যা বিল্ডের ডিফল্ট একটি বিকল্প নয়।
আপনি যদি জানেন যে ফাংশনটি বর্তমান ফাইলে সংজ্ঞায়িত করা হয়েছে, তবে আপনি 'জিডি' কীস্ট্রোককে কার্সারের অধীনে প্রতীকটির সংজ্ঞাটিতে যেতে একটি সাধারণ মোডে ব্যবহার করতে পারেন।
নেভিগেশনের জন্য এখানে সবচেয়ে ডাউনলোড করা প্লাগইন
http://www.vim.org/scriptts/script.php?script_id=273
Http://www.vim.org/scriptts/script.php?script_id=2507 ট্যাগ করার জন্য প্রসঙ্গ নির্বাচন করতে আমি এখানে একটি লিখেছি
Detailed description
অংশে আপনার সরবরাহিত লিঙ্কটি নষ্ট #2507
হয়ে গেছে। আপনি দয়া করে অন্য একটি সরবরাহ করতে পারেন?
আর একটি সাধারণ কৌশল হ'ল প্রথম কলামে ফাংশনটির নাম স্থাপন করা। এটি সাধারণ অনুসন্ধানের সাথে সংজ্ঞাটি সন্ধান করতে দেয়।
int
main(int argc, char *argv[])
{
...
}
উপরের ফাংশনটি তখন /^main
ফাইলের ভিতরে বা :grep -r '^main' *.c
ডিরেক্টরিতে পাওয়া যায়। যতক্ষণ কোড সঠিকভাবে ইন্টেন্ট করা থাকে কেবলমাত্র রেখার শুরুর দিকে সনাক্তকারীটি ঘটবে কেবল ফাংশন সংজ্ঞাতে।
অবশ্যই আপনি যদি এই মুহূর্ত থেকে ctags ব্যবহার না করেন তবে আপনার নিজের জন্য লজ্জা পাওয়া উচিত! তবে আমি এই কোডিং স্ট্যান্ডার্ডটিকে পাশাপাশি একটি সহায়ক সংযোজন বলে মনে করি।
টি এল; ডিআর:
আধুনিক উপায় হ'ল ইন্টেলিজেন্স-এর মতো সমাপ্তির জন্য সিওসি এবং একাধিক ভাষা সার্ভার (এলএস) লাফ-টু-ডেফিনেশনের জন্য (এবং উপায় আরও বেশি) ব্যবহার করা। আরও কার্যকারিতার জন্য (তবে এটি জাম্প-টু-ডেফিনেশনের প্রয়োজন নেই) আপনি এক বা একাধিক ডিবাগার ইনস্টল করতে পারেন এবং একটি সম্পূর্ণ প্রস্ফুটিত IDE অভিজ্ঞতা পেতে পারেন। দ্রুত শুরু:
~/.vimrc
:
call plug#begin()
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'puremourning/vimspector'
call plug#end()
:source $MYVIMRC | PlugInstall
ভিআইএম প্লাগইনগুলি ডাউনলোড করতে কল করুনvim
এবং :CocInstall coc-marketplace
সিওসি এক্সটেনশনে সহজে অ্যাক্সেস পেতে কল করুন:CocList marketplace
ভাষা সার্ভারের জন্য কল এবং অনুসন্ধান করুন, যেমন:
python
খুঁজে পেতে টাইপ করুন coc-jedi
,php
এটি coc-phpls
, ইত্যাদিinstall_gadget.py --help
allyচ্ছিকভাবে ) উপলব্ধ ডিবাগারগুলির জন্য দেখুন , যেমন:
./install_gadget.py --enable-python
,./install_gadget.py --force-enable-php
ইত্যাদিপুরো উত্তর:
ল্যাঙ্গুয়েজ সার্ভার (এলএস) একটি পৃথক স্ট্যান্ডএলোন অ্যাপ্লিকেশন (প্রতিটি প্রোগ্রামিং ভাষার জন্য একটি) যা ব্যাকগ্রাউন্ডে চলে এবং আপনার সম্পাদকের কাছে অতিরিক্ত দক্ষতা প্রকাশ করার জন্য রিয়েল টাইমে আপনার পুরো প্রকল্পটিকে বিশ্লেষণ করে (কোনও সম্পাদকই নয়, কেবল vim
)। আপনি যেমন জিনিস পান:
ভাষা সার্ভারের সাথে যোগাযোগ ল্যাঙ্গুয়েজ সার্ভার প্রোটোকল (এলএসপি) এর মাধ্যমে হয়। উভয় nvim
এবং vim8
(বা উচ্চতর) প্লাস-ইনগুলির মাধ্যমে এলএসপিকে সমর্থন করে, সর্বাধিক জনপ্রিয় হচ্ছে কনকয়ের অব কমপ্লিট (সিওসি)।
সক্রিয়ভাবে বিকশিত ভাষা সার্ভারগুলির তালিকা এবং তাদের ক্ষমতা ল্যাং সার্ভার ওয়েবসাইটে উপলব্ধ। এর সবগুলিই সিওসি এক্সটেনশান দ্বারা সরবরাহ করা হয় না। আপনি যদি তাদের মধ্যে একটি ব্যবহার করতে চান তবে আপনি নিজেই একটি সিওসি এক্সটেনশন লিখতে পারেন বা ম্যানুয়ালি এলএস ইনস্টল করতে পারেন এবং নিম্নলিখিত ভিআইএম প্লাগ-ইনগুলির কম্বোকে সিওসি বিকল্প হিসাবে ব্যবহার করতে পারেন:
ডিবাগদের সাথে যোগাযোগ ডিবাগ অ্যাডাপ্টার প্রোটোকল (ডিএপি) এর মাধ্যমে হয়। ভিআইএমের জন্য সর্বাধিক জনপ্রিয় ডিএপি প্লাগ-ইন হ'ল ভিমস্পেক্টর ।
মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও কোডের জন্য ল্যাঙ্গুয়েজ সার্ভার প্রোটোকল (এলএসপি) তৈরি করেছিল এবং অনুমতিপ্রাপ্ত এমআইটি লাইসেন্স (রেড হ্যাট এবং কোডেনভির সহযোগিতায় মানকৃত) সহ একটি ওপেন সোর্স প্রকল্প হিসাবে প্রকাশিত হয়েছিল । পরে মাইক্রোসফ্ট ডিবিগ অ্যাডাপ্টার প্রোটোকল (ডিএপি) পাশাপাশি প্রকাশ করে। ভিএসকোড দ্বারা সমর্থিত যে কোনও ভাষা ভিআইএম-এ সমর্থিত।
আমি ব্যক্তিগতভাবে cóc + + ভাষা + + cóc এক্সটেনশন দ্বারা উপলব্ধ সার্ভারগুলি ব্যবহার সুপারিশ বীয়ার অতিরিক্ত linting জন্য (কিন্তু LSP সমর্থন cóc সঙ্গে এড়ানোর দ্বন্দ্ব অক্ষম সঙ্গে) + + Vimspector + + Vimspector দ্বারা উপলব্ধ debuggers + + নিম্নলিখিত VIM প্ল্যাগ-ইনগুলি ( "গ্যাজেটগুলি" বলা):
call plug#begin()
Plug 'neoclide/coc.nvim'
Plug 'dense-analysis/ale'
Plug 'puremourning/vimspector'
Plug 'scrooloose/nerdtree'
Plug 'scrooloose/nerdcommenter'
Plug 'sheerun/vim-polyglot'
Plug 'yggdroot/indentline'
Plug 'tpope/vim-surround'
Plug 'kana/vim-textobj-user'
\| Plug 'glts/vim-textobj-comment'
Plug 'janko/vim-test'
Plug 'vim-scripts/vcscommand.vim'
Plug 'mhinz/vim-signify'
call plug#end()
তারা প্রতিটি কি করে তা দেখতে আপনি গুগল করতে পারেন।
1- এক্সবিউরেন্ট সিটি্যাগগুলি ইনস্টল করুন। আপনি যদি অক্স ব্যবহার করছেন তবে এই নিবন্ধটি একটি সামান্য কৌশল দেখায়: http://www.runtime-era.com/2012/05/exuberant-ctags-in-osx-107.html
2- আপনি যদি কেবলমাত্র আপনার ডিরেক্টরিতে ফাইলের জন্য ctags অন্তর্ভুক্ত করতে চান তবে এই ডিরেক্টরিটি আপনার ডিরেক্টরিতে চালান:
ctags -R
এটি আপনার জন্য একটি "ট্যাগ" ফাইল তৈরি করবে।
3- আপনি যদি রুবি ব্যবহার করেন এবং আপনার রত্নগুলির জন্য ctags অন্তর্ভুক্ত করতে চান (এটি আমার জন্য রুবিমোশন এবং স্থানীয় রত্নগুলির সাথে সত্যই সহায়ক হয়ে উঠেছে), নিম্নলিখিতগুলি করুন:
ctags --exclude=.git --exclude='*.log' -R * `bundle show --paths`
ক্রেডিট: https://coderwall.com/p/lv1qww (নোট করুন যে আমি -e বিকল্পটি বাদ দিয়েছি যা ভিমের পরিবর্তে ইম্যাকের জন্য ট্যাগ উত্পন্ন করে)
4- আপনার ~ / .vimrc এ নিম্নলিখিত লাইনটি যুক্ত করুন
set autochdir
set tags+=./tags;
(কেন আধা কোলন: http://vim.wikia.com/wiki/Single_tags_file_for_a_s Source_tree )
5- আপনি যে শব্দটি অনুসরণ করতে এবং আঘাত করতে চান তাতে যান ctrl + ]
; আপনি যদি ফিরে যেতে চান তবে ব্যবহার করুন ctrl+o
(উত্স: https://stackoverflow.com/a/53929/226255 )
পলের দ্বিতীয় প্রতিক্রিয়ায়: হ্যাঁ, ctags (বিশেষত বিস্ময়কর- ctags ( http://ctags.sourceforge.net/ )) দুর্দান্ত। আমি এটি আমার ভিএমআরসি-তেও যুক্ত করেছি, তাই আমি পুরো প্রকল্পের জন্য একটি ট্যাগ ফাইল ব্যবহার করতে পারি:
set tags=tags;/
ইনস্টল করুন cscope
। এটি অনেক বেশি পছন্দ করে ctags
তবে আরও শক্তিশালী কাজ করে। সংজ্ঞা যেতে, Ctrl+ এর পরিবর্তে ], Ctrl+ \+ করুন g। অবশ্যই আপনি উভয় একযোগে ব্যবহার করতে পারেন। তবে একটি বড় প্রকল্পের সাথে (লিনাক্স কার্নেল বলুন), সিস্কোপটি কয়েক মাইল এগিয়ে।