Add vim command line mapping Ref #42 #66.
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	modified:   KeyMapping.vim
	new file:   ../../Keymapping.vim

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   ../Base.vim
	modified:   DrawCommandline.vim
	modified:   ../../../../../../example/incsearch.vim
	modified:   ../../../../../../example/simple.vim

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	../../../Over.vim
	ExecuteFailedMessage.vim
	HighlightBufferCursor.vim
	../../../../../../doc/tags-ja
	../../../../../../example/mapping.vim
	../../../../../../example/mapping_dict.vim
	../../../../../../test_over/

diff --git a/autoload/vital/__latest__/Over/Commandline/Modules/KeyMapping.vim b/autoload/vital/__latest__/Over/Commandline/Modules/KeyMapping.vim
index 9119286..3a2c902 100644
--- a/autoload/vital/__latest__/Over/Commandline/Modules/KeyMapping.vim
+++ b/autoload/vital/__latest__/Over/Commandline/Modules/KeyMapping.vim
@@ -2,6 +2,19 @@ scriptencoding utf-8
 let s:save_cpo = &cpo
 set cpo&vim

+
+function! s:_vital_loaded(V)
+	let s:Keymapping = a:V.import("Over.Keymapping")
+endfunction
+
+
+function! s:_vital_depends()
+	return [
+\		"Over.Keymapping",
+\	]
+endfunction
+
+
 let s:emacs = {
 \	"name" : "KeyMapping_emacs_like"
 \}
@@ -67,6 +80,38 @@ function! s:make_emacs()
 endfunction

+let s:vim_cmdline_mapping = {
+\	"name" : "KeyMapping_vim_cmdline_mapping"
+\}
+
+function! s:_auto_cmap()
+	let cmaps = {}
+	let cmap_info = s:Keymapping.cmap_rhss(0, 1)
+	" vital-over currently doesn't support <expr> nor <buffer> mappings
+	for c in filter(cmap_info, "v:val['expr'] ==# 0 && v:val['buffer'] ==# 0")
+		let cmaps[s:Keymapping.escape_key(c['lhs'])] = {
+		\   'noremap' : c['noremap'],
+		\   'key' : s:Keymapping.escape_key(c['rhs']),
+		\ }
+	endfor
+	return cmaps
+endfunction
+
+
+function! s:vim_cmdline_mapping.on_enter(cmdline)
+	let self._cmaps = s:_auto_cmap()
+endfunction
+
+
+function! s:vim_cmdline_mapping.keymapping(cmdline)
+	return self._cmaps
+endfunction
+
+function! s:make_vim_cmdline_mapping()
+	return deepcopy(s:vim_cmdline_mapping)
+endfunction
+
+

 let &cpo = s:save_cpo
 unlet s:save_cpo
diff --git a/autoload/vital/__latest__/Over/Keymapping.vim b/autoload/vital/__latest__/Over/Keymapping.vim
new file mode 100644
index 0000000..ae0a720
--- /dev/null
+++ b/autoload/vital/__latest__/Over/Keymapping.vim
@@ -0,0 +1,55 @@
+scriptencoding utf-8
+let s:save_cpo = &cpo
+set cpo&vim
+
+
+function! s:capture(cmd)
+	let verbose_save = &verbose
+	let &verbose = 0
+	try
+		redir => result
+		execute "silent!" a:cmd
+		redir END
+	finally
+		let &verbose = verbose_save
+	endtry
+	return result
+endfunction
+
+
+function! s:escape_key(key)
+	execute 'let result = "' . substitute(escape(a:key, '\'), '\(<.\{-}>\)', '\\\1', 'g') . '"'
+	return result
+endfunction
+
+
+function! s:parse_mapping_lhs(map, mode)
+	return matchstr(a:map, a:mode . '\s\+\zs\S\{-}\ze\s\+')
+endfunction
+
+
+function! s:lhss(mode)
+	let maps = s:capture(a:mode . "map")
+	return filter(map(split(maps, "\n"), "s:parse_mapping_lhs(v:val, a:mode)"), 'v:val =~ ''\S\+''')
+endfunction
+
+
+function! s:rhss(mode, ...)
+	let abbr = get(a:, 1, 0)
+	let dict = get(a:, 2, 0)
+	return map(s:lhss(a:mode), "maparg(v:val, a:mode, abbr, dict)")
+endfunction
+
+
+function! s:cmap_lhss()
+	return s:lhss("c")
+endfunction
+
+
+function! s:cmap_rhss(...)
+	return call("s:rhss", ["c"] + a:000)
+endfunction
+
+
+let &cpo = s:save_cpo
+unlet s:save_cpo