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\plugin
Windows の場合) に配置します。
function! s:InsertSpace()
if getline('.')[col('.')-3:col('.')-2] =~ '[^. ]\s$'
return "\<bs>. "
else
return ' '
endif
endfunction
inoremap <expr> <space> <SID>InsertSpace()
完璧ではありませんが、改良することは可能です。