InsisVim
InsisVim copied to clipboard
Q&A: s_tab 与 bufferline 的区别是什么?
注意到配置里的s_tab 部分默认是关闭的,想了解一下它与bufferline的功能是否冲突?
我现在自己配置的Neovim中完全取消了bufferline, 仅用rebelot/heirline.nvim在winbar中显示当前buffer的文件名,效果如下:
应该是不冲突,tab 是 vim 自带的功能,只是定义了一系列快捷键,
因为我一般不用 Tab,所以设置默认关闭了
基本上buffer是表示已加载的文件,tab 是用来管理 window 的
我补了一段文档 buffer window 和 tab 的关系的文档
https://github.com/nshen/InsisVim#buffers
@jonahfang 看起来美观不少
除了美观以外,还有使用习惯的改变,不使用bufferline后,你的关注点在当前文档,其他已经打开的buffer不会分散你的注意力(也就少了之前的要清理或关闭buffer的操作).通过Telescope buffers命令,可以随时查看当前打开的buffer并切换。如果要频繁切换最近两个buffer, 我则定义了下列key map:
vim.keymap.set('n', ',a', '<cmd>exe "normal! <c-^>"<cr>')
@nshen 谢谢🙏 指出buffer与tab的区别。我自己试了一下: 如果我split了左右两个window, 然后在左边load file A, 右边load file B 我发现无论我的focus是在哪边,我都可以在bufferline中自由选择A,B文件,达到的效果可能是,左右边两可以同时显示A.
与我平时理解不一样的一点在于:bufferline 不是tab, 也就是说,我的左右窗格的布局是唯一的。如果是tab, 不同的tab可能有不同的window布局。比如tab 1里只有一个window, tab 2 里面是两个水平split,tab 3是三个window.
buffer, window 这两个概念看起来与emacs是一样的,这里的window类似于tmux中的pane,neovim中的tab像是tmux中window的概念。 当然emacs中一般不用tab.
我个人是反对使用tab的.
@nshen 就像你图中画的,buffer是比window更底一层,而tab是window的容器
我只有一个tab, 每个tab中只有一个window,一个window中只可见一个buffer.
我之前习惯了VSCode的标签页,bufferline 把vim的buffers模拟成VSCode的标签页,使用上还是挺直观。 我经常左左左,右右右的切换标签。我还是选择保留这个习惯,未来切回VSCode也方便