在 vim 中添加空格的缩写

在 vim 中添加空格的缩写

我尝试在 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()

这虽然不是完美的,但可以改进。

相关内容