有没有人有一个优雅的解决方案,让 MacVim 或 gvim 跨越多个(可能不同的分辨率)显示器?由于缓冲区和交换文件不同,2 个会话效果不佳。
您可能认为可以让 2 个 GUI 窗口共享相同的缓冲区,但我找不到任何可行的方法。
答案1
展开gvim
窗口以覆盖两个屏幕并用于CTRL-W v垂直分割编辑窗口。
请:help CTRL-W
参阅更多窗口命令。
答案2
我也经常使用多显示器,所以我做了一个简单的解决方法,直到 vim 实现此功能。使用名为 gitv 的 lua 脚本,我可以同时在多个 GVIM 实例上打开一个文件。基本上,当有两个名为 GVIM1 和 GVIM2 的 GVIM 实例时,我所做的只是确保一次只有一个文件可编辑,而所有其他文件都是查看器。(一切都自动完成,无需提示。)
工作流程:目前,gitv 是为 git 存储库设计的,因此它只能用于 git 存储库中的文件。您可以通过修改 lsFiles() 函数轻松更改此默认行为。
首先在 GVIM1 上打开 a.txt,使用
$ gitv gvimr GVIM1 a.txt
如果没有 gvim 窗口,这将打开一个。然后要在另一个 GVIM2 实例上打开相同的 a.txt,请使用
$ gitv gvimr GVIM2 a.txt
(或者你可以创建一个别名如 $ gvim2 a.txt)
然后 gitv 内部执行以下操作:
- 查找所有打开了“a.txt”的 gvim 实例。(在本例中为 GVIM1)
- 将所有 a.txt 缓冲区设置为“readonly”、“nomodifiable”和“autoread”。
- 被修改的缓冲区将在设置“readonly”之前写入磁盘。)
- 删除交换文件。
- 在 GVIM2 上重新打开 a.txt。(gvim 可以毫无问题地打开该文件,因为没有交换文件。)
如果你想在显示器 1 而不是显示器 2 上编辑 a.txt,请执行以下操作来切换活动缓冲区:$ gitv gvimr GVIM1 a.txt (或 gvim1 a.txt)这可以在 gvim1 中使用 ctrl+g + a.txt 更轻松地完成
(这将自动在 gvim 的其他实例中将相同的缓冲区设置为“只读”,以防止数据损坏。)
gitv 可以在这里下载: http://code.google.com/p/gitv/ 它仅在 Linux gvim 上进行了测试,但可以轻松移植到 MacVIM。