إكمال كلمة Vim يتنقل مع "J" و "K"
-
26-09-2019 - |
سؤال
في VIM ، أستخدم Ctrl-N للكلمة كاملة أثناء وجوده في وضع إدراج. إذا كان هناك أكثر من مباراة واحدة ممكنة ، أحصل على منسدلة يمكنني تحديد واحدة من المباريات المحتملة باستخدام مفاتيح الأسهم.
ومع ذلك ، لا أريد استخدام مفاتيح الأسهم ؛ أريد استخدام مفاتيح "J" و "K". ولكن عندما أكتب "J" أو "K" ، فإنه يدرج الحروف بدلاً من الصعود أو لأسفل في القائمة المنسدلة. هل هناك طريقة يمكنني من خلالها تكوين VIM للقيام بذلك بالطريقة التي أريدها؟
المحلول
يرى :h
popupmenu-keys
.
لا توجد مجموعة خاصة من التعيينات للوضع الفرعي للقائمة المنبثقة ، ولكن يمكنك عمل رسم خرائط للإدراج الشرطي:
inoremap <expr> j pumvisible() ? "\<C-N>" : "j"
inoremap <expr> k pumvisible() ? "\<C-P>" : "k"
هذا يجعل j
/k
انتقل إلى القائمة المنبثقة مثل <C-N>
/<C-P>
, ، في حين أنها مرئية.
إضافة: إذا كنت تريد أن تكون قادرًا على التمسك بالتحكم أثناء الكتابة j
و k
, ، يمكنك استبدالها بـ <C-J>
و <C-K>
, ، على التوالى. (انظر تعليق MWCZ على هذه الإجابة.)
نصائح أخرى
لا أعرف طريقة كيفية القيام بذلك مع J و K. أنت في وضع إدراج ، فهي لا تعمل.
لكن لدي طريقة أخرى لك ، كنترول+ن يعمل على شكل علامة التبويب ، ويمكنك استخدامه يحول-فاتورة غير مدفوعة للنزول في القائمة وعلامة التبويب للذهاب. إنه أسهل من استخدام مفاتيح الأسهم. ولكن ليس لطيفا مثل J و K سيكون.
أو يمكنك استخدام فقط كنترول+ن و كنترول+ص
قد تساعدك Supertab (http://www.vim.org/scripts/script.php؟script_id=1643). بمجرد التثبيت ، يمكنك استخدام علامة التبويب وعلامة التبويب للتنقل في القائمة المنبثقة.
انظر هذا المستند أيضًا: http://vim.wikia.com/wiki/omni_completion_popup_menu