我已经看过在Vim中使用制表符的能力(用:tabe
,:tabnew
等)作为我当前在隐藏缓冲区中在同一窗口中打开许多文件的做法的替代.
我希望我打开的每个不同文件始终位于其自己的选项卡中.但是,有些事情会妨碍这一点.我该如何解决这些问题:
当命令喜欢gf
并^]
跳转到另一个文件中的某个位置时,该文件将在当前选项卡的新缓冲区中打开.有没有办法让所有这些命令在新选项卡中打开文件,或者如果文件已经打开则切换到现有选项卡?
当我可以使用切换缓冲区时
:b <part of filename><tab>
,它将完成现有缓冲区中文件的名称.<part of filename>
甚至可以是文件名的中间而不是开头.是否有相应的切换标签?
Zat*_*rus 617
停止,停止,停止.
这不是Vim的标签设计使用的方式.事实上,他们的名字不好.一个更好的名称是"视口"或"布局",因为这是一个标签 - 它是所有现有缓冲区的不同窗口布局.
试图将Vim击败到1个标签== 1缓冲区是徒劳的.Vim不知道或不关心,也不会尊重它在所有的命令,尤其是,任何使用的quickfix缓冲区(:make
,:grep
,和:helpgrep
是映入脑海的那些)将愉快地忽略选项卡并没有什么可以做,以阻止那.
代替:
:set hidden
:bn
,:bp
,:b #
,:b name
,和ctrl-6
到缓冲区间切换.我喜欢ctrl-6
自己(单独它切换到以前使用的缓冲区,或#ctrl-6
切换到缓冲区编号#
).:ls
列出的缓冲区,或者像一个插件MiniBufExpl或BufExplorer.rob*_*nce 271
这里的派对有点迟了但很惊讶我在这个列表中没有看到以下内容:
:tab sball
- 这将为每个打开的缓冲区打开一个新选项卡.
:help switchbuf
- 这可以控制缓冲区切换行为:set switchbuf=usetab,newtab
.这应该意味着如果缓冲区打开则切换到现有选项卡,或者如果没有则创建新选项卡.
cre*_*ate 165
Vim :help window
很好地解释了"制表符与缓冲区"的混淆.
缓冲区是文件的内存中文本.
窗口是缓冲区上的视口.
标签页是一组窗口.
使用缓冲区在vim中打开多个文件.在其他编辑器(例如notepad ++)中,这是使用制表符完成的,因此vim中的名称选项卡可能会产生误导.
Windows用于拆分工作区并在一个屏幕上一起显示多个文件(缓冲区).在其他编辑器中,这可以通过打开多个GUI窗口并在桌面上重新排列它们来实现.
最后在这个类比中,vim的标签页对应于多个桌面,即不同的窗口重排.
正如vim help: tab-page
解释的那样,当一个人想要临时编辑文件但又不想改变当前windows和缓冲区布局中的任何内容时,可以使用标签页.在这种情况下,可以仅使用另一个标签页来编辑该特定文件.
当然,您必须记住,在许多标签页或窗口中显示相同的文件将导致显示相同的工作副本(缓冲区).
Zen*_*xer 53
与此处的其他一些答案相反,我说您可以根据需要使用制表符.vim被设计为多功能和可定制的,而不是强迫您根据预定义的参数工作.我们都知道程序员如何喜欢将我们的"道德规范"强加给其他人,所以这个成就当然是一个主要特征.
<C-w>gf
是与buffers' gf
命令相同的选项卡. <C-PageUp>
并将<C-PageDown>
在标签之间切换.(在Byobu中,这两个命令对我来说不起作用,但它们在Byobu/tmux之外工作.替代方案是gt
和gT
.) <C-w>T
将当前窗口移动到新的标签页.
如果您希望vim尽可能使用现有选项卡,而不是创建重复选项卡,请添加:set switchbuf=usetab
到.vimrc文件中.您可以添加newtab
到列表(:set switchbuf=usetab,newtab
)以强制显示编译错误的QuickFix命令在单独的选项卡中打开.我更喜欢split
,它在分割窗口中打开编译错误.
如果启用了鼠标支持:set mouse=a
,则可以通过单击选项卡与选项卡进行交互.+
默认情况下还有一个按钮可以创建一个新选项卡.
有关选项卡的文档,请键入:help tab-page
正常模式.(执行此操作后,您可以练习使用窗口将窗口移动到选项卡<C-w>T
.)有很长的命令列表.某些窗口命令与选项卡有关,因此您可能也希望查看该文档:help windows
.
增加:2013-12-19
要在vim中打开多个文件,并在单独的选项卡中使用每个文件,请使用vim -p file1 file2 ...
.如果你像我一样并且总是忘记添加-p
,你可以在最后添加它,因为vim遵循正常的命令行选项解析规则.或者,你可以添加一个bash别名映射vim
到vim -p
.
Dom*_*tos 15
我遇到了同样的问题.我希望标签像缓冲区一样工作,我从来没有完全设法让它们.我最终解决的解决方案是使缓冲区表现得像制表符!
查看名为Mini Buffer Explorer的插件,安装和配置后,您将能够以与标签相同的方式使用缓冲区,而不会丢失任何功能.
对于那些不熟悉Vim并来自其他文本编辑器的人(在我的Sublime Text中),这是一个答案.
我仔细阅读了所有这些答案,但仍然不清楚.如果你仔细阅读它们,那么事情开始变得有意义了,但是我花了好几个小时在问题之间来回走动.
首先,正如其他人所解释的那样:
标签页,听起来很像标签,它们像标签一样,看起来很像大多数其他GUI编辑器中的标签,但它们不是.我认为这是一个基于Vim构建的糟糕的心理模型,遗憾的是它在标签页中覆盖了你的额外力量.
我理解的第一个描述来自@ crenate的答案是它们相当于多个桌面.在这方面看到你只打开了几个桌面,但每个桌面都打开了很多GUI窗口.
我会说它们与其他编辑器/浏览器类似:
当您看到它们时,您会发现它们的强大功能,您可以轻松地将多组文件(缓冲区)组合在一起,例如CSS文件,HTML文件和不同标签页中的JS文件.这实际上非常棒.
这对我来说毫无意义.虽然它确实有一个定义的字典术语的视口,但我只听说过:help window
文档中的Vim窗口.对于像Sublime Text,Visual Studio,Atom,Notepad ++这样的编辑器,Viewport并不是我所听过的术语.事实上,在我开始尝试使用标签页之前,我从未听说过Vim.
如果您查看多个桌面等标签页,那么将桌面称为单个窗口似乎很奇怪.
这可能更有意义,字典定义是:
用于临时使用的存储器存储设备.
所以它就像存放一组缓冲区的地方.
我最初听起来并不像Sublime Text的工作区概念,它是您在项目中打开的所有文件的列表:
sublime-workspace文件,包含用户特定的数据,例如打开的文件和对每个数据的修改.
然而,考虑更多,这确实同意.如果您将Vim标签页视为Sublime Text项目,那么在每个项目中只打开一个文件并在项目之间切换似乎很奇怪.因此,为什么使用标签页只打开一个文件是奇怪的.
该:help window
指标签页这样.还有许多其他答案使用相同的概念.然而,直到你了解vim窗口是什么,那就没什么用了,就像在沙滩上建造城堡一样.
正如我上面提到的,vim窗口与视口相同,并在这篇linux.com文章中得到了很好的解释:
Vim中一个非常有用的功能是能够在一个或多个文件之间拆分可视区域,或者只是拆分窗口以更容易地查看同一文件的两个位.Vim文档可以互换地将其称为视口或窗口.
如果您曾使用过:帮助主题或按F1键使用过Vim的帮助功能,则您可能已经熟悉此功能.当您输入帮助时,Vim会分割视口并在顶部视口中打开帮助文档,使文档在底部视口中保持打开状态.
我发现奇怪的是,标签页被称为窗口集合而不是缓冲区集合.但我想你可以打开两个单独的标签页,每个标签页都有多个窗口都指向同一个缓冲区,至少这是我目前所理解的.
您可以将通常操作缓冲区的命令映射到操作选项卡,就像我在 .vimrc 中使用 gf 所做的那样:
map gf :tabe <cfile><CR>
Run Code Online (Sandbox Code Playgroud)
我相信你也可以用 [^
我认为 vim 还不支持选项卡。我使用 gt 和 gT 分别移动到下一个和上一个选项卡。您还可以使用 Ngt,其中 N 是选项卡编号。我的一个烦恼是,默认情况下,选项卡编号不会显示在选项卡行中。为了解决这个问题,我在.vimrc 文件的末尾放置了几个函数(我没有粘贴到这里,因为它很长并且格式不正确)。
我使用像选项卡这样的缓冲区,使用BufExplorer插件和一些宏:
" CTRL+b opens the buffer list
map <C-b> <esc>:BufExplorer<cr>
" gz in command mode closes the current buffer
map gz :bdelete<cr>
" g[bB] in command mode switch to the next/prev. buffer
map gb :bnext<cr>
map gB :bprev<cr>
Run Code Online (Sandbox Code Playgroud)
使用 BufExplorer,顶部没有选项卡栏,但另一方面,它节省了屏幕空间,而且您可以打开无限数量的文件/缓冲区,并且缓冲区列表是可搜索的...
归档时间: |
|
查看次数: |
143730 次 |
最近记录: |