vim에 공백에 대한 약어 추가

vim에 공백에 대한 약어 추가

vim에 다음 약어를 추가하려고 하는데 작동하지 않습니다.

    noreabbrev <space><space>  .<space>

대부분의 최신 휴대폰 키패드와 같습니다.

그럼 누군가 내가 여기서 뭘 잘못하고 있는지, 어떻게 작동하게 할 수 있는지 말해 줄 수 있나요??

답변1

약어에는 full-id, end-id, non-id의 ​​세 가지 유형이 있으며 각각 허용되는 문자 집합에 대한 특정 조건이 있습니다. 보다 :help abbreviations. 두 개의 공백은 어느 것에도 허용되지 않습니다.

:inoremap(첫 번째 공백 문자가 버퍼에 나타날 때 피할 수 없는 지연을 감수해야 함) 을 사용하거나 :inoremap <expr> <Space>이전 문자를 확인한 다음 마법을 수행하는 컴플렉스를 구축해야 합니다.

답변2

나는 이것을 빨리 해킹했습니다. 이름이 무엇이든 파일에 넣고 InsertSpace.vimvimrc에서 소스를 얻거나 ~/.vim/plugin/( ~\vimfiles\pluginWindows의 경우)에 넣습니다.

function! s:InsertSpace()
    if getline('.')[col('.')-3:col('.')-2] =~ '[^. ]\s$'
        return "\<bs>. "
    else
        return ' '
    endif
endfunction

inoremap <expr> <space> <SID>InsertSpace()

완벽하지는 않지만 개선할 수는 있습니다.

관련 정보