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

是否可以在VIM中修改ctrl-o行为?,vim,keyboard-shortcuts,Vim,Keyboard Shortcuts,我正在使用minibufexplorer插件和VIM,它在我的窗口顶部显示缓冲区。默认情况下,使用jumplist按Ctrl+O键向后跳转会在单独的缓冲区中打开文件,因此在多次跳转后,显示的缓冲区计数会变得非常大。是否可以修改Ctrl+O行为,以便打开新的缓冲区并关闭上一个缓冲区?我试图用vimscript对其进行编程,但没有找到任何与jumplist交互的API。如果我用自己的函数替换Ctrl+O,我不知道如何调用原始实现来执行实际的跳转:。有什么帮助吗?您可以使用:正常!调用原始实现,如下所

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

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

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>