vim에 다음 약어를 추가하려고 하는데 작동하지 않습니다.
noreabbrev <space><space> .<space>
대부분의 최신 휴대폰 키패드와 같습니다.
그럼 누군가 내가 여기서 뭘 잘못하고 있는지, 어떻게 작동하게 할 수 있는지 말해 줄 수 있나요??
답변1
약어에는 full-id, end-id, non-id의 세 가지 유형이 있으며 각각 허용되는 문자 집합에 대한 특정 조건이 있습니다. 보다 :help abbreviations
. 두 개의 공백은 어느 것에도 허용되지 않습니다.
:inoremap
(첫 번째 공백 문자가 버퍼에 나타날 때 피할 수 없는 지연을 감수해야 함) 을 사용하거나 :inoremap <expr> <Space>
이전 문자를 확인한 다음 마법을 수행하는 컴플렉스를 구축해야 합니다.
답변2
나는 이것을 빨리 해킹했습니다. 이름이 무엇이든 파일에 넣고 InsertSpace.vim
vimrc에서 소스를 얻거나 ~/.vim/plugin/
( ~\vimfiles\plugin
Windows의 경우)에 넣습니다.
function! s:InsertSpace()
if getline('.')[col('.')-3:col('.')-2] =~ '[^. ]\s$'
return "\<bs>. "
else
return ' '
endif
endfunction
inoremap <expr> <space> <SID>InsertSpace()
완벽하지는 않지만 개선할 수는 있습니다.