Заставьте Vim завершить работу, как в Visual Studio - PullRequest
2 голосов
/ 05 февраля 2009

Я хочу, чтобы меню завершения Vim работало больше, чем в Visual Studio. Я хочу иметь возможность написать начало переменной (или что-то, что завершение доступно), нажать клавиши завершения омни и получить меню завершения. Теперь я хочу, чтобы меню завершения выделило лучшее совпадение, но не добавляло его в буфер. Теперь я хочу иметь возможность либо нажать ENTER, чтобы ввести выбранный элемент, либо ввести больше букв, чтобы еще больше отфильтровать меню завершения (возможно, выделив новый элемент в меню завершения), а затем нажать Enter, чтобы вставить.

Вики-страница / tips http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE должна делать это, но я не могу заставить ее работать. Кто-то еще пробовал код из этого совета и заставил его работать, как я описываю?

Ответы [ 2 ]

5 голосов
/ 05 февраля 2009

Ссылочная вики-страница содержала неработающие сопоставления. Пользователь (Spiiph) изменил код Vim на что-то, что выглядело лучше для него, но было неправильно. Я отменил сделанные им изменения, и теперь операторы inoremap должны работать.

Чтобы избежать путаницы, это ИМХО правильные команды:

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>"

PS: когда дело доходит до использования функции завершения Vim, я обнаружил скрипт SuperTab очень удобно. Может быть, этот сценарий также интересен для вас в этом контексте ...

0 голосов
/ 21 сентября 2009

Я использую supertab, который мне действительно нравится, и, кажется, следующее прекрасно работает:

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

Для справки: я использую sid Debian, и это работает как для vim 7.2.245, так и для моего исправленного 7.2.259.

...