завершение слов vim с помощью 'j' и 'k' - PullRequest
10 голосов
/ 25 октября 2010

В vim я использую Ctrl-n для завершения слов в режиме вставки. Если существует более одного возможного совпадения, я получаю выпадающий список, из которого я могу выбрать одно из возможных совпадений с помощью клавиш со стрелками.

Однако я не хочу использовать клавиши со стрелками; Я хочу использовать клавиши «j» и «k». Но когда я набираю 'j' или 'k', он вставляет буквы вместо того, чтобы идти вверх или вниз в раскрывающемся списке. Есть ли способ, которым я могу настроить vim так, как я хочу?

Ответы [ 3 ]

16 голосов
/ 25 октября 2010

См. :hpopupmenu-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 к этому ответу.)

8 голосов
/ 25 октября 2010

Я не знаю, как это сделать с помощью j и k.Вы находитесь в режиме вставки, они не работают.

Но у меня есть другой способ для вас: Ctrl + N работает так же, как Tab, иВы можете использовать Shift - Tab , чтобы перейти вниз по списку и Tab, чтобы подняться.Это проще, чем с помощью клавиш со стрелками.Но не так хорошо, как j и k.

Или вы можете просто использовать Ctrl + N и Ctrl + P

0 голосов
/ 15 марта 2012

SuperTab (http://www.vim.org/scripts/script.php?script_id=1643) может помочь вам. После установки вы можете использовать Tab и Tab-Shift для навигации по всплывающему меню.

См. Также этот документ: http://vim.wikia.com/wiki/Omni_completion_popup_menu

...