另外,如果我在多个标签页打开的情况下关闭 GVIM,是否可以设置警告?
有效地使用缓冲区!
你可以考虑使用:tabclose
关闭标签页。这样做的好处是关闭标签页(让你不再需要鼠标),同时也足够让你产生改变工作流程的动力,转而使用缓冲区和分屏。如果要警告关闭具有多个窗口的标签页,在我看来没有什么好处,因为如果你设置了'hidden'
,那么缓冲区仍然存在,所以没有任何损害。如果你没有设置'hidden'
,则在关闭之前会提示修改过的缓冲区。
标签页很棒。然而,vim将标签页视为更多的视口,用于查看一组窗口或工作区。标签页并不适合大规模使用。只需打开其他GUI编辑器并打开20个或更多的标签页,就会变得棘手。我曾经打开过100多个缓冲区,并在它们之间切换而不必担心。缓冲区比标签页更具可扩展性。当使用终端时,缓冲区和分屏也可以很好地适应较小的窗口。
不要只听取我的意见。以下是一些支持信息:
set hidden
命令会在放弃缓冲区时隐藏它们。:sb
切换到已经打开的缓冲区。:sb
和 :b
命令都可以使用部分名称和通配符。例如: :sb foo*
'switchbuf'
并根据个人偏好进行更改。:sp
, :new
和所有类型的分割命令。<c-w>
命令,使您在分割时更加容易。cscope
。<c-6>
切换到先前编辑过的文件。<c-o>
和 <c-i>
在跳转列表中移动到旧的/新的位置。CtrlP
:h :sb
:h windows
:h 'hidden'
:h 'swb'
:h ctrl-6
:h ctrl-o
:h tags
:h cscope
:h tab-page-commands
'tabline'
选项可以使用 %X
标记来显示关闭标签页的按钮,但这只适用于控制台版本的标签栏。 :help 'guitablabel'
明确说明:
请注意,该选项不使用语法高亮。 %T 和 %X 项也会被忽略。
因此,为了按字面意思获取你想要的内容,你需要切换到(更丑陋的)基于文本的标签行:
:set guioptions-=e
(请注意,此处不建议提出多个问题,请分开提问。)
我认为这是不可能的;虽然有一个VimLeavePre
事件可以挂钩,但它无法阻止Vim关闭;操作(例如:qall!
)无法撤消。如果你习惯于通过映射或命令关闭Vim,你可以覆盖它并在其中包含一个检查(使用tabpagenr('$') > 1
)。
如果您关心失去窗口/选项卡布局,最好看看Vim会话(可以自动在后台保留)。这将允许重新启动Vim,并打开之前打开的窗口。
tabc
或let
?即用自己的版本替换它们,可能会调用原始版本。 - majkinetornnoremap <MiddleMouse> :tabclose<CR>
除此之外,请参见TabLineSet.vim:Vim7选项卡定制,其中包括
closers:为选项卡添加热点(“!”)以进行单击关闭
fzf.vim
用于通过模糊名称输入切换缓冲区和打开文件。 - Ejaz