Vim の input() でキャンセル(<Esc>)されたか判定する
Vim の input()
でキャンセル(<Esc>
)されたか判定出来ないかぐぐってたら以下のようなワークアラウンドがあったので覚書。
" see: https://github.com/vim-jp/issues/issues/467#issuecomment-23766972 scriptencoding utf-8 function! s:input(...) abort new cmap <buffer> <esc> __CANCELED__<cr> let ret = call('input', a:000) bw! redraw if ret =~ '__CANCELED__$' throw "キャンセルされました" endif return ret endfunction echo s:input("foo:")
この発想はなかった。