Shougo/vimshell.vim

vimshell でコマンドを実行した後に Vim が操作不能になる

Closed this issue · 2 comments

以下のように『特定のコマンドを実行した後に insert mode を抜ける』みたいな設定をしてる場合に Vim が操作不能になります。

再現 vimrc

if has('vim_starting')
    set nocompatible
endif

set runtimepath+=~/vim/runtime/bundle/neobundle.vim
call neobundle#begin(expand($HOME."/neobundle"))

NeoBundle "Shougo/vimproc.vim", {
\ 'build' : {
\     'windows' : 'make -f make_mingw32.mak',
\     'cygwin' : 'make -f make_cygwin.mak',
\     'mac' : 'make -f make_mac.mak',
\     'unix' : 'make -f make_unix.mak',
\    },
\ }
NeoBundle "Shougo/vimshell.vim"

call neobundle#end()
filetype plugin indent on

let g:vimshell_interactive_update_time = 0

" ls 実行後に insert mode を抜ける
function! LeaveInsert_in_vimshell(args, context)
    if a:args =~ '\%(^ls\)'
        call feedkeys("\<Esc>", "n")
    endif
endfunction

autocmd FileType vimshell
\       call vimshell#hook#add('preexec', 'leave_insert', "LeaveInsert_in_vimshell")

再現手順

  1. Vim を起動
  2. :VimShell を実行
  3. ls を実行

環境

  • Vim 7.4.2033

Fixed.

こちらでも動作することを確認しました。ありがとうございます。