Tim*_*ske 6 scripting vim keyboard-shortcuts key-mapping
有没有一种简单的方法可以在不丢失当前命令行的情况下从一种命令类型模式切换到另一种模式?
在我的~/.vimrc文件中,我将来自的<space>和<c-space>字符重新映射到:
完成上述行为的代码是:
function! s:ModMapSpaceChar()
noremap <unique> <space> :
map <unique> <nul> <c-space>
map! <unique> <nul> <c-space>
noremap <unique> <c-space> /
inoremap <unique> <c-space> <c-o>:
cnoremap <unique> <c-space> <c-\>eg:ToggleCmdTypes()<cr><c-c>@"
let g:CmdTypes={':' : '/', '/' : '?', '?': ':'}
function! g:ToggleCmdTypes()
let a=getcmdtype()
let b=get(g:CmdTypes, a, a)
let c=getcmdline()
let @"=b . c
return ''
endfunction
endfunction
call s:ModMapSpaceChar()
Run Code Online (Sandbox Code Playgroud)
在我的方法中困扰我的是不纯的函数g:ToggleCmdTypes。理想情况下,它应该返回它当前分配给"寄存器的命令。然后将执行生成的命令。
您也可以使用feedkeys()此方法,而不是绕过寄存器,以避免破坏寄存器。这唯一的缺点是当作为宏录制和重放时它不起作用。
总的来说,我建议重新考虑你的总体方法;我不明白切换这样的命令行模式有什么用。谁开始搜索只是在中途意识到他希望将其作为命令执行?!
| 归档时间: |
|
| 查看次数: |
538 次 |
| 最近记录: |