我知道我可以通过 :qall 关闭 vim 中所有打开的缓冲区。
我想关闭待处理的打开缓冲区的事件。
我在查看 P4 沙盒中的更改时遇到问题。当我对多个文件进行更改并尝试使用“P4 diff”查看我的代码并将我的 P4DIFF 设置为 vimdiff 时。
它会一一打开所有已更改文件的 vimdiff。现在,如果我有 10 个打开的文件,并且在查看 2 个文件后,我想关闭剩余 8 个文件的差异。我怎样才能做到这一点?
谢谢,
这听起来像是仓促学习 Vimscript 的工作!特别是:bufdo
,if
和match
语句!
尝试以下方法:
:bufdo if match(expand("%"), ".vim") >= 0 | bw | endif
bw
用于buffer wipe
Ex 模式(:
操作员)expand("%")
返回当前缓冲区的名称match(string, pattern)
找到 a pattern
in的索引string
|
如果您处于 Ex 模式,则为单独的行这匹配包含.vim
在其文件名中的缓冲区并关闭这些缓冲区。
我猜如果这些是输入的临时缓冲区vimdiff
,它们将没有文件名开头。也许你可以用它bufnr(".")
来输出当前缓冲区的数量。然后,您可以关闭某个数字之后或之前的所有缓冲区。
您可能可以使用某些插件进行更多的缓冲区操作。我一直在考虑采用以下三个有助于管理插件的插件之一:
这是一个糟糕的技巧,但把它放在这里,因为没有其他答案对我有用。
在 .vimrc 顶部添加不带 qoutes 的 "qall"。
:e ~/.vimrc
:source ~/.vimrc
:q
所有文件打开后会自动关闭。
然后在 emacs 或 sed 中打开 vimrc 并删除 qall。
免责声明:我没有使用过 perforce,所以我不得不做出一个假设:当多个文件有未提交的更改时,它会像很多 VCS 一样运行配置的 diff 命令(在本例中为 vimdiff )依次更改文件(我认为这就是“打开所有已更改文件的 vimdiff”的意思)。
如果是这种情况,那么在查看任何特定文件的更改时,vim 将不会引用任何剩余文件,因此单个 vim 会话中的任何技巧都不会帮助您。
如果你愿意改变你的工作流程,你可以用我找到的这个 vim 脚本做一些事情:http: //www.vim.org/scripts/script.php? script_id=240
它声称是在 P4 GUI 之后建模的,因此希望可以巧妙地适合您的使用。从脚本的概述中,听起来它应该能够向您显示哪些文件已更改的摘要,并允许您查看更改。
如果这些都不适合你,你总是可以Ctrl-C
在关闭文件的 vimdiff 会话后立即尝试旧的最爱。