我尝试在 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()
这虽然不是完美的,但可以改进。