vim でスペースの省略形を追加する

vim でスペースの省略形を追加する

vim に次の略語を追加しようとしていますが、機能しません。

    noreabbrev <space><space>  .<space>

最近のほとんどの携帯電話のキーパッドと同じです。

それで、誰か私がここで何を間違っているのか、そしてそれをどのように機能させるのか教えてもらえますか?

答え1

略語には、full-id、end-id、non-id の 3 種類があり、それぞれに許可される文字セットに関する特定の条件があります。を参照してください:help abbreviations。いずれの場合も、2 つのスペースは許可されません。

:inoremapを使用するか (最初のスペース文字がバッファーに表示されるまでの避けられない遅延を受け入れながら)、:inoremap <expr> <Space>前の文字をチェックしてその魔法を実行する複合体を構築する必要があります。

答え2

私はこれをすぐにハックしました。これを または という名前のファイルに入れてInsertSpace.vim、vimrc からソースするか、~/.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()

完璧ではありませんが、改良することは可能です。

関連情報