ভিএমআরসি-তে কীভাবে কাস্টম পপআপ / মেনু সংজ্ঞা দেওয়া যায়


19

প্রতিটি কার্যকর ফাংশনকে একটি কীতে বরাদ্দ করা প্রায়শই ব্যবহৃত সরঞ্জামগুলির জন্য ভাল কাজ করে, তবে কিছু অপারেশন রয়েছে যা আমি খুব কমই ব্যবহার করি, যে আমি আমার সংজ্ঞায়িত কিছু পপআপ মেনুতে সেগুলি অর্পণ করতে পছন্দ করব vimrc

আমি CtrlP এর মতো প্লাগইনগুলি একটি পপআপ তালিকা খুলতে দেখেছি যাতে এটি সম্ভব হয়।

সুতরাং আমার প্রশ্নটি হ'ল:

একটি কাস্টম পপআপ মেনু কীভাবে সংজ্ঞায়িত করা যায় যা বিভিন্ন কমান্ড চালাতে পারে?


দ্রষ্টব্য: এটিও টার্মিনালে চালানো উচিত।

এক্স 11-তে সিটিআরএলপি প্লাগইন বা ডেমেনুর মতো কিছু আদর্শ হতে পারে, যেখানে আপনি টাইপ করার সাথে সাথে বিকল্পগুলি পরিমার্জন করতে পারেন, তবে ভিন্ন ধরণের মেনুও দরকারী।

উত্তর:


11

বাক্সের বাইরে এই কাজটি করার জন্য যথেষ্ট পরিমাণ কাজের প্রয়োজন হবে তবে আমি মনে করি আপনি ইউনিট.ভিম প্লাগইন ব্যবহার করে বেশ কিছুটা সোজা-ফরোয়ার্ড করতে পারেন । এটি বিভিন্ন উত্স থেকে মেনু তৈরির জন্য একটি ইন্টিগ্রেশন ইন্টারফেস সরবরাহ করে। (প্রকৃতপক্ষে, কেউ কেউ এমনকি CtrlP এর সাথে ইউনিটও প্রতিস্থাপন করেছেন )) ইউনিট ডকুমেন্টেশনের এই উদাহরণটি (অথবা :help g:unite_source_menu_menusএকবার আপনি ইউনিয়ন ইনস্টল করার পরে একবার দেখুন ) কীভাবে কমান্ডের মৌলিক মেনু তৈরি করা যায় তার বিশদ বিবরণ।

এই ডকুমেন্টেশন অনুসরণ করে, আমি একটি সাধারণ উদাহরণ নিয়ে এসেছি যা কমান্ডের মেনু সরবরাহ করে। প্রদর্শনের উদ্দেশ্যে, আমি এটি NERDTree খোলার জন্য কমান্ড দিয়ে সেট আপ করেছি (NERDTree প্লাগইন থেকে), একটি গিট দোষ দেখানো (পলাতক.ভিম প্লাগইন থেকে) এবং একটি প্রকল্পে টোডোর জন্য গ্রেপিং (বিল্ট-ইন ব্যবহার করে :grep)। মেনুটি খুলতে আমি একটি ম্যাপিং সংজ্ঞায়িত করেছি <Leader>c

# Initialize Unite's global list of menus
if !exists('g:unite_source_menu_menus')
    let g:unite_source_menu_menus = {}
endif

# Create an entry for our new menu of commands
let g:unite_source_menu_menus.my_commands = {
\    'description': 'My Commands'
\ }

# Define the function that maps our command labels to the commands they execute
function! g:unite_source_menu_menus.my_commands.map(key, value)
    return {
    \   'word': a:key,
    \   'kind': 'command',
    \   'action__command': a:value
    \ }
endfunction

# Define our list of [Label, Command] pairs
let g:unite_source_menu_menus.my_commands.command_candidates = [
\   ['Open/Close NERDTree', 'NERDTreeToggle'],
\   ['Git Blame', 'Gblame'],
\   ['Grep for TODOs', 'grep TODO']
\ ]

# Create a mapping to open our menu
nnoremap <Leader>c :<C-U>Unite menu:my_commands -start-insert -ignorecase<CR>

আপনি এটিতে অনুলিপি করতে পারেন vimrcএবং অ্যারের দ্বারা সংজ্ঞায়িত কমান্ডগুলির তালিকা সম্পাদনা করতে পারেন g:unite_source_menu_menus.my_commands.command_candidates। অ্যারের প্রতিটি আইটেম ফর্মের একটি অ্যারে [Label, Command]

আমার উদাহরণস্বরূপ, my_commandsএমন একটি নাম যা আমি আমার মেনুটি সনাক্ত করতে পছন্দ করেছিলাম। আপনি চাইলে যে কোনও নাম ব্যবহার করতে পারেন।

আশাকরি এটা সাহায্য করবে!

সম্পাদনা: সংকীর্ণ মোডে মেনুটি শুরু করার জন্য ম্যাপিংয়ের সাথে যুক্ত -start-insertএবং -ignorecaseবিকল্পগুলি (ফাজি-অনুসন্ধানের মতো)।

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