Vim에서 프로그래밍 할 때 종종 Ctrl-N -
이 키워드의 일부인 것처럼 동작하기를 원합니다 . 즉,에 포함 시키십시오 iskeyword
. 그러나 이것을 위해 새로운 키 매핑을 만들고 Ctrl-N을 사용하여 기존 동작을 유지하고 싶습니다.
나는 이것을 시도했다 :
inoremap <C-B> <C-O>:set iskeyword+=-<CR><C-N>
… 어떤 종류의 작품이지만 iskeyword 옵션에는 -
이후에 추가 동작이 포함되며 이는 바람직한 동작이 아닙니다.
이것은 또한 일종의 작품입니다.
inoremap <C-B> <C-O>:set iskeyword+=-<CR><C-N><C-O>:set iskeyword-=-<CR>
…하지만 팝업 메뉴가에 의해 종료됩니다 <C-O>
.
케이크를 먹고 먹을 수있는 방법이 있습니까? 팝업 메뉴가 나타나고 그대로 유지되고 iskeyword
나중에 원래 상태로 다시 설정 되었습니까?
또는이 문제를 해결하는 다른 방법이 있습니까?
답변
이것은 작동하는 것 같습니다.
function! CustomComplete(type)
set iskeyword+=-
return a:type
endfunction
inoremap <expr> <C-B> CustomComplete("<C-N>")
autocmd CompleteDone * set iskeyword-=-
우리는 표현식 매핑을 사용하여 실행할 iskeyword
때마다 설정하는 함수를 실행합니다 (문제가 아닌 것 같습니다. 또한 완료가 완료되기 전에 autocmd를 찾지 못했습니다.) 함수의 반환 값은 다음과 같이 사용됩니다. 매핑의 대체 이 경우 <C-N>
행동 을 원했습니다 . 그런 다음 -
set iskeyword에서 set 을 제거하기 위해 CompleteDone
ins-completion이 완료된 후 자동 완성을 사용합니다 .
또한 두 매핑을 모두 시도했지만 첫 번째 매핑 <C-O>
은 완료 창을 죽이기 때문에 예상대로 작동하지 않습니다 .