質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.65%

vimにて入力モードから抜けるに時間が掛かる。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 378

yuki_90453

score 189

いつもお世話になっております。

抱えている問題

vimにて入力モードから抜けるに1~2秒掛かってしまいます。

具体的には、文字入力後、ESCキーを押し:wなどコマンドを入力すると、「:」が文字入力された後に入力モードから抜けてしまいます。
このようにESCキーの後に入力した文字やコマンドが、ESCより先に入力されてしまい困っています。

スペックは一般的なPCなので問題ないと思いますが、恐らく設定ファイルに問題があると思います。
怪しいぶぶんがあればご指摘頂けないでしょうか?

設定ファイル

" dein settings {{{
" dein自体の自動インストール
let s:cache_home = empty($XDG_CACHE_HOME) ? expand('~/.vim') : $XDG_CACHE_HOME
let s:dein_dir = s:cache_home . '/dein'
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
if !isdirectory(s:dein_repo_dir)
  call system('git clone https://github.com/Shougo/dein.vim ' . shellescape(s:dein_repo_dir))
endif
let &runtimepath = s:dein_repo_dir .",". &runtimepath
" プラグイン読み込み&キャッシュ作成
let s:toml_file = fnamemodify(expand('<sfile>'), ':h').'/.dein.toml'
if dein#load_state(s:dein_dir)
  call dein#begin(s:dein_dir, [$MYVIMRC, s:toml_file])
  call dein#load_toml(s:toml_file)
  call dein#end()
  call dein#save_state()
endif
" 不足プラグインの自動インストール
if has('vim_starting') && dein#check_install()
  call dein#install()
endif
" }}}

"-----------------------------------------------------------------------
"Qfixhowm キーマップリーダー
"-----------------------------------------------------------------------
" let QFixHowm_Key = 'g'
"
" " howm_dirはファイルを保存したいディレクトリを設定
" let howm_dir             = '~/Documents/memo'
" let howm_filename        = '%Y/%m/%Y-%m-%d-%H%M%S.txt'
" let howm_fileencoding    = 'utf-8'
" let howm_fileformat      = 'unix'
"
" " 個人的には以下を追加設定しておくのをおすすめします。
" " キーコードやマッピングされたキー列が完了するのを待つ時間(ミリ秒)
" set timeout timeoutlen=3000 ttimeoutlen=100
" " プレビューや絞り込みをQuickFix/ロケーションリストの両方で有効化(デフォルト:2)
" let QFixWin_EnableMode = 1

"-----------------------------------------------------------------------
"複数カーソル
"-----------------------------------------------------------------------
" nnoremap <C-e> :MultipleCursorsFind

"-----------------------------------------------------------------------
" quickrun.vim
"-----------------------------------------------------------------------

nnoremap qr :QuickRun<CR> 
" <C-c> で実行を強制終了させる
" quickrun.vim が実行していない場合には <C-c> を呼び出す
nnoremap <expr><silent> <C-c> quickrun#is_running() ? quickrun#sweep_sessions() : "\<C-c>"
let g:quickrun_config = {
\   "_" : {
\       "runner" : "job",
\       "runner/vimproc/updatetime" : 60,
\             "outputter/error/success" : "buffer",
\           "outputter/buffer/split" : ":botright 8sp",
\            "outputter/buffer/running_mark" : "バン(∩`・ω・)バンバンバンバン゙ン",
\                "hook/time/enable" : 1,
\   },
\}


"-----------------------------------------------------------------------
" NERDTreeを起動
"-----------------------------------------------------------------------
" let file_name = expand('%')
" if has('vim_starting') &&  file_name == ''
"   autocmd VimEnter * NERDTree ./
" endif
" " サイドバー表示/非表示
" " nnoremap kb :NERDTreeToggle<CR> 
" "横幅
" let g:NERDTreeWinSize = 20


" クリップボード有効化
set clipboard+=unnamed
set clipboard+=autoselect

set vb t_vb= "音を出さないようにする

" 行番号表示
set number
syntax on

" オートセーブ オン
let g:auto_save = 1
let g:auto_save_in_insert_mode = 0
let g:auto_save_silent = 1

" アンドゥの永久化
set undodir=$HOME/Vim/dotfiles
set backupdir=$HOME/Vim/dotfiles
set undofile

"折り返し
set wrap
set linebreak
set breakindent

"インデント
set shiftwidth=22


" vimを立ち上げたときに、自動的にvim-indent-guidesをオンにする
" let g:indent_guides_enable_on_vim_startup = 1
set list listchars=tab:\¦\ 

"-----------------------------------------------------------------------
" インデント関係
"-----------------------------------------------------------------------
" 改行時に前の行のインデントを継続する
set autoindent
" 改行時に入力された行の末尾に合わせて次の行のインデントを増減する
set smartindent
" タブ文字の表示幅
set tabstop=1
" Vimが挿入するインデントの幅
set shiftwidth=1
" 行頭の余白内で Tab を打ち込むと、'shiftwidth' の数だけインデントする
set smarttab

"-----------------------------------------------------------------------
" vimgrep
"-----------------------------------------------------------------------
nnoremap [q :cprevious<CR>   " 前へ
nnoremap ]q :cnext<CR>       " 次へ
nnoremap [Q :<C-u>cfirst<CR> " 最初へ
nnoremap ]Q :<C-u>clast<CR>  " 最後へ


" Anywhere SID.
function! s:SID_PREFIX()
  return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSID_PREFIX$')
endfunction

" Set tabline.
function! s:my_tabline()  "{{{
  let s = ''
  for i in range(1, tabpagenr('$'))
    let bufnrs = tabpagebuflist(i)
    let bufnr = bufnrs[tabpagewinnr(i) - 1]  " first window, first appears
    let no = i  " display 0-origin tabpagenr.
    let mod = getbufvar(bufnr, '&modified') ? '!' : ' '
    let title = fnamemodify(bufname(bufnr), ':t')
    let title = '[' . title . ']'
    let s .= '%'.i.'T'
    let s .= '%#' . (i == tabpagenr() ? 'TabLineSel' : 'TabLine') . '#'
    let s .= no . ':' . title
    let s .= mod
    let s .= '%#TabLineFill# '
  endfor
  let s .= '%#TabLineFill#%T%=%#TabLine#'
  return s
endfunction "}}}
let &tabline = '%!'. s:SID_PREFIX() . 'my_tabline()'
set showtabline=2 " 常にタブラインを表示

" The prefix key.
nnoremap    [Tag]   <Nop>
nmap    t [Tag]
" Tab jump
for n in range(1, 9)
  execute 'nnoremap <silent> [Tag]'.n  ':<C-u>tabnext'.n.'<CR>'
endfor
" t1 で1番左のタブ、t2 で1番左から2番目のタブにジャンプ

map <silent> [Tag]c :tablast <bar> tabnew<CR>
" tc 新しいタブを一番右に作る
map <silent> [Tag]x :tabclose<CR>
" tx タブを閉じる
map <silent> [Tag]n :tabnext<CR>
" tn 次のタブ
map <silent> [Tag]p :tabprevious<CR>
" tp 前のタブ


if has('mac')
  if has('gui_running')
    let IM_CtrlMode = 4
  else
    let IM_CtrlMode = 1

    function! IMCtrl(cmd)
      let cmd = a:cmd
      if cmd == 'On'
        let res = system('osascript -e "tell application \"System Events\" to keystroke (key code {104})" > /dev/null 2>&1')
      elseif cmd == 'Off'
        let res = system('osascript -e "tell application \"System Events\" to keystroke (key code {102})" > /dev/null 2>&1')
      elseif cmd == 'Toggle'
        let res = system('osascript -e "tell application \"System Events\" to keystroke (key code {55, 49})" > /dev/null 2>&1')
      endif
      return ''
    endfunction
  endif

  " 「日本語入力固定モード」のMacVimKaoriya対策を無効化
  let IM_CtrlMacVimKaoriya = 0
  " ctrl+jで日本語入力固定モードをOnOff
  inoremap <silent> <C-j> <C-^><C-r>=IMState('FixMode')<CR>
endif

"Rubyのファイルを開いたら自動でファイルタイプの設定
au BufNewFile,BufRead *.rb set filetype=ruby
"-----------------------------------------------------------------------
" vim 見た目
"-----------------------------------------------------------------------

" Emmet
let g:user_emmet_leader_key = '<C-e>'
set backspace=indent,eol,start
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

ESCから始まるキーマップが入力モードで定義されているのでは?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.65%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る