আমি কীভাবে আমার ভিএমআরসি-তে অনেক সংক্ষিপ্ত বিবরণ পরিচালনা ও স্মরণ করব?


10

আমার জাভা, পিএইচপি, সি / সি ++ এবং লেটেক্স থেকে আমার ভিএমআরসি ফাইলটিতে 500 এরও বেশি সংক্ষিপ্ত বিবরণ ( iabbr, abbr) এবং কিছু ম্যাপিং রয়েছে।

যখন আমি কিছু সময়ের জন্য ভাষাগুলি ব্যবহার না করি তখনই অবিলম্বে মনে রাখা সহজ নয়।

আমি ভাবছি আমি সংক্ষেপের নামে সম্পূর্ণ করতে পারি কিনা। এই সমস্ত সংক্ষিপ্ত বিবরণ অ্যাক্সেস / পরিচালনা করার আরও ভাল উপায় আছে?

উত্তর:


10

আমি জানি না যে 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 টি জিনিস করতে হবে:

  1. {lhs}একটি ডেডিকেটেড ফাইলের মধ্যে আপনার সমস্ত সংক্ষিপ্ত বিবরণ লিখুন ।
    উদাহরণস্বরূপ /home/user/mysynonyms.txt,। এবং তাদের অনুরূপ থিমগুলির চারদিকে গ্রুপ করুন।
  2. বিকল্পটিতে এই ফাইলে পাথ যুক্ত করুন 'thesaurus':

    set thesaurus+=/home/user/mysynonyms.txt
    
  3. 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 এর চেয়ে নতুন হয় তবে এটি ঠিক হওয়া উচিত, অন্যথায় আপনাকে পতাকাটি সরিয়ে ফেলতে হবে ।nsubstitute()
n


চমত্কার এবং ব্যাপক উত্তর। আপনি রক
1234

\ বনাম% (^ | \ N) \ s * আমি% (nore) এ বি% [brev] \ S +% (% (\ <expr \> | \ <বাফার \>) \ S +)?? {, 2} ( \ k +) আমার vimrc ফাইলটিতে কাজ করছে না
1234

@ জুবিলি এটি আমার সিস্টেমে কাজ করে, আপনার কোনও ত্রুটির বার্তা আছে? এটি কি আরও সাধারণ (তবে কম নির্ভরযোগ্য) রেজেক্সের মতো কাজ করে \vi?abbr\s+(\k+)? আপনি কি আমাকে আপনার সংক্ষিপ্তসারগুলির একটি অংশের সাথে একটি লিঙ্ক দিতে পারেন, তা দেখার জন্য আমি আপনার সমস্যার পুনরুত্পাদন করতে পারি কিনা?
ব্যবহারকারী 9433424

@ জুবিলি আপনার ভিম সংস্করণটি যদি সাম্প্রতিক পর্যায়ে থাকে তবে nবিকল্প কলটিতে পতাকা যুক্ত করুন (আমি এটি যুক্ত করার জন্য উত্তরটি সম্পাদনা করেছি)। আপনি যদি নিজের কোনও অনুসন্ধান করেন vimrcএবং আপনি এটি অনুলিপি \v^\s*i?%(nore)?ab%[brev]\s+%(%(\<expr\>|\<buffer\>)\s+){,2}\zs\k+করেন, এটি কি আপনার সংক্ষিপ্তসারগুলি হাইলাইট করে?
ব্যবহারকারী 9433424

9

উইকিয়া টিপ আপনার সংক্ষিপ্তসারগুলি নির্বাচিতভাবে প্রদর্শন করার জন্য একটি পদ্ধতির পরামর্শ দেয়:

আপনি আপনার সংক্ষিপ্তসারগুলির সাথে তালিকাভুক্ত করতে পারেন

:ab<CR>

(প্রতিস্থাপন abদ্বারা iabশুধুমাত্র মোড বর্ণমালা সন্নিবেশ লিস্টে)

এবং আপনি একই উপসর্গ সহ সমস্ত সংক্ষিপ্ত বিবরণ তালিকা করতে পারেন

:ab prefix<CR>

এটি সংক্ষিপ্তসারগুলির সমাপ্তির মতো আদর্শ নয় তবে এটি আপনার বিদ্যমান সংক্ষিপ্তসারগুলির দ্রুত তালিকা রাখার জন্য একটি ভাল উপায় হতে পারে।

এই সমাধানটিকে আরও দক্ষ করার জন্য একটি ফাইল টাইপের সাথে নির্দিষ্ট সংক্ষেপণ তৈরি করা to উদাহরণস্বরূপ এই সংক্ষিপ্তসারটি কেবল জাভা বাফারে কার্যকর:

iabbrev syso System.out.println("");

সুতরাং এটির মতো এটি সংজ্ঞায়িত করা ভাল:

autocmd! FileType java :iabbrev <buffer> syso System.out.println("");

স্বতঃসংশ্লিষ্ট অংশটি তখনই সংক্ষেপণ তৈরি করতে দেয় আপনি যখন জাভা বাফারে থাকেন এবং <buffer>বিকল্পটি কেবল এই বাফার থেকে সংক্ষিপ্তসারটিকে অ্যাক্সেসযোগ্য করে তুলবে।

এই পদ্ধতি :iabযখন আপনি একটি জাভা বাফারে কেবল সংক্ষেপ প্রদর্শন করা হবে। আপনার যদি সংক্ষিপ্ত পরিমাণ থাকে তবে ফাইল টাইপ দ্বারা একটি ফাংশন তৈরি করা আকর্ষণীয় হতে পারে যা সংক্ষিপ্তসারগুলির সমস্ত সংজ্ঞা দেয় এবং স্বতঃসংশ্লিষ্টকে ফাংশনটি কল করতে দেয়। কিছুটা এইরকম:

autocmd! FileType latex call CreateLatexAbbrev()

function! CreateLatexAbbrev()
    iabbrev <buffer> something something else
    " All the other latex abbreviations
endfunction

আর একটি সমাধান হ'ল কীওয়ার্ডগুলির উত্স হিসাবে আপনার সংক্ষিপ্তসারটির তালিকা ব্যবহার করে আপনার নিজস্ব অটো-সম্পূর্ণ ফাংশন তৈরি করা যেতে পারে।

পরিশেষে আমার বলতে হবে যে আমি "500 এরও বেশি সংক্ষিপ্ত বিবরণ" দ্বারা মুগ্ধ হয়েছি, আপনি কোনটি ব্যবহার করছেন তা আমি জানি না তবে আপনি যদি পরিচিত না হন তবে স্নিপেটগুলির ধারণাটি আপনার কাছে আকর্ষণীয় হবে তাদের সাথে. যেহেতু এগুলি এমন টেমপ্লেট যা কোনও কীওয়ার্ড প্রবেশ করিয়ে এবং হটকি টিপে ট্রিগার করা হয়, সেগুলি সংক্ষেপণের চেয়ে আরও নমনীয় হয়, এটি আপনাকে যে সংক্ষিপ্তসারগুলি ব্যবহার করছেন তা হ্রাস করার অনুমতি দিতে পারে। একটি আকর্ষণীয় ভূমিকা জন্য এখানে দেখুন ।


1

ফাইল টাইপ দ্বারা সংক্ষিপ্তকরণগুলি গ্রুপিং সম্পর্কে কীভাবে?

আপনার ~/.vimrcফাইলটিতে সেগুলি রাখার পরিবর্তে এগুলি ভেঙে ফেলুন এবং ~/.vimইউনিক্স-এর মতো অপারেটিং সিস্টেমে থাকা আপনার রানটাইম ডিরেক্টরিতে সঠিক স্থানে রাখুন ।

উদাহরণস্বরূপ, আপনার মার্কডাউন সংক্ষেপগুলি ফাইলটিতে অবস্থিত হবে ~/.vim/after/ftplugin/markdown.vimযা মার্কডাউন ফাইল টাইপ প্লাগইন লোডের পরে ভিম চেক করে।

দেখা যাচ্ছে যে আমাদের কাছে বিশাল .vimrcফাইল থাকা উচিত নয় ; আপনি ব্যবহার করে আরও নমনীয়তা পাবেন $VIMRUNTIME। রানটাইম পথ তেজ সাহায্য সিস্টেমের মধ্যে নথিভুক্ত হয়: :h 'runtimepath'

আমি প্রথম সম্পর্কে এই সম্পর্কে জানতে পেয়েছিলাম। Vimrc থেকে .vim থেকে Vim- থিমযুক্ত অ্যাডভেন্ট ক্যালেন্ডার Vimways এ

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