是否可以共享 SublimeText 首选项*和*覆盖一个特定的首选项?
Is it possible to share SublimeText preferences *and* override one specific pref?
我使用 Git 在两台机器(家庭、工作)之间共享 Sublime 首选项。
我工作时的显示器比家里的显示器有更高的 DPI,所以我想在两台机器中的一台上覆盖 font_size
。
我希望:
- 可以像 kitty
--override
那样使用命令行标志进行覆盖(做类似 subl --override-pref font_size=15
的事情)。
User
. 下层叠的另一个偏好级别
,但我认为这些在 Sublime 中都不存在。特定于语言的配置不是我要找的,我想要全局的东西,但只在两台机器中的一台上。
想法?解决方法?谢谢。
设置文件的一般机制是,当 Sublime 按名称加载 sublime-settings
文件时,它会从所有已知包中提取所有名称相似的文件并将它们组合在一起(同样许多其他资源文件都会发生这种情况),后面文件中的内容会覆盖前面文件中出现的任何内容。
这里的 order that's imposed 是词法包,Default
总是第一个,User
总是最后一个。这就是默认设置位于 Default
包中而您的自定义设置位于 User
包中的原因。此外,特定于语法的设置也适用(特定于项目的设置也是如此)。
除了这种机制之外,如果您不进行某种手动干预,就没有直接的方法来覆盖设置。此类问题的潜在解决方案包括以下示例:
不同步 Preferences.sublime-settings
文件
如果文件没有在多台机器上同步,那么这个问题就没有实际意义了,因为每台机器都可以很容易地拥有自己独特的设置。这样做的缺点是每台机器都有自己独特的设置,如果您经常从一台机器换到另一台机器并且工作方式不完全相同,这将是一件很痛苦的事情。
使用单独的 git
个分支
如果您正在使用 git
,这里的替代方法是尝试为每个主机或每个主机类型保留单独的分支(例如 hi_dpi
和 reg_dpi
或某些这样的)。然后在每台机器上检查相应的分支。
这里明显的缺点是必须在分支之间尝试 cross-sync 所需的设置更改(对于 User
以及您可能安装的任何软件包),这不太理想,除非您真的爱git
.
使用额外的 Preferences.sublime-settings
个文件
这里的想法是您根本不在 User/Preferences.sublime-settings
文件中包含 font_size
设置。相反,您使用命令面板中的 Browse Packages
打开 Packages
文件夹,然后在那里创建一个任意名称的新文件夹。该文件夹内包含一个 Preferences.sublime-settings
文件,该文件仅包含 font_size
设置。
在多台机器上执行此操作,您可以跨机器同步 User
文件夹中的设置,而无需同步包含 font_size
的首选项。请注意,如果您在 Sublime 已经 运行 时创建文件,您可能需要退出并重新启动才能注意到设置文件存在;不过这只适用一次。
使用插件
看看上面提供的 link,任何设置的最终王牌是直接应用于 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
设置中,您需要手动将其删除并修改其他设置文件。
如果您使用的是该插件,那么这些快捷方式似乎不会执行任何操作,因为它应用了覆盖 User
首选项的 font_size
,但实际上如上所述您的首选项文件最终被更改,您可能不会立即注意到。
因此,无论您选择哪种方式,如果您倾向于使用这些设置,您可能需要在事后对设置文件进行手动调整。如果这是经常发生的事情,也可以创建这些命令的更智能版本。
我使用 Git 在两台机器(家庭、工作)之间共享 Sublime 首选项。
我工作时的显示器比家里的显示器有更高的 DPI,所以我想在两台机器中的一台上覆盖 font_size
。
我希望:
- 可以像 kitty
--override
那样使用命令行标志进行覆盖(做类似subl --override-pref font_size=15
的事情)。 User
. 下层叠的另一个偏好级别
,但我认为这些在 Sublime 中都不存在。特定于语言的配置不是我要找的,我想要全局的东西,但只在两台机器中的一台上。
想法?解决方法?谢谢。
设置文件的一般机制是,当 Sublime 按名称加载 sublime-settings
文件时,它会从所有已知包中提取所有名称相似的文件并将它们组合在一起(同样许多其他资源文件都会发生这种情况),后面文件中的内容会覆盖前面文件中出现的任何内容。
这里的 order that's imposed 是词法包,Default
总是第一个,User
总是最后一个。这就是默认设置位于 Default
包中而您的自定义设置位于 User
包中的原因。此外,特定于语法的设置也适用(特定于项目的设置也是如此)。
除了这种机制之外,如果您不进行某种手动干预,就没有直接的方法来覆盖设置。此类问题的潜在解决方案包括以下示例:
不同步 Preferences.sublime-settings
文件
如果文件没有在多台机器上同步,那么这个问题就没有实际意义了,因为每台机器都可以很容易地拥有自己独特的设置。这样做的缺点是每台机器都有自己独特的设置,如果您经常从一台机器换到另一台机器并且工作方式不完全相同,这将是一件很痛苦的事情。
使用单独的 git
个分支
如果您正在使用 git
,这里的替代方法是尝试为每个主机或每个主机类型保留单独的分支(例如 hi_dpi
和 reg_dpi
或某些这样的)。然后在每台机器上检查相应的分支。
这里明显的缺点是必须在分支之间尝试 cross-sync 所需的设置更改(对于 User
以及您可能安装的任何软件包),这不太理想,除非您真的爱git
.
使用额外的 Preferences.sublime-settings
个文件
这里的想法是您根本不在 User/Preferences.sublime-settings
文件中包含 font_size
设置。相反,您使用命令面板中的 Browse Packages
打开 Packages
文件夹,然后在那里创建一个任意名称的新文件夹。该文件夹内包含一个 Preferences.sublime-settings
文件,该文件仅包含 font_size
设置。
在多台机器上执行此操作,您可以跨机器同步 User
文件夹中的设置,而无需同步包含 font_size
的首选项。请注意,如果您在 Sublime 已经 运行 时创建文件,您可能需要退出并重新启动才能注意到设置文件存在;不过这只适用一次。
使用插件
看看上面提供的 link,任何设置的最终王牌是直接应用于 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
设置中,您需要手动将其删除并修改其他设置文件。
如果您使用的是该插件,那么这些快捷方式似乎不会执行任何操作,因为它应用了覆盖 User
首选项的 font_size
,但实际上如上所述您的首选项文件最终被更改,您可能不会立即注意到。
因此,无论您选择哪种方式,如果您倾向于使用这些设置,您可能需要在事后对设置文件进行手动调整。如果这是经常发生的事情,也可以创建这些命令的更智能版本。