কী কী ম্যাপ করা আছে তা কীভাবে খুঁজে বের করবেন?


13

আমি জানি যে :mapআর্গুমেন্ট ছাড়াই কমান্ডগুলি চালনা করা উচিত আমাকে ব্যবহারকারী-সংজ্ঞায়িত ম্যাপিংগুলির একটি তালিকা দেওয়া উচিত, তবে উদাহরণস্বরূপ, যখন আমি Ctrl-W Ctrl-I চাপি তখন কিছু ঘটেছিল, তবে বিল্ট-ইন ম্যাপিং হিসাবে কী ফাংশনটি ঘটেছিল তা আমার কোনও ধারণা নেই have :mapকমান্ড উপস্থিত না ।

কী কী তা আবিষ্কার করব?



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

আপনি চিহ্নিত নকলটি পড়েছেন? কারণ এটি আপনাকে এই তথ্যের জন্য ভিম সহায়তা সিস্টেমটি কীভাবে জিজ্ঞাসা করতে পারে তা জানায় (তালিকা আইটেম নং 8): :help CTRL-W_CTRL-Iবা:help CTRL-W_i
মার্টিন টর্নোইজ

2
আমি পুনরায় খোলার পক্ষে মতামত দিয়েছি কেননা সহায়তা নেভিগেশন সম্পর্কিত বর্তমানে সংযুক্ত নকলের চেয়ে প্রশ্নের উত্তর-সম্পাদনের ফর্মটির একটি কার্যকরভাবে আলাদা উত্তর (": মানচিত্র <কী"> সক্রিয় ম্যাপিংগুলি মুদ্রণ করতে ") রয়েছে।

1
তবে ওপি এটি জানে বলে মনে হচ্ছে, এটি তার প্রথম বাক্যাংশ। ভিমের পক্ষে সমস্ত নন-ম্যাপযুক্ত কীগুলি অর্থাত্ তারা ডিফল্টরূপে কী করে তা দেখানোর জন্য (একইভাবে) একটি উপায় পাওয়ার জন্য ভাল হবে।
ভ্যানলাসার

উত্তর:


10

আপনি পারবেন না।

এখানে যা করার জন্য সি উত্স কোড <C-w><C-i>:

normal.c:

/*
 * This table contains one entry for every Normal or Visual mode command.
 * The order doesn't matter, init_normal_cmds() will create a sorted index.
 * It is faster when all keys from zero to '~' are present.
 */
static const struct nv_cmd
{
    int         cmd_char;       /* (first) command character */
    nv_func_T   cmd_func;       /* function for this command */
    short_u     cmd_flags;      /* NV_ flags */
    short       cmd_arg;        /* value for ca.arg */
} nv_cmds[] =
{

[...]

    {Ctrl_W,    nv_window,      0,                      0},
};

[...]

/*
 * CTRL-W: Window commands
 */
    static void
nv_window(cmdarg_T *cap)
{
    if (!checkclearop(cap->oap))
        do_window(cap->nchar, cap->count0, NUL); /* everything is in window.c */
}

window.c:

/*
 * all CTRL-W window commands are handled here, called from normal_cmd().
 */
    void
do_window(
[..]
) {
    switch (nchar)
    {
[..]
    case 'i':                       /* Go to any match */
    case Ctrl_I:
                type = FIND_ANY;
                /* FALLTHROUGH */

[..]
    default:    beep_flush();
                break;

typeভেরিয়েবলটি কোথায় বাছাই হবে তা আমি পুরোপুরি নিশ্চিত নই , তবে এটি সন্ধান করার মতো আমার মনে হয় নি, তবে মূল কথাটি হ'ল "এই কীটি এই কার্যকারিতাটিতে ম্যাপ করা আছে" বলার কোনও আসল সুবিধা নেই। এটি মূলত কেবল একটি structযা charকোনও ক্রিয়াকলাপের মানচিত্র করে এবং দ্বিতীয় কীস্ট্রোক ( <C-i>) বাস্তবায়ন কেবল অ্যাড-হক কদর্যতা!

এটি ইমাক্স থেকে পৃথক, যেখানে (আমার ধারনা) লিস্পে সমস্ত কিছু রয়েছে এবং আপনার কাস্টম ম্যাপিংগুলি ইমাসের ডিফল্ট ম্যাপিংয়ের চেয়ে আলাদা নয়। তবে ভিমে আপনার কাছে "ম্যাজিক" ম্যাপিং রয়েছে যা সি কোড দিয়ে থাকে যা সি ফাংশনের বিরুদ্ধে মানচিত্র দেয় যা ভিমে কখনও প্রকাশিত হয় না। আমি সবসময় বলি যে ভিমের আরও ভাল ধারণা আছে তবে ইমাক্স আরও ভাল বাস্তবায়ন করেছে ;-)

সুতরাং একমাত্র উপায় হ'ল সহায়তা ফাইলগুলিতে এটি অনুসন্ধান করা। এই কারণেই আমি এটিকে ভীমের নথিভুক্ত বিষয়গুলিতে কীভাবে নেভিগেট করব তার নকল হিসাবে এটি বন্ধ করে দিয়েছি যেহেতু যে কেউই দিতে পারে এমন একমাত্র ব্যবহারিক উত্তর। সত্যই যে কেউ তর্ক করতে পারে যে প্রশ্নের আরও গভীরভাবে ব্যাখ্যা দেওয়া যেতে পারে (যেমন আমি সবেমাত্র করেছি), এবং আপনি যদি তর্ক করেছিলেন যে , (এখন মুছে ফেলা) প্রতিক্রিয়া না দিয়ে আমি সম্ভবত "আপনি" বলেছি ঠিক আছে, ভুলের জন্য দুঃখিত "এবং এটি আবার খোলা ;-)

যে কোনও হারে, সংক্ষেপে কয়েকটি উদাহরণ সহ সংক্ষেপে চিত্রিত করতে:

  • :help ww(কেস-সংবেদনশীল) এর জন্য সাধারণ মোড ম্যাপিং ;
  • :help g8- এর জন্য সাধারণ মোড ম্যাপিং g8;
  • :help v_o- ভিজ্যুয়াল মোড ম্যাপিং এর জন্য o; অন্যান্য মোডগুলি cকমান্ড-লাইন এবং iসন্নিবেশের জন্য;
  • :help CTRL-W- এর জন্য সাধারণ মোড ম্যাপিং <C-w>;
  • :help i_CTRL-W- মোড ম্যাপিং forোকান জন্য <C-w>;
  • :help CTRL-W_CTRL-I- এর জন্য সাধারণ মোড ম্যাপিং <C-w><C-i>;
  • :help i_CTRL-G_<Down>- মোড ম্যাপিং এর জন্য sertোকান <C-g><Down>

1
এর একটি গুরুত্বপূর্ণ বিষয়: যে সাহায্যটি সর্বদা বাদ যায় বলে মনে হয় তাকে commandline completionসিটিআরএল-ডি ব্যবহার করে ভিআইএম সাহায্যে ডাকা হয় (আমি এটিকে "সহায়তায় অনুসন্ধান" বলি)। টাইপ করুন :h CTRL-W<সিটিআরএল - টি> টিপুন এবং আপনি "CTRL-W" স্ট্রিং সহ সমস্ত কমান্ডের একটি তালিকা পাবেন, যেমন CTRL-W, CTRL-W_^, CTRL-W-<Down>, ...,। টাইপ করুন :h g8<CTRL-D>এবং আপনি দেখতে পাবেন g8এবং 8g8উপলভ্য সহায়তার বিষয় হিসাবে। এটি ব্যতীত আপনাকে সহায়তা বিষয়টি হুবহু টাইপ করতে হবে এবং সঠিক স্ট্রিংটি কার্যকর করতে হবে যা কার্যকর finding
JESii

9

এটি ভিম সহায়তা ফাইলগুলিতে রয়েছে :help index

কোন কীগুলি ডিফল্টরূপে ম্যাপ করা হয়নি তা যদি আপনি জানতে চান তবে দেখুন :help map-which-keys

দ্রষ্টব্য: উপরেরগুলি সর্বশেষতম ভিএম রেফারেন্স ম্যানুয়ালটিতে ক্লিকযোগ্য লিঙ্কসমূহ


1

আমি মনে করি আপনি নিম্নলিখিত কমান্ডগুলির মাধ্যমে ম্যাপিংগুলি পেতে পারেন

:nmap - Mapping on normal mode
:cmap - Mapping on command mode
:vmap - Mapping on visual mode

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


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