vim용 coc와의 키 바인딩 충돌을 어떻게 해결합니까?

vim용 coc와의 키 바인딩 충돌을 어떻게 해결합니까?

서문처럼 저는 프로그래머는 아니지만 일을 자동화하기 위해 약간의 쉘을 작성했습니다.

이는 MacOS Mojave에 있지만 neovim의 구성이 그대로 유지되므로 큰 차이는 없습니다.

coc의 자동 완성 기능을 사용하려고 할 때 Enter 키를 누르면 자동 완성을 선택하는 대신 다음 줄로 돌아가는 것을 발견했습니다. 나는 그것이 vimwiki 또는 markdown과 관련이 있다고 의심했습니다. 나는 보았다이 스레드충돌하는 키 바인딩을 찾으려고 시도했는데 :verbose imap <cr>자동 완성을 시도한 후의 출력에서 ​​다음을 얻었습니다.

i  <CR>        &@<C-]><Esc>:VimwikiReturn 1 5<CR><SNR>38_AutoPairsReturn
        Last set from ~/.config/nvim/plugged/auto-pairs/plugin/auto-pairs.vim line 662
i  <CR>        * pumvisible() ? "\<C-Y>" : "\<CR>"
        Last set from ~/.config/nvim/init.vim line 225
Press ENTER or type command to continue

그래서 살펴보니 auto-pairs.vim다음과 같은 것을 발견했습니다.

execute 'inoremap <script> <buffer> <silent> <CR> .old_cr.'<SID>AutoPairsReturn'

다음에서 다시 매핑하는 것보다 우선시되는 것 같습니다 init.vim.

inoremap <expr><cr> pumvisible() ? "\<C-y>" : "\<CR>"

이 함수가 어디에 있는지 찾아보았 pumvisible()으나 정의를 찾을 수 없었습니다. 나는 그걸로 뭔가를 함으로써 자동 쌍 내의 바인딩을 멈출 수 있다고 생각했습니다. 그런 다음 init.vim. 그것은 실제로 아무것도 하지 않았고, 나는 and <cr>로 변경했지만 그것은 모든 상황에서 화살표 키가 Enter처럼 작동하도록 만드는 도미노 효과를 가졌습니다.<Space><Right>

이 충돌을 어떻게 해결할 수 있습니까? 플러그인 파일을 편집해야 한다면(vim-plug를 사용하고 있습니다) 어떻게 깔끔하게 편집할 수 있습니까(업데이트 시 중단되지 않도록)?

감사합니다. 필요한 경우 github에 전체 init.vim또는 전체 neovim 구성을 제공할 수 있습니다.

답변1

vimwiki의 탭 키 매핑이 내 coc.nvim 자동 완성과도 충돌했습니다. 이를 init.vim에 추가하세요.

au filetype vimwiki silent! iunmap <buffer> <Tab>

답변2

i COC 설정에 대한 매핑을 변경했습니다.

inoremap <silent> <expr> <C-End> pumvisible() ? coc#_select_confirm(): "<Cg>u<CR><cr>=coc#on_enter()<CR>"

이제 ctrl + end를 눌러 선택합니다.

관련 정보