zsh や bash では,コマンドラインで文字入力中は <C-d>
でカーソル右の文字を削除(Emacs と同じ)し,コマンドラインが空の時は EOF を送ってシェルを終了させます.
普段 <C-d>
でシェルを終了させているので,VimShell でも同じことが設定したくなりました.
autocmd FileType vimshell imap
\ <buffer><silent><expr><C-d>
\ vimshell#get_cur_text()=='' ? "\<Esc>\<Plug>(vimshell_exit)" : "\<Del>"
get_cur_text()
で入力中の文字列を取得し,何も入力されていなければ VimShell を終了,そうでなければ <Del>
を入力します.