اجعل عملية إكمال Vim تشبه إلى حد كبير Visual Studio

StackOverflow https://stackoverflow.com/questions/514967

  •  21-08-2019
  •  | 
  •  

سؤال

أريد همةقائمة الإكمال لتعمل بشكل أشبه بتلك الموجودة في Visual Studio.أريد أن أكون قادرًا على كتابة بداية متغير (أو أي شيء يتوفر إكماله)، واضغط على مفاتيح الإكمال الشامل واحصل على قائمة الإكمال.الآن أريد أن تقوم قائمة الإكمال بتسليط الضوء على أفضل تطابق ولكن لا تضيفه إلى المخزن المؤقت.الآن أريد أن أكون قادرًا إما على الضغط على ENTER لإدخال العنصر المحدد أو إدخال المزيد من الأحرف لتصفية قائمة الإكمال بشكل أكبر (ربما تسليط الضوء على عنصر جديد في قائمة الإكمال) ثم الضغط على Enter للإدراج.

صفحة الويكي/نصائح في http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE من المفترض أن أفعل هذا ولكن لا أستطيع تشغيله.هل قام شخص آخر بتجربة الكود من تلك النصيحة وجعله يعمل كما وصفته؟

هل كانت مفيدة؟

المحلول

تحتوي صفحة wiki المشار إليها على تعيينات معطلة.قام مستخدم (Spiiph) بتغيير رمز Vim إلى شيء يبدو أفضل بالنسبة له، لكنه لم يكن صحيحًا.لقد عكست التغييرات التي أجراها والآن com.inoremap يجب أن تعمل التصريحات.

لتجنب الالتباس، هذه هي الأوامر الصحيحة لـ IMHO:

inoremap <expr> <c-n> pumvisible() ? "\<lt>c-n>" : "\<lt>c-n>\<lt>c-r>=pumvisible() ? \"\\<lt>down>\" : \"\"\<lt>cr>"
inoremap <expr> <m-;> pumvisible() ? "\<lt>c-n>" : "\<lt>c-x>\<lt>c-o>\<lt>c-n>\<lt>c-p>\<lt>c-r>=pumvisible() ? \"\\<lt>down>\" : \"\"\<lt>cr>"

ملاحظة:عندما يتعلق الأمر باستخدام ميزة الإكمال في Vim، وجدت ملف البرنامج النصي SuperTabمريحة جدا.ربما يكون هذا البرنامج النصي مثيرًا للاهتمام بالنسبة لك أيضًا في هذا السياق...

نصائح أخرى

أستخدم supertab، وهو ما يعجبني حقًا، ويبدو أن ما يلي يعمل بشكل رائع:

imap <expr> <Tab> pumvisible() ? "<Tab>" : "<Tab><Down>"

كمرجع:أنا أقوم بتشغيل debian sid، وهذا يعمل مع vim 7.2.245 ومع 7.2.259 المصحح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top