আমি জানি না যে 500 টিরও বেশি সংক্ষিপ্তসার পরিচালনা করার সবচেয়ে ভাল উপায়। দীর্ঘমেয়াদে, যেমন @ স্টাটক্স ব্যাখ্যা করেছেন, এই সংখ্যাটি হ্রাস করার জন্য আপনার স্নিপেটগুলি দেখে নেওয়া যেতে পারে।
এবং আপনি যদি সংক্ষিপ্ত বিবরণ স্বয়ংক্রিয়ভাবে করতে চান, আপনি নিম্নলিখিত কোডটি চেষ্টা করতে পারেন:
augroup GetAbbrev
autocmd!
autocmd VimEnter * let s:abbrev_list = [] |
\ call substitute(join(readfile($MYVIMRC), "\n"), '\v%(^|\n)\s*i?%(nore)?ab%[brev]\s+%(%(\<expr\>|\<buffer\>)\s+){,2}(\k+)', '\=add(s:abbrev_list, submatch(1))', 'gn')
augroup END
set completefunc=CompleteAbbrev
function! CompleteAbbrev(findstart, base)
if a:findstart
return searchpos('\<\k', 'bcnW', line('.'))[1] - 1
else
return filter(copy(s:abbrev_list), 'v:val =~ "^" . a:base')
endif
endfunction
এটি ব্যবহার করতে, আপনাকে C-x C-u
সংক্ষিপ্তসার শুরুর পরে আঘাত করতে হবে ।
অটোকিমডিটি ভেরিয়েবল সেট আপ করে s:abbrev_list
যা আপনার সমস্ত সংক্ষিপ্ত বিবরণ থাকা উচিত।
ফাংশনে CompleteAbbrev()
কার্সারের আগে শব্দের উপর ভিত্তি করে প্রার্থীদের একটি তালিকা ফেরত দেওয়া উচিত।
'completefunc'
বিকল্প মান তেজ যা ডাকতে কাজ যখন আপনি আঘাত বলে C-x C-u
।
নোট করুন বিকল্পটি বাফারের স্থানীয়, সুতরাং আপনি এখনও অন্য একটি ফাংশন বিভিন্ন ধরণের বাফারে ব্যবহার করতে পারেন, FileType
উদাহরণস্বরূপ একটি অটোকিমডি এবং ইভেন্ট ব্যবহার করে।
দেখুন :h complete-functions
কিভাবে ফাংশন কাজ করে আরো তথ্যের জন্য।
আর একটি সমাধান সমার্থক শব্দটির সমাপ্তি ব্যবহার করা হবে। থেকে :h i_^x^t
:
*i_CTRL-X_CTRL-T*
CTRL-X CTRL-T Works as CTRL-X CTRL-K, but in a special way. It uses
the 'thesaurus' option instead of 'dictionary'. If a
match is found in the thesaurus file, all the
remaining words on the same line are included as
matches, even though they don't complete the word.
Thus a word can be completely replaced.
For an example, imagine the 'thesaurus' file has a
line like this:
angry furious mad enraged
Placing the cursor after the letters "ang" and typing
CTRL-X CTRL-T would complete the word "angry";
subsequent presses would change the word to "furious",
"mad" etc.
Other uses include translation between two languages,
or grouping API functions by keyword.
এই সমাধানটি ব্যবহার করতে, আপনাকে 3 টি জিনিস করতে হবে:
{lhs}
একটি ডেডিকেটেড ফাইলের মধ্যে আপনার সমস্ত সংক্ষিপ্ত বিবরণ লিখুন ।
উদাহরণস্বরূপ /home/user/mysynonyms.txt
,। এবং তাদের অনুরূপ থিমগুলির চারদিকে গ্রুপ করুন।
বিকল্পটিতে এই ফাইলে পাথ যুক্ত করুন 'thesaurus'
:
set thesaurus+=/home/user/mysynonyms.txt
C-x C-t
একটি গ্রুপের মধ্যে কোনও সংক্ষেপণের নাম শুরুর পরে হিট করুন ।
উদাহরণস্বরূপ, ধরুন আপনার নিম্নলিখিত সংক্ষেপগুলি রয়েছে:
iab cfa CFuncA
iab cfb CFuncB
iab cfc CFuncC
iab jfa JavaFuncA
iab jfb JavaFuncB
iab jfc JavaFuncC
iab pfa PhpFuncA
iab pfb PhpFuncB
iab pfc PhpFuncC
আপনি যে প্রোগ্রামিং ল্যাঙ্গুয়েজের অন্তর্ভুক্ত তা অনুসারে আপনি তাদের গ্রুপ করতে পারেন।
ভিতরে /home/user/mysynonyms.txt
লিখতে হবে:
cpp cfa cfb cfc
php pfa pfb pfc
java jfa jfb jfc
এখন, আপনি যখনই C-x C-t
কোনও সংক্ষিপ্ত নাম (বা কেবল এটির শুরু) এর পরে আঘাত করবেন, তখন ভিমকে পপআপ মেনুতে, একই লাইনে থাকা সমস্ত সংক্ষিপ্ত বিবরণ প্রদর্শন করা উচিত।
এটি দেখতে কেমন হবে তা এখানে:
নোট করুন সংক্ষিপ্তকরণগুলি একই বর্ণগুলি গোষ্ঠীকরণের সাথে শুরু করার দরকার নেই, সেগুলি সম্পূর্ণ আলাদা হতে পারে। যতক্ষণ না তারা আপনার প্রতিশব্দ ফাইলটিতে একই লাইনে থাকবে, ভিম তাদের সমস্ত দেখায়।
এবং কোন গ্রুপটি সংক্ষেপণ রাখবে তা সিদ্ধান্ত নিতে আপনাকে প্রোগ্রামিং ভাষা ব্যবহার করতে হবে না। আপনি মনে মনে যে কোনও অর্থপূর্ণ সাদৃশ্য / বিষয় / বিভাগ অনুসারে এগুলি গ্রুপ করতে পারেন।
সুতরাং, যখন আপনি কোনও নির্দিষ্ট সংক্ষেপণ ভুলে যান, আপনি কোনও বিভাগের প্রথম অক্ষরগুলি টাইপ করতে পারেন, C-x C-t
মেনুর ভিতরে প্রাসঙ্গিকটি হিট করতে এবং চয়ন করতে পারেন।
সম্পাদনা করুন:
আপনার সমস্ত সংক্ষিপ্ত বিবরণ ভিতরে ফেলে দিতে /home/user/mysynonyms.txt
, আপনি এই 3 টি প্রাক্তন কমান্ড ব্যবহার করতে পারেন:
:let abbrev_list = []
:call substitute(join(readfile($MYVIMRC), "\n"), '\v%(^|\n)\s*i?%(nore)?ab%[brev]\s+%(%(\<expr\>|\<buffer\>)\s+){,2}(\k+)', '\=add(abbrev_list, submatch(1))', 'gn')
:call writefile(abbrev_list, '/home/user/mysynonyms.txt')
সম্পাদনা 2: ফাংশনটি বলা হয়ে গেলে
আমি পতাকাটি যুক্ত করেছি কারণ আপনার কোনও বিকল্পের প্রয়োজন নেই। এর একমাত্র উদ্দেশ্য হ'ল তালিকার ভিতরে সংক্ষিপ্তসার যুক্ত করা যখনই পাওয়া যায়।
তবে আপনার অনেক সংক্ষিপ্ত বিবরণ রয়েছে বলে এটি প্রক্রিয়াটি অকেজোভাবে ধীর করে দিতে পারে, আমি জানি না। প্রাথমিকভাবে, আমি এটি রাখিনি কারণ আপনি জানেন না যে আপনি কোন ভিম সংস্করণটি ব্যবহার করছেন। যদি আপনার সংস্করণটি 7.3.627 এর চেয়ে নতুন হয় তবে এটি ঠিক হওয়া উচিত, অন্যথায় আপনাকে পতাকাটি সরিয়ে ফেলতে হবে ।n
substitute()
n