我使用Git在两台机器(家庭,办公)之间共享Sublime首选项。
我的工作监视器比家里的监视器具有更高的DPI,因此我想在两台计算机之一中覆盖font_size
。
我希望得到:
--override
一样,可以使用命令行标志来覆盖(做类似subl --override-pref font_size=15
的事情。)User
以下级联。,但我认为Sublime中不存在任何这些。特定于语言的配置不是我想要的,我想要全局的东西,而只需要在两台机器中的一台。
想法?解决方法?谢谢。
答案 0 :(得分:1)
设置文件的通用机制是,当Sublime按名称加载sublime-settings
文件时,它会在所有已知包中提取所有名称相似的文件,并将它们组合在一起(对于许多其他资源文件),其中包含来自较新文件的内容,将覆盖较早文件中出现的所有内容。
这里的order that's imposed按词法按包显示,Default
始终是第一个,User
始终是最后一个。这就是为什么默认设置位于Default
包中,而您的自定义设置位于User
包中的原因。另外,语法特定的设置也适用(项目特定的设置也是如此)。
除了这种机制之外,如果没有某种手动干预,就无法直接覆盖设置。此类问题的潜在解决方案包括以下示例:
Preferences.sublime-settings
文件如果文件未在多台计算机上同步,则此问题将变得毫无意义,因为每台计算机都可以轻松地拥有自己的唯一设置。不利的一面是每台机器都有自己的独特设置,如果您经常在不同的机器之间移动,而事情却不尽相同,那将是一个痛苦的局面。
git
分支如果您正在使用git
,例如,尝试在每个主机或每个主机类型(例如hi_dpi
和reg_dpi
等)中保留单独的分支。然后在每台计算机上签出相应的分支。
这里明显的缺点是必须尝试在分支之间交叉同步所需的设置更改(对于User
以及可能安装的任何软件包),除非您真的喜欢{{1 }}。
git
文件这里的想法是您根本没有在Preferences.sublime-settings
文件中包含font_size
设置。而是使用命令面板中的User/Preferences.sublime-settings
打开Browse Packages
文件夹,然后在其中创建一个具有任意名称的新文件夹。在该文件夹的内部包括一个Packages
文件,该文件仅包含Preferences.sublime-settings
设置。
在多台计算机上执行此操作,您可以跨计算机同步font_size
文件夹中的设置,而无需同步包含User
的首选项。注意,如果在Sublime已经运行的情况下创建文件,则可能需要退出并重新启动以获取设置文件的注意;否则,请执行以下操作。不过,这仅适用于一次。
通过上面提供的链接,任何设置的最终王牌都是直接应用于font_size
的设置。鉴于此,您可以使用一个插件,该插件选择性地始终将特定字体大小应用于任何新创建或打开的文件:
view
现在,每次打开文件或创建新缓冲区时,如果当前主机名位于您已配置的列表中,则视图将立即应用适当的import sublime
import sublime_plugin
import socket
class CustomFontListener(sublime_plugin.EventListener):
hostname = socket.gethostname()
def on_new(self, view):
if self.hostname in ("host1", "host1.example.com", "host2"):
view.settings().set("font_size", 20)
on_load = on_new
;否则,将使用首选项中的一个。
您还可以通过它自己的设置文件将其扩展为可配置的,根据主机名应用不同的字体大小,等等。
视图中的设置会保存在font_size
文件以及与sublime-session
文件关联的工作区文件中,因此即使重新启动,这些设置也会保留在原位。
要记住的一点是,用于更改字体大小的内部命令(通过sublime-project
或通过鼠标滚轮键盘快捷键)是通过在用户首选项中编写新的Preferences > Font
来起作用的。
如果您使用单独的首选项文件,则将font_size
添加到font_size
设置中,您将需要手动将其删除并修改其他设置文件。
如果您使用的是插件,那么这些快捷方式似乎无济于事,因为它应用了User
覆盖了font_size
首选项的事实,但实际上就像您的首选项文件末尾所概述的那样被更改,您可能不会马上注意到。
因此,无论您采用哪种方式,如果您倾向于使用那些方式,则可能需要在后期对设置文件进行手动调整。如果这是经常发生的事情,那么也可以为这些命令创建更智能的版本。