:ls
之后,这可能会使跳转到特定缓冲区或选择缓冲区范围变得很尴尬。是否有某种方法可以对所有打开的缓冲区重新编号(从一个缓冲区开始),而无需再次打开所有文件?#1 楼
否(不是不删除缓冲区)。打开后,Vim不支持手动分配缓冲区编号或重新排序缓冲区。它的原理是,每个缓冲区都获得一个在该缓冲区的生命周期内固定的标识符(在
:ls
的帮助中,它指出“每个缓冲区都有一个唯一的编号。该编号不会更改...”)。您可以使用参数列表。将所有打开的缓冲区放入参数列表,删除所有未完成的缓冲区,然后打开参数列表中的所有内容。以下命令将完成此任务:
:argdel *
(删除现有参数列表):bufdo argadd %
(对于每个缓冲区,将缓冲区的路径添加到列表):1,1000bd
(将缓冲区1删除为1000;也许有更好的方法可以这样做):argdo e
(对于每个参数,请编辑该参数)这将为您留出一个额外的空缓冲区,当您删除所有先前的缓冲区时,vim会打开该缓冲区,但这与您想要的功能相当接近。您只需
:bd
那个额外的缓冲区即可。#2 楼
“缓冲区数字变得疯狂”,告诉我!到一天结束时,我可以轻松使用超过100个缓冲区。但是幸运的是,正如您在此动画中看到的那样,您可以使用制表符完成缓冲区名称。因此,即使您无法重新编号缓冲区,也可以仍然很容易跳来跳去。
我不知道动画是否清楚,但是“制表符完成”与命令行制表符完成不同。它更像是“歧义解决标签替换器”。这意味着在命令行中,我必须先键入
sc
选项卡,然后键入se
选项卡,但是在这里vim会执行“ se”搜索并将其替换为第一个(也是唯一一个)匹配项。如果我输入了test
选项卡,它将与'generate_test_data.py'相匹配,然后选项卡再次与'scripts / setup_test_data.sh'相匹配,然后再次使选项卡循环回去,依此类推。关键是您可以养成只键入
:b <minimum amount of unambiguous characters>
选项卡即可跳转到所需文档的习惯。我认为这比记起“我的缓冲区是1:foo 2:bar 3:bar”等效果要好,这是我刚接触新手时的做法。#3 楼
您可以使用vim-airline。此插件的行为可能会解决您的问题:请参见airline.txt中的第470-479行
这不会更改缓冲区编号,但是您可以选择一个缓冲区
这是我在
.vimrc
中设置的航空公司设置:"set airline
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number
let g:airline#extensions#tabline#show_tab_nr = 1
let g:airline#extensions#tabline#formatter = 'default'
let g:airline#extensions#tabline#buffer_nr_show = 1
let g:airline#extensions#tabline#fnametruncate = 16
let g:airline#extensions#tabline#fnamecollapse = 2
let mapleader=","
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
我的标签行:
评论
惊人!我喜欢它 :)
–布拉斯科
19-10-2在10:28
不是问题的答案,而是用疯狂的缓冲区号来修补问题。仅显示buffer_numbers的建议:switch_buffers_and_tabs = 1和buffer_idx_mode = 0
–卡利加里
19-10-24在11:28
反正有修改航空公司的缓冲指数吗?
–fx-kirin
20-11-27在10:39
#4 楼
根据文档,缓冲区编号永远不会改变 Each buffer has a unique number. That number will not change,
so you can always go to a specific buffer with ":buffer N" or
"N CTRL-^", where N is the buffer number.
我能想到的重新编号缓冲区的唯一方法是重新启动vim。
#5 楼
旧问题,但是由于它在Google搜索中排在首位,因此我将其留在此处以供将来搜索。正如Bruno所建议的那样,支持缓冲区列表的模糊查找器是可行的方法。我个人使用并推荐fzf-vim。它提供命令:FZFBuffers
,看起来像这样:如果需要,缓冲区号会显示在左侧,但是如果使用模糊查找器,则可能不再需要再次使用它们。只要记住文件名的一部分,通常就需要2-5次击键。就我个人而言,我已将此命令映射到按键,并且对我而言,在缓冲区之间切换几乎是瞬间的!
评论
您的回答是“否”,但看来效果很好!
–aharris88
2015年2月5日21:00
(我的意思是“不”,这意味着您必须重新打开文件才能做到)。它实际上是否从1重新编号?我以为它是在我初次尝试时做的,但是现在我看到它没有为我重新编号?
–user72
2015年2月5日在21:01
是的,它为我重新编号。
–aharris88
2015年2月5日在21:03
是的,我只是愚蠢,我发现了我的错误。
–user72
2015年2月5日在21:04
:%bd将删除所有缓冲区。
–您
19年1月4日在8:00