Можно ли поделиться настройками SublimeText * и * переопределить один конкретный преф? - PullRequest
0 голосов
/ 13 июня 2019

Я разделяю Sublime prefs между двумя компьютерами (дом, работа), используя Git.

Мой монитор на работе имеет более высокое разрешение, чем мой монитор дома, поэтому на одном из двух компьютеров я бы хотел переопределить font_size.

Я надеялся на:

  • Возможность переопределить, используя флаг командной строки (чтобы сделать что-то вроде subl --override-pref font_size=15), как kitty --override делает.
  • Еще один уровень каскадирования префов ниже User.

, но я не думаю, что что-то из этого существует в Sublime. Конфигурация для конкретного языка - это не то, что я ищу, я хочу что-то глобальное, но только на одном из двух компьютеров.

Идеи? Обходные? Спасибо.

1 Ответ

1 голос
/ 13 июня 2019

Общий механизм воспроизведения файлов настроек заключается в том, что когда Sublime загружает файл sublime-settings по имени, он вытягивает все файлы с одинаковыми именами во все известные пакеты и объединяет их вместе (то же самое происходит и для многих другихфайлы ресурсов) с содержимым из более поздних файлов, переопределяющим все, что появляется в более раннем файле.

Порядок , наложенный здесь , лексически определяется пакетом, при этом Default всегда является первым, а Userвсегда быть последнимВот почему настройки по умолчанию находятся в пакете Default, а ваши пользовательские настройки - в пакете User.Кроме того, применяются специфичные для синтаксиса настройки (как и настройки, специфичные для проектов).

Помимо этого механизма, нет прямого способа переопределить настройки без какого-либо ручного вмешательства с вашей стороны.Возможные решения для такого рода проблемы включают в себя следующие примеры:

1013 * Не синхронизировать Preferences.sublime-settings файл 1016 * Если файл не синхронизируются на нескольких машинах, то эта проблема становится спорным, потому чтокаждая машина может легко иметь свои собственные уникальные настройки.Недостатком этого является то, что каждая машина имеет свои уникальные настройки, что очень неприятно, если вы часто переходите с машины на машину, и вещи не совсем работают одинаково.

Использовать отдельно git branch

Альтернативой здесь, если вы используете git, таким как вы, является попытка сохранить отдельные ветви для хоста или для типа хоста (например, hi_dpi и reg_dpi или некоторые другие),Затем на каждой машине проверьте соответствующую ветку.

Очевидные недостатки здесь - это попытка синхронизировать желаемые изменения настроек (как для User, так и для любых пакетов, которые вы можете установить) между ветвями, чтоэто менее чем идеально, если вы действительно не любите git.

Используйте дополнительные Preferences.sublime-settings файлы

Здесь идея заключается в том, что вы не включили параметр font_size в свой User/Preferences.sublime-settingsфайл на всех.Вместо этого вы используете Browse Packages из палитры команд, чтобы открыть папку Packages, а затем создаете новую папку с произвольным именем.Внутри этой папки есть файл Preferences.sublime-settings, который содержит только настройку font_size.

Делая это на нескольких машинах, вы можете синхронизировать настройки в папке User на разных машинах, не синхронизируя предпочтение,содержит font_size.Как примечание, если вы создаете файл, когда Sublime уже запущен, вам может потребоваться выйти и перезапустить, чтобы он заметил, что файл настроек существует;однако это применимо только один раз.

Используйте плагин

Если посмотреть по ссылке, приведенной выше, конечным козырем для любого параметра является параметр, который был применен непосредственно к 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, который переопределяет предпочтение User, но на самом деле, как указано выше, ваш файл настроек в конечном итоге изменяется иВы можете не заметить это сразу.

Так что, каким бы способом вы не пошли, если вы склонны использовать их, вам может понадобиться вручную внести изменения в файлы настроек в последствии.Также возможно создавать более умные версии этих команд, если такое часто случается.

...