关闭待处理的vim窗口以打开其他窗口。

3
我知道可以通过输入 :qall 命令关闭vim中打开的所有缓冲区。
我想关闭待打开的文件。当我在P4沙盒中有多个文件更改时,我尝试使用“P4 diff”来查看我的代码,并将P4DIFF设置为vimdiff,但是出现了问题。它会逐个打开所有更改文件的vimdiff窗口。现在,如果我有10个打开的文件,在查看完2个文件后,我想关闭其余8个文件的差异比较,该怎么做呢?
谢谢。
4个回答

0
免责声明:我没有使用perforce,所以不得不做个假设:当有多个文件有未提交的更改时,它会像许多版本控制系统一样运行配置的diff命令(在这种情况下是vimdiff),逐个对每个更改的文件进行操作(我想这就是你所说的“依次打开每个更改文件的vimdiff”)。
如果是这种情况,那么当查看任何特定文件的更改时,vim将不会引用到任何其余文件,因此,在单个vim会话中无论采取怎样的欺骗手段都无济于事。
如果你愿意改变你的工作流程,也许可以借助这个我找到的vim脚本来解决问题:http://www.vim.org/scripts/script.php?script_id=240 它声称仿照了P4 GUI的模式,希望能够很好地适应你的使用方式。从脚本的概述来看,它应该能够向你显示哪些文件发生了更改,并允许你查看这些更改的内容。
如果以上方法都不适用于您,您可以尝试在关闭vimdiff文件会话后立即使用老式的 Ctrl-C


0
这听起来像是一个需要匆忙学习Vimscript的工作!特别是:bufdoifmatch语句!
试试以下内容:
:bufdo if match(expand("%"), ".vim") >= 0 | bw | endif
  • bw 是在 Ex 模式(: 运算符)中用于 buffer wipe 的命令。
  • expand("%") 返回当前缓冲区的名称。
  • match(string, pattern)string 中查找 pattern 的索引。
  • | 可以在 Ex 模式下分隔行。

这个命令匹配包含 .vim 文件名的缓冲区并关闭它们。

我猜如果这些是被输入到 vimdiff 的临时缓冲区,它们一开始就没有文件名。也许你可以使用 bufnr(".") 输出当前缓冲区的编号。然后你可以关闭所有编号大于或小于某个特定编号的缓冲区。

你可能可以通过某些插件进行更多的缓冲区操作。我一直在考虑采用以下三个帮助管理插件的插件之一:

  • LustyExplorer
  • FuzzyFinder
  • minibufexpl 我不能为任何优点发言,但我在互联网和 IRC 上听到了它们的提及。

0

我假设你使用许多参数(称为...参数列表)打开vim。

你应该重置它:

 :args %

您也可以有选择性地管理列表 (:argdelete)。更多信息: :he arglist


0

这是一个不好的hack,但我把它放在这里,因为其他答案对我没有用。

在你的.vimrc文件顶部添加“qall”(不带引号)。

:e ~/.vimrc
:source ~/.vimrc
:q

所有文件在打开后会自动关闭。

然后在emacs或sed中打开vimrc并删除qall。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接