我真的很喜欢这个 vim 技巧,它使用向左和向右箭头在缓冲区之间切换:
"left/right arrows to switch buffers in normal mode
map <right> :bn<cr>
map <left> :bp<cr>
(把它放在 ~/.vimrc 中)
但有时我在滚动文件时正在咀嚼三明治或其他东西,我真的希望箭头键能够正常工作。 我认为只有当实际上打开了多个缓冲区时,箭头键才具有上述缓冲区翻转功能才最有意义。
有没有一种方法可以扩展上述内容来实现这一点?
最佳答案
我宁愿有一个完全不同的映射,因为:
- 游标真的很有用,因为你有一个隐藏的缓冲区而没有它们会让你很烦
- 一些插件使用
<left>
和<right>
因为它们比l
更容易混淆和h
;这些插件可能会破坏此类映射
无论如何,你可以试试这个:
nnoremap <expr> <right> (len(filter(range(0, bufnr('$')), 'buflisted(v:val)')) > 1 ? ":bn\<cr>" : "\<right>")
nnoremap <expr> <left> (len(filter(range(0, bufnr('$')), 'buflisted(v:val)')) > 1 ? ":bp\<cr>" : "\<left>")
要查看有关上述部分的文档:
:h :map-<expr>
:h len()
:h filter()
:h range()
:h bufnr()
:h buflisted()
关于vim - 两全其美 : arrow keys for cursor movement or flipping through buffers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2962125/