使用vim-airline在vim中的选项卡之间切换

Om3*_*3ga 6 vim plugins vim-plugin vim-airline

我正在使用vim-airline插件工作得非常好,但是在标签之间切换的唯一方法是用户:bp or :bn,这是快捷方式:bprevious or :bnext.这个问题是,如果我在第一个选项卡上并想要切换到最后一个选项卡,即第10个选项卡,那么我必须键入:bn十次才能到达那里.我该如何直接切换?也许紧迫的事情arrow keys会有益.

rom*_*inl 12

您的问题是您安装了一个插件,旨在模糊Vim的常规命令和工作流,甚至知道这些常规方法.你所采取的捷径让你走向死胡同,所以你唯一合理的解决办法就是回到主干道,正确地学习Vim,而不需要训练轮子和拐杖.

所以......从您的问题来看,您似乎正在使用航空公司所谓的"更智能的标签",它在虚假的标签中显示您的开放缓冲区.

如果它是一个真正的tabline,它们实际上是标签页,你可以用它们自己的一组命令在它们之间移动.

但它们是缓冲区,是的,您应该使用以下命令在它们之间移动:

:bnext
:bprevious
:bfirst
:blast
:b10
:b <buffer-name>
Run Code Online (Sandbox Code Playgroud)

当然,这些都可以为了您的方便而进行映射.

但是......该插件不显示缓冲区编号,因此您无法使用:b10可靠地跳转到假"tabline"中的第十个缓冲区,这样您工具带中的工具就少了一个.

一些特殊的缓冲区,比如quickfix列表,可以带:bn/ :bn不带 - 可能 - 被列在你的假"tabline"中,这样​​就可以使你的假"tabline"成为一个相当糟糕的抽象,即使不考虑一般标签的明显限制.

当你真正使用标签页时,那个虚假的"tabline"就会变成一个半真实的"tabline".

把两个截然不同的东西 - 以自己的方式强大 - 将概念合并为一个单一的混蛋并不是一个好主意.

我建议您禁用该选项并使用缓冲区和标签页,因为它们是要使用的.

参考:

:help buffers
:help tab-page
Run Code Online (Sandbox Code Playgroud)

  • 在vim中,选项卡不是您从sublimetext或任何其他编辑器知道的选项卡.简单地说:buffers =所有打开的文件.tabs =一定数量的缓冲区. (3认同)
  • 这是因为,由于插件作者对用户体验的奇怪想法,你会混淆标签页和缓冲区.如果使用缓冲区,请使用缓冲区命令(`:help buffers`); 如果使用标签页,请使用标签页命令(`:help tab-page`). (2认同)

Raf*_*afi 6

同意@romainl,但是您可以随时将+ tab映射到:bn或:bp。

" Tab navigation like Firefox. nnoremap <C-S-tab> :bprevious<CR> nnoremap <C-tab> :bnext<CR>

  • 这在文本模式的vim中(例如通过SSH)不起作用,因为Ctrl-Tab无法映射。但是,它确实可以在gVim中工作。 (2认同)

Tit*_*tou 5

除了 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>
...
Run Code Online (Sandbox Code Playgroud)

或者,您可以在航空公司加倍

let g:airline#extensions#tabline#buffer_idx_mode = 1
nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您使用vim-airline,它只是公开<Plug>AirlineSelectTab按键,您可以将它们映射到方便的按键序列:

  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
Run Code Online (Sandbox Code Playgroud)

关于映射请参见https://vim.fandom.com/wiki/Mapping_keys_in_Vim_-教程(Part_1)