哦,我多么喜欢 Ubuntu 和它的所有功能,但是这个“错误”让我生气了很久,我最终决定在这里寻求帮助。
我已指定.php
在 nautilus 中双击所有文件时,都使用 gedit 打开它们。现在,行为很奇怪。
- 我没有运行 gedit
- 我双击要打开的文件
- gedit 窗口打开,文件加载
- 我双击另一个要打开的文件
现在有两种可能的结果:
5A) 文件在同一个 gedit 窗口的新标签页中打开
5B) 文件在新的 gedit 窗口中打开,从而运行 2 个 gedit。
A 或 B 是否发生似乎完全是随机的,并且会无限地持续下去。这意味着我双击 100 个文件,最终可能会得到 60 个 gedit,其中一些有 1 个选项卡,一些有 2 个选项卡,一些有 3 个选项卡……
这非常烦人,如果能修复这个问题就太好了。有人尝试修复过这个问题吗?
这在 Ubuntu 10.04、10.10 和 11.10 中都发生过。我测试过的所有 Ubuntu 版本。
答案1
为什么...
gedit
有一个非常有趣的算法来确定它是打开一个新实例还是在现有实例的选项卡中打开。
该算法位于gedit-app.c
函数的源文件中static boolean is_in_viewport
,用于测试当前 gedit 实例是否
- 在同一屏幕编号和显示名称中
- 在同一个工作区中
- 大于视口边缘的 25%
如果所有都是正确的,那么 gedit 会在同一个实例中的新选项卡中打开,否则它会在新窗口中打开。
总之 - 改变行为的唯一现实方法就是改变算法......
如何...
以下是获取打开 gedit 的一致方法的快速方法...它将始终打开一个新实例。
安装基本开发工具
sudo apt-get install devscripts build-essential fakeroot
获取源代码
cd ~/Downloads
mkdir build
cd build
apt-get source gedit
cd gedit-3.2*
做出改变
打开 gedit-app.c
gedit gedit/gedit-app.c
return FALSE;
按照所示添加并保存。
它的作用是始终退出例程并说“我没有在视口中运行,因此总是打开一个新实例”
如果您使用return TRUE;
此功能,将始终在新选项卡中的现有 gedit 实例中打开......
赋予它一个唯一的包名称
好的,我们需要给包一个唯一的名称,以防止存储库更新覆盖您更改的包
gedit debian/changelog
现在附加+yourname
到顶行版本并保存文件即
注意 - 为绝对确定 - 安装下面修改后的包后,请按照下面链接的问题锁定版本。
构建包
sudo apt-get build-dep gedit
debuild -i -us -uc -b
去喝杯咖啡...
cd ..
sudo dpkg -i gedit*.deb
相关问题:
答案2
我希望所有文件都只在一个 gedit 窗口中打开。我没有在其他地方找到此信息,但通过以下更改,我设法让所有文本文件都只在一个窗口中作为新选项卡打开,无论我如何打开它们(通过启动器、通过 nautilus、通过 Gnome DO)。
获取显示号码:
echo $DISPLAY
在命令行中输入。例如,您获得的:0
是显示号码。/usr/share/applications/gedit.desktop
使用文本编辑器以超级用户身份打开。修改以下行:
Exec=gedit %U
到
Exec=gedit --display=:0 %U
:0
您的显示号码在哪里?
答案3
这不是随机发生的
默认情况下,Gedit 不会打开多个实例,而是每个显示打开一个实例。如果您在尚未打开的显示中打开,Gedit 将在当前显示中打开文件所在的 Gedit 中的文件。
因此,您可以将 gedit 的第一个实例放在所有工作区上,这样它就会跟随您的活动显示。或者在每个工作区上处理每个项目,每个项目都有自己打开的 Gedit。在键盘快捷键中,您可以创建新的快捷方式来切换所有工作区上的窗口。
或者可以使用“打开方式”中的快捷命令使其始终在新实例中打开。gedit --new-window
因此,您可以尝试在 php 属性中打开并重置,然后使用 Gedit 打开新文件
使用gedit --help-all
ull 可以看到使用 gedit 打开的其他选项。
你也可以尝试删除 gedit 及其所有配置文件,然后使用以下命令进行全新安装sudo apt-get purge gedit && sudo apt-get clean && sudo apt-get update && sudo apt-get install gedit
更新:我能够重现这个问题——当将窗口移出屏幕一点,然后打开某个文件时,会在新窗口中打开。不知何故,它认为它在另一个显示器上。
答案4
只需最大化您的 gedit 窗口,所有内容就会在不同的选项卡中打开。在 Ubuntu 18 中对我有用。