Sublime text подсветка ошибок

Время на прочтение
4 мин

Количество просмотров 118K

Всем привет. У Sublime Text 3 есть замечательный плагин Sublime Linter, который позволяет делать проверку кода на наличие синтаксических ошибок. Промучился я как-то с настройкой этого SublimeLinter, аж три дня. Но всё таки мои мучения прошли не зря и теперь Sublime на лету проверяет синтаксис в HTML, CSS, PHP и JS файлах. Вроде бы всё подробно расписано на различных форумах, а он в некоторых случаях не работает — и всё, хоть убей. Поэтому я и пишу эту статью, чтобы охватить всё и сразу.

image

ВНИМАНИЕ! Статья описывает настройку Sublime Text 3 (далее ST3) на Windows 7 x64 Professional.

Итак, поехали.

1. Представим что вы уже установили ST3 на свой Win 7 и установили Package Control.

2. Теперь необходимо поставить дополнительные пакеты в ST3. Идем в Preferences -> Package Control -> Install Packages
И устанавливаем следующие пакеты:

— SublimeLinter
— SublimeLinter-html-tidy
— SublimeLinter-csslint
— SublimeLinter-jsl
— SublimeLinter-jshint
— SublimeLinter-php
— SublimeLinter-phplint
— LESS
— JSHint

3. Настройка проверки ошибок синтаксиса HTML
3.1. Скачиваем tidy.exe и кладем его в любую понравившуюся вам папку.
3.2. Добавляем путь до этой папки! с tidy.exe в переменную серды пользователя windows (PATH), настройки которой, находятся в Мой компьютер -> Свойства -> Дополнительные параметры системы -> Переменные среды… -> Выбираем переменную «PATH» -> Жмем «Изменить» добавляем путь.
ВНИМАНИЕ! Обратите внимание на точку с запятой «;» после каждого пути и не забудьте её прописать, а так же обратите внимание на обратный слеш.

4. Настройка проверки ошибок синтаксиса CSS
4.1. Скачиваем и устанавливаем node.js
4.2. Добавляем путь до папки (до папки!) с node.js в PATH (путь примерно следующий: C:UsersUser_nameAppDataRoamingnpm )! Незабываем про точку с запятой.
4.3. Устанавливаем csslint. Для этого — запускаем командую строку Windows от имени админа и пишем: npm install -g csslint

5. Настройка проверки ошибок синтаксиса JavaScript
5.1. Если не делали пункты 4.1. и 4.2. — то делаем.
5.2. Устанавливаем jslint и jshint, для этого выполняем ту же самую операцию что и в пункте 4.3. только пишем вместо csslint — jslint и jshint соответственно.

6. Настройка проверки ошибок синтаксиса PHP
6.1. Вот с этиим вобще гемор. Лично я долго искал проблему, почему же не работает подсветка.
6.2. (UPDATE) Дело в том, что многие (в том числе и я) в качестве локального сервера ставят себе Denwer. И черт его знает почему (не вдавался в подробности), но PHP денвера не воспринимается ST3, хоть убей. Он может выводить ошибки PHP в консоль ST3, но подсветки синтаксиса так и не будет.
P.S. Я специально добавил этот пункт, т.к. на многих форумах пишут, что ставим PHP, настраиваем пакеты ST3 и будет вам счастье. Но счастья не происходит, т.к. пункт с установкой PHP обычно сразу опускается из-за надежды на работоспособность(пригодность) denwer-a.

6.3. Поэтому, сразу идем сюды и скачиваем PHP. Установка PHP — просто разархивируйте архив в любую папку и пропишите путь до этой папки в PATH (пункт 3.2.)
6.4. Если у вас был прописан в PATH путь до папки с PHP денвера, то обязательно удалите его.

7. Файл конфигурации SublimeLinter.sublime.settings

НЕОБХОДИМО ПОПРАВИТЬ ПУТИ К tidy.exe и php.exe

{
    "user": {
        "debug": true,
        "delay": 0.25,
        "error_color": "D02000",
        "gutter_theme": "Packages/SublimeLinter/gutter-themes/Circle/Circle.gutter-theme",
        "gutter_theme_excludes": [],
        "lint_mode": "background",
        "linters": {
            "csslint": {
                "@disable": false,
                "args": [],
                "errors": "",
                "excludes": [],
                "ignore": "",
                "warnings": ""
            },
            "hlint": {
                "@disable": false,
                "args": [],
                "excludes": []
            },
            "htmltidy": {
                "@disable": false,
                "args": [],
                "excludes": []
            },
            "jscs": {
                "@disable": false,
                "args": [],
                "excludes": []
            },
            "jshint": {
                "@disable": false,
                "args": [],
                "excludes": []
            },
            "jsl": {
                "@disable": false,
                "args": [],
                "excludes": []
            },
            "php": {
                "@disable": false,
                "args": [],
                "excludes": []
            },
            "phplint": {
                "@disable": false,
                "args": [],
                "excludes": []
            }
        },
        "mark_style": "outline",
        "no_column_highlights_line": false,
        "passive_warnings": false,
        "paths": {
            "linux": [],
            "osx": [],
            "windows": []
        },
        "python_paths": {
            "linux": [],
            "osx": [],
            "windows": []
        },
        "rc_search_limit": 3,
        "shell_timeout": 10,
        "show_errors_on_save": false,
        "show_marks_in_minimap": true,
        "sublimelinter": true,
        "sublimelinter_executable_map": {
            "css": "node",
            "html": "Z:\usr\bin\tidy.exe", //путь до вашей папки с tidy.exe, обратите внимание на двойные обратные слеши, они обязательны
            "php": "C:\Program Files\PHP_5.6\php.exe" //путь до вашей папки с php.exe
        },
        "syntax_map": {
            "css": "css",
            "html (django)": "html",
            "html (rails)": "html",
            "html 5": "html",
            "js": "js",
            "php": "php",
            "python django": "python"
        },
        "warning_color": "DDB700",
        "wrap_find": true
    }
}

8. Перезапускаем Sublime. Profit.

Еще! Бывает что некоторые забывают про режим debug mode у Sublimelinter. Чтобы его включить, жмем правой кнопкой мыши в любое место области редактирования ST3 -> SublimeLinter -> Debug Mode

Термин linting применяется для обозначения процесса обнаружения ошибок в исходных файлах программ, скриптов или документов. Программа такого рода должна иметься в инструментарии каждого разработчика, так как с помощью таких программ можно обнаруживать ошибки в процессе написания кода. Популярный редактор кода Sublime Text не имеет встроенных возможностей для обнаружения ошибок; однако такую ситуацию легко исправить.

При помощи linting‘а можно обнаруживать небольшие ошибки кода “на лету”, в процессе написания этого кода — например, пропущенную точку с запятой в JavaScript-коде. Возможность обнаружения ошибок в редакторе Sublime Text осуществляется с помощью плагина SublimeLinter, который необходимо установить прежде всего.

Если в какой-либо строке кода этот редактор обнаружит ошибку, то данная строка будет подсвечена в gutter редактора Sublime. Более того, если поместить курсор мыши в строку с ошибкой, то в status bar редактора Sublime Text отобразится краткое описание ошибки, что поможет принять меры для ее правильного устранения.

Ниже представлен наглядный пример подсветки ошибок в Sublime Text с помощью плагина SublimeLinter:

SublimeLinter

Плагин SublimeLinter сам по себе не выполняет процесса “отлавливания” ошибок в коде, так как является всего-лишь фреймворком, основой для других плагинов (linter), каждый из которых создан для обнаружения ошибок в каком-то определенном языке — JavaScript, PHP, Ruby, Python, HTML, CSS и так далее.

SublimeLinter в Sublime Text

Как уже упоминалось ранее, плагин SublimeLinter является фреймворком, основой для более маленьких плагинов (linter), которые осуществляют непосредственный поиск синтаксических ошибок в программном коде.

Поэтому первоначально необходимо установить этот фреймворк (как плагин) в редактор Sublime Text и самый простой способ это сделать — воспользоваться менеджером пакетов Package Control. Для этого нажимаем сочетание клавиш Shift+Ctrl+P (Linux Windows) или Shift+Cmd+P (Mac OSX). В поле поиска вводим название устанавливаемого пакета — SublimeLinter. Далее — производим установку.

Теперь необходимо определиться с тем, в каких языках программирования необходимо “отлавливать” ошибки. Другими словами, на каких языках программирования вы пишете и в каких из них вам необходима поддержка SublimeLinter.

Допустим, это серверный язык PHP. Тогда для включения возможности обнаружения ошибок в Sublime Text необходимо установить плагин Sublime​Linter-php, так же через менеджер пакетов Package Control. Стоит оговориться, что дополнительной зависимостью этого плагина является язык PHP, который предустановлен в операционных системах LinuxMacOSX, но который необходимо заранее установить отдельно в операционной системе Windows.

Примером работы связки Sublime​Linter + Sublime​Linter-php в редакторе Sublime Text может послужить нижеследующее изображение:

SublimeLinter PHP

Рассмотрим другой случай, когда в редакторе Sublime Text используется язык программирования JavaScript. Тогда для возможности отлавливания ошибок в JS-коде необходимо установить плагин Sublime​Linter-jshint. В этом случае вопрос зависимостей этого пакета выглядит несколько сложнее. Плагин Sublime​Linter-jshint основывает свою работу на JSHint, который необходимо установить в виде пакета под Node.js и устанавливается с помощью менеджера пакетов npm. Поэтому в операционной системе заранее должны быть установлены Node.js, npm и JSHint.

Примером работы плагина Sublime​Linter-jshint может послужить нижеследующее изображение:

Sublime​Linter JSHint

Рассмотрим еще один случай, когда в редакторе Sublime Text используется язык таблиц каскадных стилей CSS (куда же без него?). Тогда необходимо доустановить в Sublime Text плагин Sublime​Linter-csslint.

Рассмотрение подобных плагинов (linter) можно продолжать еще долго. Поэтому ограничимся только тремя вышеприведенными. Стоит сказать, что для поиска какого-либо конкретного плагина (linter) удобно воспользоваться online-сервисом Package Control, в поисковой строке которого достаточно ввести начало названия искомого пакета, например, так — “SublimeLinter-“. Система автоматически выдаст список все плагинов под фреймворк SublimeLinter.

Как нетрудно заметить, окончание (суффикс) в названии каждого из плагинов является подсказкой, для поддержки какого языка был создан этот плагин. Например, для языка Ruby существует плагин Sublime​Linter-ruby, для препроцессора Haml имеется плагин Sublime​Linter-haml.

Также стоит сказать, что необходимо внимательно читать описание к каждому из тех плагинов, которые планируется установить, так как каждый из них имеет разные зависимости. Наглядный пример зависимостей у плагинов Sublime​Linter-php и Sublime​Linter-jshint был приведен выше.

Настройка SublimeLint

В плагине SublimeLint имеется большое количество настроек. Однако, с большинством из них не составит труда разобраться. Ниже приведено краткое описание некоторых из них.

Linting Modes

Эта настройка отвечает за поведение плагина SublimeLinter — когда плагин должен оповещать об обнаруженной ошибке в коде программы или документа.

  • Background — это поведение по умолчанию плагина SublimeLinter. Сообщения об обнаруженных ошибках будут появляться по мере их обнаружения (другими словами — по мере написания строк кода) и будут обновляться каждый раз, когда будет производиться исправление обнаруженных ошибок. Такой режим может показаться излишне назойливым, так как иногда сообщение об ошибке может появиться прежде, чем будет дописана до конца инструкция, в которой вкралась ошибка.
  • LoadSave — в этом случае сообщения об ошибках будут отображаться плагином только после сохранения или загрузки сохраненного документа.
  • Save Only — сообщения об обнаруженных ошибках будут отображаться только при сохранении документа.
  • Manual — ручной вызов проверки на ошибки, из командной панели редактора Sublime Text.

Лично я предпочитаю режим LoadSave, так как в этом случае плагин SublimeLinter не мешает работать с кодом до тех пор, пора не будет выполнено сохранение этого кода в файле. Режим Background может показаться излишне назойливым, так как сообщения об ошибках будут появляться постоянно, мешая работе.

Для того, чтобы изменить поведение плагина SublimeLinter через настройку Linting Modes, необходимо зайти в командную панель редактора Sublime Text с помощью сочетания клавиш (Shift+Ctrl+P или Shift+Cmd+P) и ввести в строке поиска следующее:

sublimelinter lint mode

… откроется выпадающий список со всеми настройками плагина SublimeLinter, из которого необходимо выбрать SublimeLinter: Choose Lint Mode:

SublimeLinter Lint Mode

Mark Style

Настройка Mark Style отвечает за внешний вид выделения ошибки в строке кода. Значением по умолчанию является outline. Но можно выбрать любое другое значение из предустановленных настроек.

В соответствии с официальной документацией SublimeLinter имеются несколько вариантов выделения ошибок в строке кода:

  • fill
  • outline
  • solid underline
  • squiggly underline
  • stippled underline

Аналогично с режимом Linting Modes, режим Mark Style настраивается через командную панель редактора Sublime Text — Shift+Ctrl+P (Linux Windows) или Shift+Cmd+P (Mac OSX). В выпадающм списке нужно выбрать строку Sublime Linter: Choose Mark Style.

Ниже представлены скриншоты всех пяти режимов выделения ошибок в строке, чтобы можно было сравнить и выбрать наиболее подходящий вариант.

Fill

Mark Style Fill

Outline

Mark Style Outline

Solid Underline

Mark Style Solid Underline

Squiggly Underline

Mark Style Squiggly Underline

Stippled Underline

Mark Style Stippled Underline

Gutter Themes

В дополнение к настройке выделения ошибок в строке кода, можно выполнить настройку иконок, который помещаются в области gutter редактора Sublime Text напротив строки с обнаруженной ошибкой. Такое выделение строки служит для большей информативности.

В плагине SublimeLinter имеется набор предустановленных иконок, наглядное изображение которых представлено ниже.

Blueberry – cross

SublimeLinter Gutter Blueberry Cross

Blueberry – round

SublimeLinter Gutter Blueberry Round

Circle

SublimeLinter Gutter Blueberry Circle

Danish Royalty

SublimeLinter Gutter Danish Royalty

Hands

SublimeLinter Gutter Hands

Knob – simple

SublimeLinter Gutter Knob Simple

Knob – symbol

SublimeLinter Gutter Knob Symbol

Koloria

SublimeLinter Gutter Koloria

ProjectIcons

SublimeLinter Gutter Project Icons

Изменить настройки отображения иконок можно, зайдя в командную панель редактора Sublime Text и выбрав в выпадающем списке строку Sublime Linter: Choose Gutter Theme.

Заключение

Плагин SublimeLinter является очень мощным и гибким, а количество поддерживаемых им язык — очень большое. Вы можете посетить страницу поддерживаемых языков, чтобы убедиться в богатом выборе поддерживаемых языков программирования, разметки и многих других.

Рассмотренные в этой статье возможности плагина SublimeLinter являются далеко не исчерпывающими. На официальной странице документации вы всегда найдете для себя что-то новое. Для этого нужно только периодически просматривать эту документацию.


Текстовой редактор Sublime Text 3 позволяет проверять программистам и верстальщикам код на наличие ошибок в css, JavaScript, php и т.д. Если вы где-то ошиблись, то на соответствующей строчке высветится ошибка.

Программы для проверки ошибок называются линтерами.

Установка SublimeLinter

Для того, чтобы была возможность проверки кода надо установить из Package Control пакет SublimeLinter.

После установки SublimeLinter появится возможность устанавливать отдельные компоненты, которые и позволят задействовать эти инструменты.

Установка SublimeLinter-jshint

SublimeLinter-jshint — позволяет увидеть ошибки в коде на JavaScript.

Ссылка на инструкцию:
https://github.com/SublimeLinter/SublimeLinter-jshint

Краткая инструкция

1. Перед установкой компонентов на компьютере должен быть установлен Node.js.

2. Открываем Терминал. Пишем команду:

sudo npm install -g jshint

3. В Sublime Text 3 открываем установку пакетов и пишем SublimeLinter-jshint. Нажимаем на него, пакет установлен. Теперь если возникнет ошибка в JavaScript коде, вы сразу об этом узнаете.

В конце 14 строчки «забыта» запятая, слева на полях появились красные маркеры. Внизу сообщение об ошибке.

Установка SublimeLinter-csslint

SublimeLinter-csslint — показывает ошибки в CSS коде.

Ссылка на инструкцию:
https://github.com/SublimeLinter/SublimeLinter-csslint

Краткая инструкция

1. Точно также должен быть установлен Node.

2. В Терминале запускаем команду:

3. В Sublime Text 3 устанавливаем пакет SublimeLinter-csslint.

Уведомление об ошибках в коде css.

Как видно на картинке выше показываются не только ошибки, но и рекомендации. Например, SublimeLinter-у не нравится, что используется описание стиля для идентификатора, а не для стиля.

Установка SublimeLinter-php

Пакет для проверки ошибок в PHP коде.

Ссылка на инструкцию:
https://github.com/SublimeLinter/SublimeLinter-php

Краткая инструкция

1. На компьютере должен быть установлен PHP. Возможно он уже установлен у вас, например, вместе с MAMP PRO. Если не установлен, по ссылке выше, есть ссылка на дистрибутивы.

2. В Sublime Text 3 устанавливаем пакет SublimeLinter-php.

Если ничего не заработало

После установки перезапустите программу Sublime Text 3.

Sublime Lint

A framework for error highlighting in the Sublime Text editor.

It’s easy to add language support. Take a look at the linter repository for examples.

Linters in your Sublime Text User/linters folder will be automatically used. Changes to linters in this folder will be overwritten on automatic update. If you want to change a builtin linter, disable it in the Sublime Lint preferences and copy the source to a new file/class name.

You can also import Linter and subclass it inside plugin_loaded() from any other Sublime plugin.

Installation

You can install in ST3 by adding this repository to Package Control, which does automatic updates.

Alternatively, you can clone sublimelint into your Packages folder and switch to the st3 branch manually, but you will need to update manually.

Usage

Make sure you have the necessary command installed to lint your language — there’s a list in the linter repository README.

It will lint as you edit any file in a supported language. Check the status bar for messages, and take a look at the SublimeLint commands in the Command Palette.

There’s a current bug that makes it sometimes take a few seconds to start linting upon an editor restart. Be patient.

Command Palette

Press cmd+shift+p on OS X, ctrl+shift+p for everyone else. Type sublimelint to see the available commands:

  • Next Error — Jump to the next highlighed error or warning in your code.
  • Previous Error — Jump to the previous error.
  • Show All Errors — Open a command panel listing all errors in the current file.
  • Report (Open Files) — Lint all open files and show a report in a new view.
  • Preferences: SublimeLint Settings — User — Change global and linter settings.

Settings

You can change a few useful per-language settings by opening «SublimeLint Settings — User» via the Command Palette. Some languages (like C and C++) have additional linter-specific settings.

Example language settings:

"Ruby": {
    // This command is run against your code.
    // Some linters use a temporary file, while others pipe code to stdin.
    "cmd": ["ruby", "-wc"],
    // Disable the linter.
    "disable": false,
    // Exclude file patterns from being linted.
    "excludes": ["Rakefile", "*.blah"]
}

Asked
11 years, 6 months ago

Viewed
41k times

In Sublime text 2 when I make an error like forget a ; or add an extra closing or opening tag there is no highlighting that tells me that I have made a mistake. Only after running the code will I know that a mistake was made. Is this normal for Sublime Text 2 or is it just me? If this is normal, is there any extension to fix this?

  • sublimetext2

Yi Jiang's user avatar

Yi Jiang

49.3k16 gold badges136 silver badges135 bronze badges

asked Nov 13, 2011 at 14:12

halliewuud's user avatar

halliewuudhalliewuud

2,7356 gold badges28 silver badges41 bronze badges

2 Answers

I use SublimeLinter which highlights potential errors in a number of languages when you save a file.

Gábor Imre's user avatar

Gábor Imre

5,8292 gold badges35 silver badges48 bronze badges

answered Dec 16, 2011 at 0:36

maxbeatty's user avatar

maxbeattymaxbeatty

9,0103 gold badges33 silver badges36 bronze badges

1

  • for this to work,you first have to install SL,then php library on your system(written in the docs).. is there any simple package that marks error on the go,without having to do to much.something like php storm..

    Aug 24, 2014 at 16:14

answered May 27, 2015 at 14:40

alvarodoune's user avatar

alvarodounealvarodoune

92110 silver badges13 bronze badges

  • The Overflow Blog
  • Featured on Meta

Related

Hot Network Questions

  • Theoretical Approaches to crack large files encrypted with AES

  • Can I use my degree GPA on my resume?

  • Why does bunched up aluminum foil become so extremely hard to compress?

  • Running AC with dye permanently

  • Is it OK to pray any five decades of the Rosary or do they have to be in the specific set of mysteries?

  • How does TeX know whether to eat this space if its catcode is about to change?

  • Ways to find safe route in flooded roads

  • How can I repair this rotted fence post with footing below ground?

  • Diagonalizing selfadjoint operator on core domain

  • What if the numbers and words I wrote on my check don’t match?

  • Is it possible for rockets to exist in a world that is only in the early stages of developing jet aircraft?

  • First app with JS in OOP

  • Changing Landscape

  • Why are mountain bike tires rated for so much lower pressure than road bikes?

  • Why doesn’t SpaceX sell Raptor engines commercially?

  • Insufficient travel insurance to cover the massive medical expenses for a visitor to US?

  • Decidability of completing Penrose tilings

  • What maths knowledge is required for a lab-based (molecular and cell biology) PhD?

  • Complete the landscape

  • How much of the power drawn by a chip turns into heat?

  • Why are distant planets illuminated like stars, but when approached closely (by a space telescope for example) it’s not illuminated?

  • How to divide the contour to three parts with the same arclength?

  • Why wouldn’t a plane start its take-off run from the very beginning of the runway to keep the option to utilize the full runway if necessary?

  • Does substituting electrons with muons change the atomic shell configuration?

more hot questions

Question feed

Your privacy

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Понравилась статья? Поделить с друзьями:
  • Surgeon simulator 2 ошибка аутентификации authentication
  • Sublime text ошибка при установке плагинов
  • Surface type cover ошибка драйвера
  • Subaru ошибка датчика детонации
  • Sur ron коды ошибок