Настройка Sublime Text для Java (ч. 3)

Введение
В прошлой публикации мы установили JDK и выполнили необходимые настройки для компиляции и запуска наших будущих приложений. В этой статье подготовим к использованию еще одну программу, но уже для написания кода. Закрываем все онлайн-редакторы, и делаем шаг в сторону более серьезных инструментов.
Для написания кода на языке Java существует большое количество программ: от мощных и профессиональных таких как Intellij IDEA, Eclipse, NetBeans — их еще называют интегрированными средами разработки (Integrated development environment, IDE), до программ попроще — текстовых редакторов. Самые популярные среди них: Sublime Text, Gedit, Atom, Xcode и т. д.
Профессиональные программисты, как правило, используют IDE. Это многофункциональные программы, упрощающие и ускоряющие процесс разработки, позволяющие автоматически выполнять компиляцию исходного кода, находить ошибки, опечатки и многое другое.
Т. к. вы только начинаете изучать программирование, и ваши задачи небольшие по объему, то мы рекомендуем использовать Sublime Text. На первых порах его функционала хватит за глаза.
А начинать изучение Java с написания кода в мощной, профессиональной среде разработки было бы неверно:
  • Вы запутаетесь во всех кнопках, меню, панелях этих IDE
  • Они слишком умные и многие вещи делают за программиста, что-то подсказывают. Вам это не подходит, т. к. вначале нужно набить шишек, сталкиваясь с разнообразными проблемами. И, конечно же, необходимо научиться их самостоятельно решать
  • Используя IDE, вы быстро привыкните к ее подсказкам и станете зависимыми от них, а мышление при этом останется на прежнем уровне — эволюции не произойдет. Можно легко превратиться в обезьянку, которая тыкает кнопки, но при этом впадает в ступор, если что-то ломается или появляется ошибка
Позже мы обязательно перейдем на Intellij IDEA, но сейчас важно настроить ваше мышление на язык Java, а для этого хватит и Sublime Text.
1. Текстовый редактор Sublime Text
На сайте Sublime Text скачайте и установите последнюю версию программы.
Её установка проста и ничем не примечательна. Попробуйте справиться с ней самостоятельно.
Возможностей этого редактора из коробки, для наших нужд, более чем достаточно. Но всегда можно что-то улучшить, настроив его под себя. Этим мы и займемся.
1.1. Настройка
Функционал редактора можно расширять через плагины. Тут они называются пакетами. За работу с ними отвечает пакетный менеджер (package control). Его нужно установить: он позволяет искать, устанавливать и удалять пакеты.
Кликните пункты меню Tools → Install Package Control…
Спустя несколько секунд об успешной установке сообщит это окно:
С помощью package control установим необходимые пакеты. Для этого перейдем в меню Preferences → Package Control (или Ctrl + Shift + p). Отобразится выпадающий список с возможностями менеджера пакетов:
Кликаем мышкой по пункту Install Package. Начнется скачивание доступного списка пакетов, которое займет несколько секунд.
В итоге появится список с пакетами, которые можно установит:
1.2. Русификация
Начнем с пакета, который позволит русифицировать Sublime Text. Он называется LocalizedMenu.
После завершения установки в меню Preferences появится новый пункт Languages. Открываем его и выбираем Русский (ru).
1.3. Подключение терминала
Следующим установим пакет под названием Terminus (можно также выбрать Terminal). Он позволит запускать терминал прямо в редакторе, а не в виде отдельного окна. В нем мы будем компилировать и запускать программы, работать с Git и файловой системой.
Попробуйте установить его самостоятельно по аналогии с LocalizedMenu.
1.3.1 Настройка для Windows
Далее настроим Terminus на то, чтобы он запускал терминал в папке, содержащей открытый в редакторе файл. Это очень удобно. Откроем конфиг с настройками через меню Настройки Package Settings → Terminus → Key Bindings.
Откроется двухпанельное окно, в правую панель которого необходимо скопировать и поместить следующий код:

[
    { 
        "keys": ["ctrl+alt+t"], "command": "terminus_open", "args": {
            "panel_name": "Terminus",
            "cwd": "${file_path:${folder}}"
        }
    }
]
Также настроим, чтобы запускался именно cmder (его мы установили в прошлой статье), а не терминал по умолчанию. Для этого опять идем в настройки Terminus, но уже запустим Settings. Снова откроется двухпанельное окно. Приведу полностью код, который у меня прописан в правой панели:

{
    "theme": "rippedcasts",

    "default_config": {
        "windows": "Cmder",
    },

    "shell_configs": [
        {
            "name": "Cmder",
            "cmd": ["cmd.exe", "/k", "G:\\Tools\\cmder_mini\\vendor\\init.bat"],
            "env": {},
            "enable": true,
            "platforms": ["windows"],
        },
    ],
}
Скопируйте его и поместите к себе, заменив мой путь до файла init.bat (он лежит в папке с cmder по адресу cmder_mini\vendor\init.bat), на свой.
Если вместо init.bat в папке отображается просто init, то значит в вашей операционной системе не настроено отображение расширений файлов. Выполните соответствующие настройки.
Сохраните и закройте окно.
Проверим терминал в действии, нажав Ctrl + Alt + t в Sublime Text. Если все сделано правильно, то он успешно запустится в виде отдельной панели внизу окна.
1.3.2 Настройка для macOs
Для масОS настройка плагина Terminus немного отличаются. Откроем конфиг с настройками: нажимаем на кнопку Sublime Text в левом верхнем углу, в открывшемся меню нажимаем на Preferences —> Package Settings —> Terminus —> Key Bindings.
Откроется двухпанельное окно, в правую панель которого необходимо скопировать и поместить следующий код:

[
   { 
       "keys": ["ctrl+shift+b"], "command": "toggle_terminus_panel", 
       "args": {
           "cwd": "${file_path:${folder}}"
       }
   }
]
Также настроим, чтобы запускался именно cmder, а не терминал по умолчанию. Для этого опять идем в настройки Terminus, но уже запустим Settings. Снова откроется двухпанельное окно. Далее вставьте в правое окно следующий код:

{
   "default_config": {
       "linux": null,
       "osx": null,
       "windows": "Command Prompt"
   },

   "shell_configs": [       
       {
           "name": "Cmder",
           "cmd": ["cmd.exe", "/k", "%CMDER_ROOT%\\vendor\\init.bat"],
           "env": {},
           "enable": false,
           "platforms": ["windows"]
       }       
   ],
}
Сохраняем и закрываем окно.
Проверим терминал в действии, нажав control + shift + b прямо в Sublime Text. Если все сделано правильно, то он успешно запустится в виде отдельной панели внизу окна.
1.4. Отображение кодировки файла
Полезной опцией является отображение кодировка у файла с нашим кодом. Для этого заходим в меню Настройки → Настройки и прописываем в правой панели правило "show_encoding": true.

{
	"show_encoding": true
}
После сохранения, кодировка должна появиться в правом нижнем углу окна в виде надписи UTF-8.
1.5. Настройка табуляции
Возможно, вы не замечали, но в разных программах (на разных компьютерах) размер табуляции может отличаться (где-то больше, где-то меньше). Он может быть — 2, 4 или 8 пробелов.
Если размер табуляции в Sublime Text равен четырем пробелам, то уже в браузере, например, на сайте github.com (его мы изучим в последующих статьях) он будет равен восьми пробелам (по умолчанию). Такие отступы выглядят гигантскими. Программисту может быть непривычным читать код с 8 пробелами. Для него это будет некомфортно.
Чтобы вам было понятнее, напишите в Sublime Text код из первой статьи, и сохраните его к себе на диск под именем MyFirstApp.java (без расширения *.java подсветка кода не сработает), например, по следующему пути D:\Java\StartJava\MyFirstApp.java.
Tab равен 4 пробела
Так этот код будет выглядеть на GitHub:
Tab равен уже 8 пробелов
Если вы внимательно посмотрите на код на картинке из редактора, то в нем можно увидеть точки и длинные тире. Одно тире — это символ одного таба; одна точка — символ одного пробела. Чтобы их отобразить, необходимо выполнить настройку.
Откройте файл настроек в меню Настройки → Настройки. Появится окно с двумя вкладками (слева настройки по умолчанию, справа — пользовательские). В правую вкладку добавьте строку "draw_white_space": "all", как показано ниже:

{
        "show_encoding": true,
        "draw_white_space": "all"
}
Не забудьте сохранить.
Большие отступы — это еще не все. Это полбеды. Есть проблема пострашнее, когда в коде смешивают пробелы и табуляцию.
Программист считает, что раз у него в программе размер таба равен 4 пробела (самый частый вариант), то нет никакой проблемы в том, чтобы иногда вместо таба ставить пробелы в одном и том же классе. Чтобы понять, к чему эта практика смешивания в итоге приведет, давайте посмотрим на следующий результат:
Код в Sublime Text
Код на GitHub
А казалось бы, ничто не предвещало беды! Форматирование кода на GitHub «поехало».
Теперь вернемся к нашим проблемным табам, которые портят форматирование. Отображать их следы мы научились, осталось привести форматирование к единому стилю — использовать всегда и везде только пробелы.
Проблема известная и решение для нее давно существует — это автоматическая конвертация табуляции в пробелы. Это когда вы нажимаете Tab, но вместо него появляются пробелы — очень удобно и безопасно. Этот способ гарантирует, что у вас форматирование в разных программах и на разных компьютерах останется без изменений.
Давайте сделаем такие настройки.
Откроем файл пользовательских настроек: Настройки → Настройки. Поместим в него два параметра: "translate_tabs_to_spaces": true и "tab_size": 4 (хоть данный параметр по умолчанию и так имеет значение 4, все же его явно укажем, чтобы все нужные настройки были на виду).

{
        "show_encoding": true,
        "draw_white_space": "all",
        "translate_tabs_to_spaces": true,
        "tab_size": 4
}
"tab_size": 4 — задает размер отступа для табуляции в 4 пробела.
"translate_tabs_to_spaces": true — преобразует табуляцию в пробелы.
Не забудьте сохранить файл настроек.
У кого-то может возникнуть следующий вопрос: «Я сделал все необходимые настройки, сохранил файл, вернулся к своему классу, а там ничего не изменилось: смесь пробелов с табуляцией (точек с длинными тире) никуда и не делась».
Внесенные нами настройки не преобразуют уже введенные табы в пробелы. Для такого преобразования в уже созданных классах, нужно нажать в правом нижнем углу на текст с надписью Spaces: 4, и преобразовать отступы (табуляцию) в пробелы:
Проделайте эту конвертацию со всеми вашими классами (если они есть).
Больше никогда и ни каких настроек, связанных с форматированием, вам делать не нужно!
Теперь в ваших классах должны быть только пробелы (точки). Длинных тире быть не должно!
Обратите внимание на зеленые стрелки, которые указывают на вертикальные линии-разделители. Справа и слева от такой линии всегда должно быть 4 пробела (4 точки).
1.6. Проверка правописания (обязательно настройте)
По умолчанию Sublime Text не проверяет правописание, но даже если его включить, оно будет работать только для англ. языка. Решить эту проблему можно, скачав дополнительные языковые пакеты Russian-English Bilingual.dic и Russian-English Bilingual.aff, а затем поместить их в специальную папку.
Перейдем в меню Настройки → Просмотр плагинов… Откроется папка Packages. Перекиньте файлы в папку User.
Теперь необходимо активировать саму проверку, добавив в наш файл с настройками "spell_check": true.
Для выбора словаря идем в меню Вид → Словарь → User → Russian-English Bilingual.
Проверка правописания заработает только после перезапуска Sublime Text.
При этом в настройках автоматически появится строка "dictionary": "Packages/Russian-English Bilingual.dic".

{
     "show_encoding": true,
     "draw_white_space": "all",
     "translate_tabs_to_spaces": true,
     "tab_size": 4,
     "spell_check": true,
     "dictionary": "Packages/Russian-English Bilingual.dic",
}
1.7. Создание сниппетов
Если вам рано или поздно надоест все время писать одни и те же строки кода, например, System.out.println(""); или все магические слова метода main, то вы обратитесь за помощью к сниппетам. Это небольшие фрагменты текста (шаблон), которые магическим образом превращаются в полноценный код. Это очень удобно и избавляет от рутинных действий.
Например, чтобы не писать System.out.println(""), мы можем создать сниппет, который по команде sout + Tab будет разворачиваться в System.out.println("").
Чтобы создать сниппет, перейдем в меню Инструменты → Разработчик → Новый сниппет…
Откроется файл с шаблоном. Заменим текст Hello, ${1:this} is a ${2:snippet}, на System.out.println("");. Затем добавим команду sout вместо hello в строке 6. При этом не забываем раскомментировать эту строку. Сохраняем файл, например, под именем sout.sublime-snippet.
Проверим, как работает наш сниппет, написав sout, а затем нажав Tab.
Попробуйте сами сделать сниппет для метода main (каждый сниппет будет храниться в отдельном файле).
1.8. Прочие настройки
  • "highlight_line": true — выделяет строку, на которой находится курсор
  • "indent_guide_options": ["draw_normal", "draw_active"] — отвечает за отображение отступа в виде вертикальной линии для блока, в котором находится курсор
  • "save_on_focus_lost": true — активирует автосохранение, которое срабатывает каждый раз при потере фокуса окна программы. Эта опция избавляет от ручного сохранения файлов (Ctrl + s)
  • "use_tab_stops": true — с этой настройкой, при нажатии Backspace, будет удаляться по несколько подряд идущих пробелов, как будто это символ табуляции. Вами не придется жать много раз Backspace, чтобы удалить каждый пробел
  • "rulers": [100] — устанавливает вертикальную черту-ограничитель, показывающую границу, за которую не должна выходить строка с кодом. Обычно длина строки не должна превышать 80 - 120 символов в длину. Я выбрал среднее значение
  • "remember_full_screen": true — если вы используете редактор в режиме полноэкранного просмотра (F11), то данный параметр позволяет его запомнить даже при выходе из программы (при условии, что он в нем находился, когда она была закрыта). При повторном запуске Sublime Text откроется в fullscreen-режиме
Файл со всеми настройками в итоге будет выглядеть так:

{
     "show_encoding": true,
     "draw_white_space": "all",
     "translate_tabs_to_spaces": true,
     "tab_size": 4,
     "spell_check": true,
     "dictionary": "Packages/Russian-English Bilingual.dic",
     "highlight_line": true,
     "indent_guide_options": ["draw_normal", "draw_active"],
     "save_on_focus_lost": true,
     "use_tab_stops": true,
     "rulers": [100],
     "remember_full_screen": true,
}
Если вам нужно видеть одновременно несколько файлов в Sublime Text, то окно редактора можно разделить на отдельные страницы (столбцы). Для активации этой фичи зайдите в меню Вид → Разделение экрана.
И последнее, если вы не хотите, чтобы интерфейс программы отвлекал вас от кодинга, то в Sublime Text можно включить отвлеченный режим, который скрывает все лишние элементы интерфейса. Активировать его можно по нажатию Shift + F11.
Автор: Чимаев Максим
Оцените статью, если она вам понравилась!