我正在使用vim-airline插件,它工作得很好,但是,在选项卡之间切换的唯一方法是用户:bp or :bn
,它是:bprevious or :bnext
. 这样做的问题是,如果我在第一个选项卡上并且想要切换到最后一个选项卡,即第 10 个选项卡,那么我必须输入:bn
十次才能到达那里。如何直接切换?也许一些紧迫的事情arrow keys
会有所帮助。
6 回答
您的问题是您安装了一个插件,旨在混淆 Vim 的常规命令和工作流程,甚至不知道这些常规方式。你走的捷径把你带到了死胡同,所以你唯一合理的解决方案是回到主路并正确学习 Vim,而不需要辅助轮和拐杖。
所以......从你的问题来看,你似乎正在使用航空公司所谓的“smarter tabline”,它在一个假的 tabline中显示你的打开缓冲区。
如果它是一个真正的标签行,它们实际上就是标签页,您可以使用它们自己的一组命令在它们之间移动。
但是它们是缓冲区,是的,您应该使用以下命令在它们之间移动:
:bnext
:bprevious
:bfirst
:blast
:b10
:b <buffer-name>
当然,为了您的方便,所有这些都可以映射。
但是……那个插件不显示缓冲区编号,所以你不能:b10
可靠地跳转到你的假“表格”中的第十个缓冲区,这样你的工具带中就少了一个工具。
并且一些特殊的缓冲区,比如 quickfix 列表,可以通过:bn
/:bn
不 - 可能 - 被列在你的假“tabline”中,这使得你的假“tabline”成为一个相当差的抽象,即使不考虑标签的明显限制。 .
当您实际使用标签页时,该假“标签”的特殊行为会变成半真实的“标签”。
将两个非常不同且以自己的方式强大的概念混为一个混杂的概念并不是一个好主意。
我建议您禁用该选项并使用缓冲区和标签页,因为它们应该被使用。
参考:
:help buffers
:help tab-page
同意@romainl,但您始终可以将您的 +tab 映射到 :bn 或 :bp 以方便您。
" Tab navigation like Firefox.
nnoremap <C-S-tab> :bprevious<CR>
nnoremap <C-tab> :bnext<CR>
除了 Rafi 的回答之外,将它放在您的 .vimrc 中以直接访问缓冲区/航空公司选项卡。
nmap <leader>1 :bfirst<CR>
nmap <leader>2 :bfirst<CR>:bn<CR>
nmap <leader>3 :bfirst<CR>:2bn<CR>
nmap <leader>4 :bfirst<CR>:3bn<CR>
...
或者,您可以加倍购买航空公司
let g:airline#extensions#tabline#buffer_idx_mode = 1
nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
如果您使用的是vim-airline,我强烈建议您使用AirlineSelectTab
命令,您可以通过 看到它:help airline
,下面是配置。
let g:airline#extensions#tabline#buffer_idx_mode = 1
nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9
nmap <leader>0 <Plug>AirlineSelectTab0
nmap <leader>- <Plug>AirlineSelectPrevTab
nmap <leader>+ <Plug>AirlineSelectNextTab
如果您使用制表符而不是缓冲区
" Tab navigation (works only in gvim, not in console)
nnoremap <C-tab> gt
nnoremap <C-S-tab> gT
我已将 vim 配置为使用Ctrl+ 箭头键在选项卡之间切换。
Ctrl+←</kbd> will switch to tab that is on the left of current tab.
Ctrl+→</kbd> will switch to tab that is on the right of current tab.
Ctrl+↑</kbd> will switch to first tab.
Ctrl+↓</kbd> will switch to last tab.
要实现上述行为,请使用以下几行更新您的 vimrc:
nnoremap <C-Left> :tabprevious<CR>
nnoremap <C-Right> :tabnext<CR>
nnoremap <C-Up> :tabfirst<CR>
nnoremap <C-Down> :tablast<CR>
这也适用于 vim-airline 插件。
参考:使用 vim 标签页