どのモードでもマッピングが機能するようにVimコマンドラインを一貫して起動するにはどうすればよいですか?

どのモードでもマッピングが機能するようにVimコマンドラインを一貫して起動するにはどうすればよいですか?

実際のマッピングを簡単にするために、別のモードでVimコマンドラインモードへのアクセスを標準化しようとします。たとえば、<f6>キーをどこでも操作できるように、次のマッピングを定義しました。

noremap <script> <unique> <silent> <f6> <sid>:echomsg 'Hello World!'<cr>
noremap! <script> <unique> <silent> <f6> <sid>:echomsg 'Hello World!'<cr>

上記のマッピングは、<sid>:作業を開始する前に、以下に提供されるキーマッピングに再マップされます。

noremap <unique> <expr> <sid>: <sid>StartCmdLineMode()
noremap! <unique> <expr> <sid>: <sid>StartCmdLineMode()
function! s:StartCmdLineMode()
  let a=mode()
  if a ==# 'n' 
    return ':'
  " Type <c-v><c-v> to insert ^V. 
  elseif a =~ '[vV^V]'
    return ":\<c-u>"
  elseif a ==# 'no'
    return "\<c-c>:"
  elseif a ==# 'i' 
    return "\<c-o>:"
  elseif a ==# 'c' 
    let b=getcmdtype()
    if b ==# ':' 
      return "\<c-e>\<c-u>"
    else
      return "\<c-c>:"
    endif
  else
    return ''
  endif
endfunction

難読化されたメソッドを置き換える簡単な方法はありますか?

ベストアンサー1

次はいつ動作しませんか?

nnoremap <F6> <ESC><ESC>:command<CR>

おすすめ記事