Как выбрать первый элемент во всплывающем меню и закрыть меню одной клавишей для автозаполнения в nvim?
Я использую coc.nvim для автозаполнения, и когда появляется всплывающее меню, я бы хотел, чтобы Tab выбрал первый элемент и закрывал меню. На данный момент я привязал Tab к<C-n><CR>
, но <CR>
фактически помещает строку return, чего я не хочу.
inoremap <expr> <Tab> pumvisible() ? "\<C-n><Space>" : "<Tab>"
3 ответа
После столь долгой борьбы и попыток этих вещей я понял, что коробка отлично работает.
Чтобы выбрать первый элемент в раскрывающемся списке, нажмите:ctrl+y
.
Нажимать:ctrl+n
выберите следующий элемент в раскрывающемся списке.
Нажимать:ctrl+p
для выбора предыдущего элемента в раскрывающемся списке.
Чтобы использовать иshift tab
а также для перехода к следующему и предыдущему элементам см. документацию .
Использоватьtab
чтобы выбрать первый элемент в раскрывающемся списке под приведенной выше конфигурацией документации:
inoremap <expr> <TAB> pumvisible() ? "\<C-y>" : "\<C-g>u\<TAB>"
Я нашел ответ в примерах документов coc.nvim:
https://github.com/neoclide/coc.nvim/blob/e1a4ce4d95d1d89b6dd31019cc4387425aa09b86/doc/coc.txt
inoremap <silent><expr> <TAB>
\ pumvisible() ? coc#_select_confirm() :
\ coc#expandableOrJumpable() ?
\ "\<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\<CR>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
let g:coc_snippet_next = '<tab>'
Работает как абсолютное очарование.
Пытаться inoremap <expr> <Tab> pumvisible() ? coc#_select_confirm() : "<Tab>"
.