• Sublime Text 3, автоматический выбор Build System?

    Можно задать горячие клавиши для тех builds (далее также «билдов» и т. п.), которыми пользуетесь.


    1. Собственные builds

    PreferencesKey Bindings - User. Если прежде не использовали собственные хоткеи, вставляем такой код:

    [{ "keys": ["ctrl+alt+b"], "command": "build", "args": {"build_system": "Packages/User/SashaIsMyIdol.sublime-build", "variant": "" }]

    Когда же уже приходилось вписывать хоткеи в этот файл с синтаксисом JSON, [квадратные скобки] нужно ставить только в начале и конце, но не между командами, перечисляемыми через запятую. Пример файла:

    [
    // Clickable URL — открыть URL, на которую наведён курсор
        { "keys": ["alt+enter"], "command": "open_url_under_cursor" },
    // Открыть PowerShell
        { "keys": ["ctrl+7, ctrl+t"], "command": "open_terminal" },
    // Наш Build
        { "keys": ["ctrl+alt+b"], "command": "build", "args": {"build_system": "Packages/User/SashaIsMyIdol.sublime-build", "variant": "" }
    ]

    keys — произвольный, но незанятый шорткат,
    build_system — путь к файлу Вашего билда с расширением .sublime-build, начиная с папки Packages.

    Нажимаем горячие клавиши, — в примере это Ctrl+Alt+B, → build должен запуститься.


    2. Builds по умолчанию

    Принцип тот же: задать горячие клавиши в файле Key Bindings - User. Нужно ещё узнать, где лежат файлы билдов.

    Положим, мы работаем с Ruby. Ctrl+Shift+PPackageResourceViewer: Open Resource (благодаря fuzzy-поиску достаточно ввести prv) → RubyRuby.sublime-build. В title страницы смотрим путь к файлу билда, его и вписываем:

    { "keys": ["ctrl+7, ctrl+b"], "command": "build", "args": {"build_system": "Packages/Ruby/Ruby.sublime-build", "variant": "" }},

    Аналогичным образом находим пути к builds для остальных языков программирования: для Python это Packages/Python/Python.sublime-build, у плюсов Packages/C++/C++ Single File.sublime-build.


    3. Альтернативный вариант

    Сначала у меня не срабатывал из-за опечатки автора книги Sublime Text Power User.

    Делаем так, чтобы когда у нас были открыты файлы для Python, например, с расширением .py, запускался бы Build Python, файлы для C++, например, с расширением .ex — соответственно, для C++. В файле вашего билда с расширением .sublime-build необходимо добавить параметр selector, значением которого будет являться общая для вашего языка разметки/программирования или инструмента программирования часть т. н. «области видимости» (scope). Как получить области видимости, подробно расписано тут. Нам нужно только то, что до первого пробела; допустим, если мы получили
    source.python meta.function.python entity.name.function.python
    , необходимо будет подставить только source.python . Пример билда для Python:

    {
        "cmd": ["python", "-u", "$file"],
        "file_regex": "^[ ]*File
    
    quot;(...*?)
    
    quot;, line ([0-9]*)",
        "selector": "source.python"
    }

    Для C++:

    {
    	    "cmd": ["g++", "$file", "-o", "$file_base_name", "-I/usr/local/include"],
    	    "selector": "source.c++",
    	    "windows": {
    	       "cmd": ["cl", "/Fo${file_path}", "/O2", "$file"]
    	    }
    	}


    Спасибо.
    Ответ написан
    Комментировать
  • Что означает на Linux скрипте перед командой символ $?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это переменная которая хранит код ошибки предшествующей команды. Обычно 0 - это ок. А другое число говорит о неудаче.
    Ответ написан
    2 комментария
  • Есть ли аналог функции "Показать все окна" из Ubuntu в Windows?

    @TNAT
    век живи, век учись
    win+tab (Windows 10)
    Ответ написан
    Комментировать
  • Как изменить окружающую среду (environment) в Symfony2?

    @shagguboy
    // This check prevents access to debug front controllers that are deployed by accident to production servers.
    // Feel free to remove this, extend it, or make something more sophisticated.
    if (isset($_SERVER['HTTP_CLIENT_IP'])
    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
    || !in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1'))
    ) {
    header('HTTP/1.0 403 Forbidden');
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
    }
    Ответ написан
    Комментировать