是否可以在VIM中修改ctrl-o行为?

时间:2013-07-13 10:32:10

标签: vim keyboard-shortcuts shortcut-key

我在VIM上使用minibufexplorer插件,在我的窗口顶部显示缓冲区。默认 Ctrl + O (使用跳转列表跳回)在单独的缓冲区中打开文件,因此在显示多次跳转后缓冲区计数会变得非常大。是否可以修改 Ctrl + O 行为,以便打开新缓冲区并关闭前一个缓冲区?我试图用vimscript编程,但没有找到任何与跳转列表交互的API。如果我用我自己的函数替换 Ctrl + O 我不知道如何调用原始实现来做实际的跳转:(。有什么帮助?

1 个答案:

答案 0 :(得分:3)

您可以使用:normal!来调用原始实现,如下所示:

function s:CtrlO(count1)
    let buf=bufnr('%')
    execute 'normal!' a:count1 "\<C-o>"
    if bufnr('%')!=buf
        execute 'bwipeout' buf
    endif
endfunction
nnoremap <silent> <C-o> :<C-u>call <SID>CtrlO(v:count1)<CR>