Разное

Редактор с подсветкой синтаксиса: Notepad++ — бесплатный Html и PHP редактор с подсветкой синтаксиса, обзор возможностей и лучшие плагины для Нотепада++

Содержание

Notepad++ — бесплатный Html и PHP редактор с подсветкой синтаксиса, обзор возможностей и лучшие плагины для Нотепада++

Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Уже очень давно хотел написать про замечательный бесплатный редактор Notepad++ (ссылка ведет на официальный сайт, где можно скачать последнюю версию с поддержкой русского языка).

Уже на протяжении многих лет он является одной из самых востребованных и используемых мною программ для редактирования Html, CSS и PHP кода. Даже удивляюсь: «а как я раньше обходился без него, реализуя его потенциал с помощью каких-то других программ?».

Сейчас у меня на компьютере всегда одновременно запущена пара браузеров, очень простой, бесплатный и удобный ФТП менеджер FileZilla и этот самый редактор, возможности которого просто несравнимы с используемым в Windows по умолчанию блокнотом. Но обо все по порядку.

Скачивание и возможности редактора Notepad ++

Скачать Нотепад++ на русском можно прямо с официального сайта разработчика, причем, в комплект входит поддержка нескольких десятков языков, включая и русский.

Установка программы в Windows осуществляется совершенно обычным способом. Так же при желании можете скачать Notepad ++ Portable, представляющий из себя портативную версию этого редактора, не требующую установки в операционную систему.

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

Все плюсы редактора Notepad++

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

Начав же пользоваться Нотепадом с двумя плюсами, хотя бы для корректировки Html и CSS файлов, вы сразу попадете из каменного века в кабину современной землеройной машины. Есть, конечно же, и другие альтернативные программы и даже онлайн Html редакторы, но для новичка «блокнот с двумя плюсами» будет самое то (имхо).

Да, конечно же, поначалу использование его может показаться замысловатым и нетрадиционным. Но это только в самом начале знакомства, а потом вам будет так же сложно обходиться без него, как, например, многие пользователи компьютера не мыслят свою жизнь без файлового менеджера Total Commander (тоже своего рода «классика»).

Если сравнивать Notepad ++ с более сложными программами, предназначенными для облегчения написания и редактирования различных кодов, таких, например, как Dreamweaver, то и тут найдется не мало аргументов для использования именно нашего героя:

  1. Во-первых, он абсолютно бесплатный, а значит вы сможете существенно сэкономить, используя его вместо того же Dreamweaver, если не брать в расчет взломанных версий платных программ (которые вполне могут быть рассадником троянов и других вирусов).
  2. Во-вторых, Нотепад намного более легкий и быстрый, нежели многие из платных редакторов. Кроме того, имеется возможность использовать вообще не устанавливая его в операционную систему Windows (так называемая портативная версия — портабл) и носить его, допустим, на флешке, поставив на нее пароль. В результате вы всегда будете иметь под рукой удобный, функциональный и хорошо понятный вам инструмент для работы с Html, PHP и несколькими десятками других разновидностей кода.

Почему именно это редактор стоит скачать?

Давайте вкратце пробежимся по его возможностям и особенностям, а потом попробуем их рассмотреть более подробно. Итак, Notepad++ умеет следующее:

  1. Подсвечивать несколько десятков наиболее популярных языков программирования и разметки, например, такие как: Ada, Assembler, C, C#, C++, CSS, FORTRAN, HTML, Java, JavaScript, Objective-C, Pascal, Perl, PHP, Python, Ruby, SQL, XML.
  2. Для всех этих языков осуществляется подсветка синтаксиса, разбиение кода на строки и блоки, которые можно свернуть нажатием на минус и развернуть, нажав на плюс. А так же пунктиром можете отображаться связь между элементами. Для примера я взял фрагмент PHP кода, чтобы продемонстрировать возможности этого редактора:

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

  3. В нем очень просто осуществить смену кодировки, например, на являющуюся сейчас популярной UTF-8 без BOM, о которой я рассказывал в статье, посвященной борьбе с кракозябрами в кодировках русского языка (см. ее по ссылке).
  4. В одном окне программы можно будет открывать на редактирование сколько угодно файлов, ибо Notepad++ использует вкладки на манер тех, к которым вы уже успели привыкнуть в современных браузерах.

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

  5. С помощью этого редактора можно вести поиск (Ctrl+F) как по открытому в нем документу, так и по целому сонму текстовых файлов, лежащих в определенной папке. Возможен поиск с заменой и с использование регулярных выражений. Потрясающе удобный инструмент.
  6. В настройках этого редактора можно включить автоматическое прописывание закрывающего Html тега, при наборе открывающего, а так же опцию автозавершения тегов.
  7. Нотепад++ не только ведет историю всех ваших изменений и позволяет откатиться на сколько угодно шагов назад или вернуться вперед, но и осуществляет резервное хранение копий этих документов на манер того, как это делает Микрософт Ворд.
  8. Этот редактор имеет возможность управления горячими клавишами, которых в нем задано великое множество — из верхнего меню «Опции» — «Горячие клавиши». Причем, при двойном щелчке мышью по интересующей вас комбинации откроется окно для переназначений клавиш, что может быть удобно тем, кто на Notepad пересаживается с другого редактора.
  9. Нотепад за годы своего существования обзавелся массой плагинов, некоторые устанавливаются с ним по умолчанию, а остальные будут доступны для вас из верхнего меню «Плагины» — «Plagin Manager» — «Show Plagin Manager».

    Для установки вам достаточно будет на первой вкладке поставить галочку у нужного плагина и нажать на кнопку «Install».

    После этого окно редактора перегрузится и новый плагин будет доступен в одноименной вкладке:

    В приведенном примере мы добавили в Notepad++ встроенный менеджер файлов, панель которого откроется слева при нажатии Alt+A или выборе из меню «Плагины» — «Light Explorer».

  10. Еще этот «швейцарский нож» умеет подключаться к вашему сайту по ФТП, записывать и воспроизводить макросы, осуществлять проверку орфографии на лету, проводить сравнение двух файлов в открытых рядом окнах и многое — многое другое.

Что вам еще может понадобиться в Нотепад ++

Давайте будем считать, что я вас заинтересовал, и рассмотрим подробнее возможности, которые может нам предоставить Блокнот с двумя плюсами.

  1. Благодаря подсветке синтаксиса в Notepad ++ очень легко, например, проверить, закрыты ли все Html теги в коде, а при наличии минимального опыта вы уже визуально будете отмечать, что в коде у вас где-то была допущена ошибка, ибо изменится цветовое оформление кода в этом месте.
  2. Так же, из-за того, что код выделяется цветом, а обычный текст моих статей остается черным, моему неизменному корректору грамматических ошибок (любимой супруге) очень удобно осуществлять проверку грамматики именно в нем. Нет, кончено же, я использую и различные онлайн сервисы грамматики, но не одни из них еще не умеет проверять пунктуацию, да и смысловые ошибки тоже.
  3. Еще мне в этом текстовом редакторе очень нравится возможность наглядного отображения отдельных блоков кода с помощью подсветки скобок вида { } [ ] ( ). Когда курсор мыши находится между какими-либо скобками, то они подсвечиваются, как бы выделяя начало и конец блока Html или PHP кода.
  4. Кроме отличной реализации подсветки следует отдельно отметить возможность сделать шаг назад (отменить предыдущее действие). Причем количество шагов назад не ограничено, что позволяет не бояться экспериментировать с кодом без риска необратимых последствий.

    Отмена действия в Notepad++ возможна с помощью горячих клавиш Ctrl+Z (Ctrl+Y — шаг вперед, т.е. отмена произведенной отмены), с помощью соответствующих пунктов меню «Правка» или же с помощью кнопок в виде загнутых стрелочек на панели инструментов этого редактора.

  5. Нотепад++ постоянно отслеживает состояние открытых в нем документов и в случае их изменения или удаления, например, в другой программе, вам будет показано окно с предложением закрыть данную вкладку с документом или же повторно подгрузить ее измененную версию.
  6. Как я уже ранее упоминал, в блокноте с двумя плюсами имеется возможность настройки подсветки синтаксиса (а так же десятка других языков) под свои вкусы и нужды, но я этой опцией ни разу не пользовался, ибо вполне устраивают настройки, принятые по умолчанию.

    Но вам никто не мешает это сделать, благо что все предельно просто — выбрать из верхнего меню пункты «Опции» — «Определение стилей», в результате чего откроется окно, где вы сможет сами тонко настроить шрифты и цвета для подсветки Html, PHP или любого другого нужного вам языка.

  7. Так же в Notepad++ имеется возможность автоматического завершения набираемого вами слова, что может быть очень удобно, если вы не уверены в правильности написания того или иного оператора Html, PHP или любого другого кода. Для этого вам при наборе достаточно нажать сочетание клавиш Ctrl-Пробел и выбрать из открывшегося окна нужный вариант:

    Если хотите сделать автозавершение кода автоматическим, без использования горячих клавиш, то нужно будет выбрать из верхнего меню «Опции» — «Настройки» и на вкладке «Резерв/Автозавершение» поставить галочку в поле «Включить для каждого ввода».

  8. Очередной примочкой, которая кажется мне довольно удобной в этом редакторе, является возможность перетаскивания ярлыков документов прямо в окно программы для их открытия (хотя этим вряд ли можно кого-то удивить) и возможность перетаскивать в самом документе выделенный фрагмент кода (левой кнопкой мыши) в нужное вам место.
  9. При работе с Notepad++ у вас будет возможность ставить маркеры, которые в нем обзываются заметками, но суть от этого не меняется. В нужной вам строке можете поставить на левом поле щелчком мыши маркер в виде синей точки.

    Для установки маркера (заметки) в редакторе так же можно воспользоваться сочетанием клавиш Ctrl-F2, а для перемещения между проставленными в документе маркерами достаточно будет последовательно нажимать F2 или Shift-F2 для листания заметок в обратную сторону.

  10. Если вы работаете в этом редакторе с Html файлом, то можете посмотреть как будет выглядеть ваш код в браузере FireFox или IE посредством выбора соответствующих пунктов меню «Запуск». Если нужен другой браузер, то выбираете верхний пункт «Запуск» и отыскиваете в открывшемся окне нужный вам экзешник.

  11. Так же имеется возможность записи макросов, которые мне еще не доводилось создавать, но логика их работы довольно проста. Сначала вы записываете его, выбрав из меню редактора пункты «Макросы» — «Старт записи», а затем вставляете записанные макросы в нужное место кода, выбирая их из меню редактора или же воспользовавшись назначенными для них горячими клавишами.

Кодировки и работа с файлами в окне редактора Нотепад++

  1. Следует отметить, что этот редактор кода позволяет сохранять и преобразовывать файлы Html, PHP и другие в кодировку UTF-8 (без BOM). Мне это не раз помогало побороть проблему с русской кодировкой при работе с различными сайтами.

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

    После того, как исходный файл был преобразован в кодировку UTF-8 (без BOM), кракозябры с успехом трансформировались в обычные русские символы. Т.о. если вы добавляете кириллицу в какие-либо файлы движка, то для ее правильного отображения на сайте нужно будет либо сразу его сохранять в правильной кодировке, либо потом преобразовывать.

    Следует сказать, наверное, пару слов про этот самый BOM. Дело в том, что когда вы работаете с разными текстовыми объектами в обычном блокноте Windows, то при сохранении его в кодировке UTF-8 происходит добавление невидимых символов (BOM), которые могут сказаться впоследствии на работоспособности данного файла (например, PHP может выдавать ошибку).

    Поэтому настоятельно рекомендую не работать с кодировкой UTF-8 в стандартном блокноте, а использовать для этого Notepad++.

  2. Если вы захотите распечатать содержимое открытого файла, то на печать будет выведен код не в том виде, в каком вы его наблюдаете в окне программы. Но выбрав из меню «Опции» — «Настройки» вкладка «Печать» вы вольны будете это изменить и выбрать вариант печати подсветки кода цветом, разрешить отображать номера строк, колонтитулы и т.п. вещи:
  3. В этом продвинутом текстовом редакторе так же имеется возможность открывать сколь угодно много новых документов, не опасаясь, что вы тем самым захламите панель задач операционной системы. В унисон с современными браузерами, он будет открывать все новые документы не в новом окне программы, а в новой вкладке уже открытого окна.

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

    Ну, и в зависимости от сделанных настроек («Опции» — «Настройки») все открытые перед закрытием Notepad ++ вкладки будут восстановлены при очередном запуске программы (опять же аналогично работе браузеров). Закрывать ненужные можно двойным кликом по ним или размещать их вертикально.

  4. Кроме привычных операций с вкладками, в этом редакторе можно будет открыть в одном окне сразу две копии одного и того же документа. Это может понадобиться, если нужно проводить работу с документом в разных его частях (где-то посмотреть или скопировать, а куда-то вставить).

    Для активации этого режима вам будет достаточно щелкнуть правой кнопкой мыши по нужной вкладке PHP редактора и выбрать из контекстного пункт «Дублировать в Другом окне».

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

  5. Так же в нем мне очень нравится встроенный поиск по открытым Html или PHP документам с возможностью замены (некоторые активно используют для этого регулярные выражения, но я к своему стыду их не знаю). Все богатство поиска в этом продвинутом текстовом редакторе можно оценить, просто открыв пункт меню «Поиск». Скриншот смотрите в начале статьи.

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

Использование плагинов в Notepad++

Напомню, что для установки нового плагина вам достаточно будет выбрать из верхнего меню редактора «Плагины» — «Plagin Manager» — «Show Plagin Manager».

А в открывшем окне на первой вкладке (из верхнего меню) поставить галочку у нужного плагина и нажать на кнопку «Install».

После этого окно редактора перегрузится и новый плагин будет доступен в одноименной вкладке. В общем, все проще некуда.

Какие плагины для Нотепада вам могут понадобиться в работе

  1. Очень много дополнительных и удобных примочек предоставляет плагин «TextFX», который после установке будет доступен в одноименном пункте верхнего меню редактора. Если у вас еще такого пункта нет, то зайдите в «Плагины» — «Plagin Manager» — «Show Plagin Manager», прокрутите список в первой вкладке вниз и поставьте галочку напротив TextFX Character.

    После его установки редактор перегрузится и в меню появится новый пункт TextFX с множеством выпадающих подпунктов. Например, активация показанной на рисунке опции сильно может облегчить вам жизнь при редактировании или написании Html кода:

    В этом случае, как только вы введете в текстовом редакторе Notepad++ открывающий Html тег, рядом с ним тут же появится парный ему закрывающий тег. На лицо сильная экономия времени и существенное снижение вероятности ошибки из-за незакрытого тега. Однако, меня эта штука раздражает и я ее не использую. Но это нисколько не умоляет ее достоинства.

    Примочек в «TextFX» довольно много, поэтому попробуйте их работу на практике сами и определитесь что именно вам будет удобно и полезно.

  2. Ну, и продолжая тему вкладок в редакторе стоит упомянуть еще о возможности сравнения двух документов. Сначала этот плагин нужно будет установить через Plagin Manager:

    Для активации режима сравнения документов в Notepad++ вам будет достаточно выбрать из верхнего меню пункты «Дополнения» — «Compare» — «Compare» или нажать Alt+D на клавиатуре. В результате в окне этого блокнота будет открыта активная в данный момент вкладка, а так же вкладка расположенная рядом с ней.

    Для удобства сравнения двух Html или PHP документов, редактор Notepad ++ подсветит для вас различия в них. Для перехода в обычный режим работы с документами нужно в верхнем меню выбрать пункты «Дополнения» — «Compare» — «Clear Results» или нажать Ctrl+Alt+D на клавиатуре.

    Причем, два документа в окне Notepad++ можно будет просматривать как в вертикальном, так и в горизонтальном виде. Для выбора наиболее удобного для вас способа щелкните правой кнопкой по месту их раздела и выберите направление поворота (вправо или влево).

  3. Кстати, если вы, как и я, в основном используете Notepad++ для редактирования Html или PHP файлов своего сайта, то вам может пригодиться возможность подключаться к нему по FTP напрямую из этого текстового редактора. Мне, правда, как то работа с FileZilla больше по душе, тем более что даже из нее у меня пароли увести умудрились.

    Если вы хотите попробовать работу по FTP через Нотепад, то выберите из верхнего меню пункты «Плагины» — «NppFTP» — «Show NppFTP Window», в результате чего справа откроется окно FTP клиента.

    Для настройки подключения по FTP щелкните по иконке шестеренки, выберите пункт «Profile Setting» и введите данные вашего подключения. Дальнейшая работа мало чем отличается от того, что я писал в статье про FileZilla, которая живет здесь.

  4. Если вы установите плагин Customize Toolbar с помощью Plagin Manager, то получите возможность перетасовать, удалить или добавить новые кнопки на панель инструментов этой программы.
  5. В начале статьи я упоминал Light Explorer, который добавляет возможность открытия в левой колонке менеджера файлов. Однако, для этой же цели можно использовать и Explorer, который вы найдете в менеджере плагинов.
  6. Отличный плагин WebEdit, позволяющий по аналогии с Html редактором Вордпресса обрамлять текст наиболее востребованными тегами заголовков, списков, таблиц и других. Выделяете нужный фрагмент и щелкаете по одной из кнопок на панели инструментов Notepad++.
  7. ImgTags — позволяет вставить картинки в виде Html тега IMG с уже прописанными горизонтальным и вертикальным размером (сам их вычисляет, что очень здорово), заготовленным атрибутами ALT и SRC (нужно будет туда еще добавить путь до папки с картинками на вашем сервере).

Проверка правописания окне в Нотепад++ с помощью плагинов

  1. Для подключения проверки грамматики русского языка в редакторе Notepad ++ используется плагин Shell-Checker (из пункта меню «Плагины»), для работы которого вам потребуется скачать словарик русского языка с этой страницы, а при активации данного плагина проверки орфографии — указать путь на вашем компьютере до файла словаря.

    Есть нюансы установки. Сначала нужно будет скачать Full installer, а потом файлик с русским словарем aspell-ru-0.50-2-3.exe. Сначала ставите полный установщик, в мастере которого, лично я, не менял выбранный по умолчанию путь (c:\Program Files (x86)\Aspell\).

    Потом ставите языковой пакет, где сначала в досовском окне придется вводить буковку «y» и нажимать Enter на клавиатуре (хотя, возможно это было только у меня, т.к. я уже ставил GNU Aspell на компьютер до этого):

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

    Теперь перезагружаете Notepad ++ и либо выбираете из меню показанные чуть выше пункты, либо удерживаете на клавиатуре нереальную комбинацию CTRL+ALT+SHIFT+S. В открывшемся окне вы должны будете ввести путь до каталога BIN из папки Aspell:

    Если при установке GNU Aspell и русского словаря путь вы не меняли, то сюда надо будет вставить:

    c:\Program Files (x86)\Aspell\bin\

    Ну, или что-то подобное, в зависимости от вашей операционной системы. Все, теперь выделяйте тот текст, в котором вы хотите проверить орфографию, и жмите на CTRL+ALT+SHIFT+S (в настройках горячих клавиш эту комбинацию можно будет сменить — смотрите выше). Появится окно где будет отображена первая найденная ошибка:

    Можно ее будет проигнорировать, либо выбрать подходящую замену из предлагаемых вариантов. Внизу можно сменить язык проверки, если вы установили несколько языковых модулей GNU Aspell. Вот и все.

  2. DSpellCheck — очень удобное решение на манер предыдущего плагина, ибо в нем тоже используется GNU Aspell и его русский словарь, но вот проверку орфографии он уже делает налету, так же как и во всех современных браузерах. Заходите в менеджер плагинов и устанавливаете его.

    Сразу же по умолчанию включится проверка грамматики (отключается она снятием галочки показанной на скриншоте), но подключен будет модуль только с английским языком, поэтому мы идем в настройки DSpellCheck и вносим изменения.

    Выбираем из выпадающего списка Aspell (если он у вас еще не установлен, то прокрутите чуток вверх эту статью и загрузите модуль вместе с русским языковым пакетом, чтобы установить их в вашу ОС), а чуть ниже указываете путь до файла aspell-15.dll. Еще чуть ниже выбираете язык подключаемого словаря, если вы их ставили несколько, и жмете на Apply.

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

Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru

Использую для заработка

Рубрика: Лучшие программы

Редактор с подсветкой кода. Проблемы и решения / Хабр

Большая часть аудитории Хабра регулярно пишет код. В текстовом редакторе или IDE. И сколько бы не было в нем окошек и менюшек, а сердце любого редактора — это компонент (widget), который редактирует и подсвечивает код.

Больше года назад на Хабре был цикл статей от namespace про компонент QScintilla (1, 2, 3), и моя статья с его критикой. Получилась некоторая недосказанность. Ясно, что все плохо, но не понятно, что делать.

Сейчас я написал свой велосипед компонент под названием Qutepart, и у цикла есть продолжение.

Эта статья расскажет о том, как устроена подсветка синтаксиса в моем проекте: какие проблемы возникали, и как они решались. Она про подходы, а не про специфику конкретного GUI-инструментария. Если интересно заглянуть «под капот» текстового редактора, добро пожаловать под кат.


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

Мотивация

Я делаю текстовый редактор в духе vim и emacs. Универсальный, кроссплатформенный, расширяемый, ориентированный на опытных пользователей. Но с чуть более интуитивным и современным GUI на PyQt. И для этого мне нужен редактор кода.
Вариантов нашлось всего 2: QScintilla и katepart.
Изначально я использовал QScintilla, но из-за недостатков, перечисленных здесь, решил от него отказаться.
katepart очень хорош, но не устраивает тем, что зависит от библиотек KDE. А иметь их в зависимостях не очень удобно, особенно для Windows и MacOS.

Разбор кода

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

Для каждого из поддерживаемых языков программирования в katepart существует Highlight Definition — XML-файл с описанием синтаксиса и подсветки.

Highlight Definition описывает нечто вроде конечного автомата. Автомат последовательно разбирает текст, меняя при этом свое состояние — «Context». У каждого из контекстов есть набор правил, по которому нужно перейти в другой контекст. Автомат помнит, из какого состояния он перешел в текущее, и может возвращаться в предыдущие контексты (стек контекстов).

Пример: C++. В контексте код есть правило: если встретился символ » — перейти в контекст «строка». Контекст «строка» подсвечивает символы красным цветом и подержит правило: если встретился символ » — вернуться в предыдущий контекст.

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

Система очень удобная и универсальная. Формат файлов хорошо документирован. Наверное, именно поэтому katepart подсвечивает около 2 сотен языков и форматов.

Минусом, на мой взгляд, является лишь то, что интерпретатор, который разбирает код на основе Syntax Definition, в большинстве случаев будет хуже по производительности, чем парсер для конкретного языка программирования.

Оптимизация

Когда я написал подсветку синтаксиса, радости моей не было предела. Все работает, все красиво. Все 59 файликов на разных языках из коллекции katepart выглядят правильно и открываются шустро. Ура! Кто сказал, что Python медленный язык?!
А потом я попробовал открыть большой файлик. Реально большой. И внезапно оказалось, что мой парсер не так уж и быстр. Пришлось браться за оптимизацию.

Пару часов с профайлером ускорили подсветку в несколько раз. Но, все равно получалось слишком медленно. А пространство для оптимизации было практически исчерпано. Можно было ускорить парсер еще на пару десятков процентов за счет жутко запутанного кода, но такая оптимизация погоды не делает.

Я стал осваивать написание модулей на C. Это оказалось совсем не сложно, Python к расширениям очень дружелюбен.

В процессе написания парсера возникла проблема: в C нет регулярных выражений. А зависимости подключать очень не хотелось. Проблема решилась за счет того, что взаимодействие C-Python работает в 2-х направлениях. Python вызывает C для парсинга, а из С дергается функция на Python для того, чтобы проверить регулярное выражение.

Когда я начал тестировать парсер с расширением, выяснилось, что производительность не существенно отличается от версии на Python. Снова взял профайлер и пошел искать проблему.

Оказалось, что 90% времени мой парсер вызывает Python для проверки регулярных выражений. Что же, хак не удался. Пришлось использовать внешнюю библиотеку. Так у компонента появилась единственная зависимость — библиотека обработки регулярных выражений на C pcre. С ней производительность получилась вполне приемлемой (цифры будут ниже).

В итоге в целесообразности использования Python я не разочаровался. Парсер на C — это примерно 1/3 кодовой базы моего компонента. Думаю, по трудозатратам такой гибридный вариант получился легче, чем решение на С++.

Асинхронная подсветка

Большинство текстовых файлов довольно небольшие по размеру. Но иногда мне приходилось редактировать исходники, в которых больше 300К строк. Насколько бы не был крут разработчик парсера, и насколько бы не был быстр его язык, а разбираться до конца такой файл будет дольше, чем пользователь согласен ждать.

katepart подсвечивает код в потоке GUI. И делает это лениво — подсвечивается столько, сколько нужно отрисовать на экране. Такой подход очень хорошо работает, если файл открывается в начале. Однако если перескочить в конец большого файла — GUI просто зависает. Меня такой подход не устроил.


vim и emacs при необходимости отрисовать конец большого файла разбирают текст с середины. Подход хорош тем, что позволяет не блокировать GUI надолго при подсветке. Но не все так просто. Языки программирования разбираются последовательно. Например, чтобы правильно обработать символ конца многострочного комментария, нужно знать, начался ли комментарий в предыдущей строчке. Получается, что в некоторых случаях парсинг с середины будет выдавать неправильную подсветку (как на скриншоте из vim).

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

Пользователь постоянно редактирует код. Поток GUI обрабатывает нажатия клавиш и меняет документ. Если при этом документ парсится и подсвечивается в потоках, изменения нужно синхронизировать. Инструментарий Qt пока не везде ориентирован на многопоточность, я не нашел способа надежно синхронизировать доступ к документу. Пришлось от потоков отказаться.

В итоге экспериментов у меня получилось следующее решение: файл разбирается и подсвечивается в потоке GUI по таймеру. Таймер работает 20 милисекунд, потом возвращает управление в main loop для обработки действий пользователя, потом снова вызывается… Если пользователь открыл огромный файл и сразу перескочил в его конец — файл отображается, но без подсветки.

Код можно править, а подсветка появится чуть позже.

Инкрементальная подсветка

Когда пользователь редактирует код — подсвечивать заново текст нужно с того места, которое редактируется, а не с начала. И, как правило, меняется одна или несколько строк.

В процессе парсинга к каждой строке файла прикрепляется блок метаданных с состоянием парсера. Если текст был изменен, метаданные используются, чтобы начать разбор с конкретной строки.
Продолжается инткрементальный парсинг до тех пор, пока не будет найдена строка, метаданные которой не изменились после нового парсинга.

Сравнение производительности

Сравнение производительности подсветки — дело не благодарное. Уж очень от многих факторов она зависит: железа, версий софта, языка, содержимого конкретного файла, фазы луны,…
Однако без него статья была бы не полной. Поэтому придется раздел добавить.
Отказ от ответственности

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

Этот раздел — не основная цель статьи. Измерения производились только на одном файле на одном языке, очень поверхностно. Цифры, наблюдения и выводы могут содержать грубые ошибки.

Поэтому методику измерений не публикую; предлагаю считать, что информацию, приведенную ниже, я выдумал сам исключительно для развлечения аудитории Хабра.

Приведенная информация ни в коем случае не может быть использована для выводов о том, что текстовый редактор X лучше, чем текстовый редактор Y.

Я открыл большой C++ файл (364121 строка) в нескольких редакторах, которые мне интересны, и собрал свои наблюдения в эту таблицу.









Компонент или редакторВремя на подсветку всего файлаБлокирует GUIПроблемы подсветки
Qutepart44 секундыНикогдаОткрывает файл 3 секунды
katepartБыл убит через 6 минутПока не подсветит столько, сколько нужно отобразить
QScintilla3 секундыНикогдаТормозит при редактировании
Scintilla3 секундыНикогдаТормозит при редактировании
Sublime Text23 секундыПри редактировании, пока не обновит всю изменившуюся подсветку
gedit8 секундНикогдаТормозит при редактировании
Qt Creator20 секундПри редактировании висит, пока не обновит всю изменившуюся подсветку
Ninja IDE14 секунд При открытииПодсветил только первые 51 строки. Жутко тормозит при редактировании.
vimМгновенноНикогдаПарсит файл с середины, в некоторых случаях показывает неправильный результат.
emacsМгновенноНикогдаПарсит файл с середины, в некоторых случаях показывает неправильный результат. Вешается на время около минуты при перемотке вверх.

Подробная версия таблицы
Как видим, Qutepart медленнее всех подсвечивает текст. Это закономерно, поскольку используется интерпретируемый язык, связка Python-Qt и интерпретируемые определения синтаксиса в виде XML.
С другой стороны, высокоуровневый язык и технологии позволяют подсвечивать много языков, не блокировать GUI и не показывать артефактов.
При работе с реальными файлами в абсолютном большинстве случаев файл открывается уже подсвеченным, и при редактировании пользователь не видит, как обновляется подсветка. Поэтому текущее положение дел меня устраивает и от дальнейшей оптимизации я отказался.

И что же получилось

У меня получился компонент для редактирования кода Qutepart и текстовый редактор на его основе Enki.
Зависит компонент от PyQt и от pcre. Требует сборки модуля расширения на C. Для небольших файлов можно обойтись без расширения и без pcre.
Из katepart позаимствованы файлы Syntax Definition и алгоритмы выравнивания кода.
Как и katepart, проект доступен под LGPL.

Сегодня я выпустил первую версию Qutepart и Enki на его основе, потому что решил, что текущая версия уже лучше, чем вариант на QScintilla. Функциональности пока не много. TODO-list большой. Периодически пополняется за счет пожеланий от пользователей и становится меньше за счет сделанных фич.

Буду рад отзывам от Хабра-сообщества!

Выбор текстового редактора или «хочу все в одном» / Хабр

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

Дисклеймер

Я достаточно молод и неопытен в сфере IT, чтобы приводить какие-то сверх-доводы, поэтому все ниже-перечисленное будет лично моими субъективными мыслями и рассуждениями. Если кто-то не согласен со мной — я буду только рад поддержать дискуссию и обсудить все это в комментариях.

Сейчас я работаю под Windows, в будущем, возможно, перейду на Mac OS, поэтому при выборе текстового редактора/IDE я сразу выделял кросс-платформенность. Рассматривал чуть больше вариантов, чем перечислю тут, ибо решил выделить только самые приглядевшиеся. Буду стараться кратко описывать взгляд на разные стороны перечисленных программных продуктов.
Под стандартными задачами я подразумеваю банальные задачи верстки, т.е. HTML, CSS, может JavaScript. Я не буду подчеркивать те вещи, которые есть везде, например: смена цветовых тем, система контроля папки проекта и т.д.

Sublime Text

Официальный сайт

Насколько я знаю люди делятся на два типа: те кто используют Sublime и те кто не используют Sublime. Я вот отношусь ко вторым; попробую объяснить почему.

Интерфейс

Для меня это играет очень большую роль, когда интерфейс приятен и понятен. Этот редактор почему-то не вызвал у меня таких чувств. Субъективно дизайн и оформление на уровне 2010, так что тут «минус».

Функционал

Ну тут набор довольно впечатляющий, хотя не хватает LESS, SCSS подсветки синтаксиса. В целом функционал хороший.

Быстродействие

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

ATOM

Официальный сайт

На вид — отличный редактор от команды GitHub. Он меня очень быстро успел заинтересовать, но разочаровать успел еще быстрее.

Интерфейс

Тут вроде все отлично, в фулл-сайз режиме выглядит отлично, разработчики видимо старались. Написано это дело на CoffeeScript, и все лежит на GitHub в open-source, так что если этот редактор вам по душе и вы знакомы с CoffeScript, то можете дополнять его своими идеями.

Функционал

В целом как обычно, ничего сверх-примечательного, правда в какой-то момент почувствовал, что нет кнопочки «поменять местами» при поиске с заменой по документу. Мелочь, но огорчила.

Быстродействие

Тут то все и погорело. Лагает просто зверски, с большими документами огромные проблемы, хотя-бы css файл того же Bootstrap он загружал секунд 12. Периодически вылетает, но может эта проблема только на Windows, так что если использовали его на Mac, то можно это обсудить в комментариях.

Brackets

Официальный сайт

Отличный open-source продукт от Adobe, который имеет уже множество плагинов, расширений, дополнений. На мой взгляд — перспективная вещь. Написан на HTML, CSS, JavaScript. На нём я и остановил свой выбор.

Интерфейс

В стиле Adobe. Все очень просто и понятно, но при этом стильно; интерфейс заставляет влюбиться.

Функционал

Как обычно, стандарт, но к счастью полная поддержка LESS, SCSS. И внимание(для тех кто проспал): тут есть некое подобие парсинга PSD. Т.е. редактор анализирует ваш PSD макет и вы свободно можете исходя из PSD сделать разметку стилей вашей страницы. Революционная вещь на мой взгляд. Adobe такие Adobe.

Быстродействие

Как и в SublimeText все прекрасно, никаких заметных лагов и проблем, все очень быстро, на уровне Барри Аллена.
Забудем о разметке. В веб есть еще такая вещь, как динамичность, т.е. веб-программирование, без которого любой сайт (только, если это не лендинг или еще какая-то статичная вещь) становится скучным, поговорим о мозгах веб-приложений.

PHP

Тут слишком много я не выбирал, погуглив и посмотрев некоторые редакторы и IDE понял, что однозначно это PHP Storm от JetBrains. Ранее интерфейс в нем отталкивал, но сейчас все очень даже на высоте. Авто-дополнение кода, подобное IntelliSense, удобство работы с фреймворками и т.д. В общем, достойнейший продукт.

ASP, node.js

Тут меня привлек недавно немного/немало нашумевший продукт от Microsoft — Visual Studio Code.

Отличный редактор для ASP.NET и node.js приложений. Знаменитый IntelliSense, возможность работы с классами и объектами по reference. Все в стиле Microsoft. Имеется встроенный отладчик. Так-же хочу подчеркнуть, что по моему мнению — это отличная замена MonoDevelop для .NET разработчиков вне Windows(тут то есть Visual Studio).

Редактор пока в стадии разработки, но работа ведется достаточно быстро, учитывая что это Microsoft.

Резюмируя вышесказанное, я сделал свой выбор. Останавливаться на таких же критериях, как и я, вам необязательно. Буду рад обсудить все в комментариях к статье.

Спасибо за внимание!

Осмотр шести редакторов текста с подсветкой кода

Введение

Наверное, каждый пользователь, работавший в Windows, знает, что такое Notepad. Или Блокнот — кому как привычнее. Штука удобная. Маленькое легкое приложение, где можно набрать текст письма или скопировать какую-то информацию из Интернет. Минимум опций, простейшее управление. Созданные файлы невелики по размеру, да еще и сжимаются архиваторами отлично. Казалось бы, все хорошо. Но только до поры до времени, пока нам не понадобится нечто большее (и умеющее нормально работать с файлами большого объёма). Да, удобство и простота Блокнота исключительно важны для начинающих компьютерщиков. Но стоит расширить сферу применения, попробовать использовать Блокнот совместно с другими «плоскими» файлами, не только *.txt, как этого несложного инструмента перестает хватать. Даже несмотря на то, что им все равно можно просмотреть скрипты всевозможных языков программирования, логи программ, пакетные файлы, файлы настроек и многие-многие другие, работа со всем этим уже не представляется удобной и продуктивной. К счастью, программисты мириться с таким положением дел не стали, и начали выпускать в свет улучшенные варианты блокнотов, дополненных каждый своими надстройками. Различаясь функциональными расширениями, эти продукты в некотором роде стали разделяться и по классам решаемых задач. Об одном из таких классов, простых редакторах для программистов и web-мастеров, и есть наш сегодняшний обзор.

Что для таких программ первостепенно? Конечно же, подсветка синтаксиса языка, на котором пишет пользователь! Желательна поддержка плагинов и дополнительных языковых и функциональных пакетов, а также возможность редактирования уже подключенных. Поиск с заменой и использованием регулярных выражений. Таблица символов, простенький hex-редактор, умение работать с большим количеством форматов и кодировок. Ну и, разумеется, удобство в работе. Требование, справедливое, в принципе, для любой программы, однако наиболее актуальное для подобного рода продуктов, ведь сам по себе процесс программирования отнимает немало времени, а подолгу сидеть за неудобной оболочкой никому не захочется. Отталкиваясь от этого и будем рассматривать отобранные программы, а именно: PSPad 4.5.0, Golden Pen 1.5, PolyEdit 5.0 RC, Edit Ex 2006r1, Crimson Editor 3.70, Uniqway Poetic 0.2b.

PSPad

PSPad является достаточно известным и распространенным редактором для программистов. И популярность его вполне заслуженна. Ведь это программа, наверное, тысячи функций. И что будет особенно приятно программистам, это не просто текстовый редактор с дополнительными возможностями, это набор специальных инструментов именно для их нужд. Вот, к примеру, зачем текстовику встроенный FTP-клиент? Едва ли он будет востребован, а web-мастер наверняка, написав какой-либо скриптик или страничку, захочет тут же посмотреть результат в деле, закинув его на удаленный сервер. Соединяемся с указанными настройками. Они гораздо шире, нежели указание адреса, логина и пароля.

Настройки соединения FTP-клиента

А дерево проектов? С его помощью можно еще более расширить функции редактора и создавать настоящие проекты. И хотя вовсе не обязательно, что это будут программные проекты, но интересна данная возможность именно для этих нужд.

Параметры создаваемого проекта

Для работы с длинными кодами просто незаменимым будет отображение структуры файла. В этом поле PSPad показывает найденные по шаблонам в просматриваемом файле функции и макроопределения в соответствии с выбранным синтаксисом.

Редактирование pas-файла в окне редактора

В последних версиях PSPad пользователь может активно работать со скриптами, не только вручную исправлять их, но и затем перекомпилировать. Правда, для этого понадобится установленный MS Windows Scripting host. Последний поддерживает достаточно большое количество языков, а не только скрипты Visual Basic и Java.

Хороши возможности редактирования HTML. Конечно, наш редактор уступит по количеству функций специализированным пакетам, но ведь мы и не требуем от легкого удобного инструмента способностей мощного компилятора? А в остальном PSPad будет полезен и новичкам, и web-мастерам с опытом. Тут есть и конвертор между различными форматами, и средство просмотра с возможностью изменения разрешения, и проверка кода HTML, и широкие возможности форматирования.

Только что установленный, PSPad «знает» около тридцати различных языков программирования. При том, что тут есть совершенно обычные C, Object Pascal, Java, Java Script, HTML, PHP, Visual Basic и т.д., присутствие некоторых, как, например, COBOL, Inno Setup Script, KiXtart, Tcl/Tk, TeX, Unix Shell Script вызвало мой неподдельный интерес. Любой из языков, кстати, пользователь может перенастроить, отредактировать и создать собственный синтаксис. Или указать для него компилятор.

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

Установка программы

Общие настройки программы

Меню некоторых прочих настроек

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

Если будете использовать программу для набора текста, несомненно, пригодится проверка правописания. К тому же относятся всевозможные опции правки, поиска и замены, форматирования. Просто изобилует «примочками» меню инструментов. Здесь имеется менеджер макросов, парсер файлов, таблица ASCII, несколько видов палитры. Если и последних окажется мало — нате, пипетка! Вариант хорошо знакомого по многим редакторам изображений инструмента для определения цвета в той или иной области. Пипетка от PSPad позволит забрать цвет в любой точке и под окном самой программы. Кроме того, имеется хэш-генератор (используются функции MD4, MD5, SHA1, RIPEMD160), командная строка, преобразователь чисел между различными системы исчислений и даже римскими символами, простой, но мощный вариант калькулятора (назван анализатором выражений), и другие.

Справочная система (именно система) полна и разнообразна. Помимо собственно исчерпывающего справочника по программе, можно получить сведения о языках программирования, а если имеется подключение к Интернет, то и доступ к сайтам по программированию и к удаленным онлайн-утилитам.

Сайт программы: http://www.pspad.com

Golden Pen

Наверное, многим Golden Pen известен. Программа не нова, возможно, некоторые уже успели забыть ее. Неудивительно, последняя версия была выпущена аж в 2001 году, автором не указана даже поддержка Windows XP. С другой стороны, простота и удобство — главные козыри этого небольшого редактора, совмещены с достаточной для среднего уровня функциональностью. А потому Golden Pen Виталия Невзорова может с успехом использоваться и по сей день.

Код VB в окне Golden Pen

Golden Pen хорош и тем, что является универсальным «двубоким» редактором. Им одинаково удобно пользоваться как для набора обычного текста, так и для редактирования исходников. Предоставляемые возможности примерно равнозначны. Для текста это печать, экспорт в RTF и HTML, опции выравнивания, отображения, поиска и переходов. Для скриптов — подсветка синтаксиса пятнадцати актуальных (для 2000 года) языков вплоть до Фортрана, работа с закладками, hex-режим просмотра файлов. Кроме того, присутствуют дополнительные инструменты, буфер обмена, запись макросов, калькулятор, таблица ASCII кодов. Калькулятор Golden Pen способен к вычислению некоторых статистических функций, а, помимо этого, при наборе текста активен контекстный калькулятор — это когда вы набиваете выражение, и после знака «=» программа автоматически выводит его значение.

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

Сайт программы: http://www.geocities.com/midweststudio/

PolyEdit

Назвать PolyEdit блокнотом для программистов как-то даже и язык не поворачивается. Тем не менее, он попал в наш обзор, потому что такие функции он тоже включает. А еще много-много всего, для описания чего потребуется отдельная статья.

Да, действительно, PolyEdit — это программа с широчайшими возможностями, хотя при первом знакомстве она вызвала у меня ощущения… наверное, схожие с ощущениями героев из «Незнайки на Луне» Николая Носова, когда те попали на ночевку в гостиницу «Экономическая». Если там хозяева декларировали самые дешевые номера, но в действительности требовалась отдельная плата за пользование водой, телевизором, постелями и т.д., то создатели PolyEdit (Polysoft Solutions), не преминув отметить малый размер дистрибутива программы, не включили в него часть оговоренных функций. Поэтому, решив первым делом проверить подсветку синтаксиса языков, я был несколько разочарован и отправлен на сайт программы для скачивания нужных компонентов. К счастью, данный пакет в ZIP’е занимает всего 9 Кбайт. Вызывает удивление, почему же нельзя было сразу включить его в дистрибутив. Помимо указанного файла в разделе Downloads доступны еще несколько аддонов и 10 словарей размером от 500 КБ до 6 МБ. Впрочем, слишком строго судить разработчиков нельзя. Рассчитывать получить полноценный текстовый процессор уровня Word’а в размере менее полутора мегабайт — несколько наивно. Решение же о раздельном размещении дополнительных, нужных лишь конкретному пользователю пакетов, вполне разумно для свободно распространяемой через Интернет программы.

Что же касается самой программы, то данный текст набирался как раз в окне редактора, и никаких удобств испытать не пришлось. Единственное, понадобилось скачать дополнительный русский языковой пакет для проверки правописания. Для ее осуществления нажмите F7 или выберите команду из пункта меню. Автоматически проверка не происходит. Да может, и к лучшему? Тем самым не будет ненужного затормаживания и пауз при наборе на небыстрых компьютерах.

Среди возможностей PolyEdit отметим следующие. Шифрование данных, с использованием преобразований BlowFish и хеш-функции SHA-1. Полная поддержка OLE-объектов (картинок, клипов, диаграмм и др.). Экспорт/импорт нескольких форматов, включая Word, Excel, Html. Поддержка плагинов. Встроенный e-mail клиент. Функции Drag-and-Drop и Drag-and-Dock. Поддержка большого количества кодировок. Автосохранение. Поиск и замена с использованием регулярных выражений, поиск по файлам. Подсветка синтаксиса. Показ непечатаемых знаков.

Некоторые пункты меню

Интерфейс в «расширенном» стиле весьма напоминает интерфейс по умолчанию редактора MS Word. Совпадают и все базовые возможности по работе с текстом. Отсутствует только панель рисования. Зато в наличии дополнительные элементы. Очень понравилась технология Drag-and-Dock для многодокументных окон.

Многодокументный интерфейс

PolyEdit поддерживает темы оформления. Всевозможные параметры могут быть настроены в опциях программы.

Настройка PolyEdit

Тестирование редактора при работе с сырцами выявило некоторые недостатки. Так, в pas-файле Delphi некорректно работает комментирование фигурными скобками, вообще не работает комментирование обычными скобками со звездочками. Подобные проблемы наблюдались и для html- и cpp-файлов. Подсветку t-sql-скрипта можно наблюдать на сопутствующей иллюстрации. Для наглядности дан вид в PolyEdit и вид в окне MS SQL Query Analyzer восьмой версии. Понятно, что в этих программах используются различные спецификации, но тем не менее…

Не всегда правильно работает отмена последних действий.

SQL-скрипт в окне PolyEdit (слева) и SQL Query Analyzer

Вашу копию PolyEdit можно зарегистрировать. Целесообразно ли — решать вам. Среди важнейших преимуществ платной версии первоочередная техническая поддержка по e-mail, бесплатные апгрейды программы, скидки при приобретении прочих продуктов от PolySoft Solution. Как видите, даже представленные плюсы не представляются значительными, о прочих же и говорить нечего, едва ли отображение имени вашей компании в окне информации о программе стоит 30 долларов за лицензию. Впрочем, оптовым покупателям — скидки…

Сайт программы: http://www.polyedit.com/

EditEx

Свежая версия 2006r1 этого редактора вышла чуть более месяца назад, ее и возьмем к рассмотрению. Главным козырем, указываемый автором программы Артемом Фурсенко, является «подсветка всего-всего-всего». Действительно, EditEx «знает» более полусотни различных синтаксисов. И это — абсолютный рекорд среди сегодняшних конкурсантов. Перечислять все нет даже смысла, едва ли вы не найдете нужный вам. Нет, ну, конечно, при желании можно, но для подавляющего большинства программистов этого будет достаточно.

Несмотря на то, что разработка — отечественная, интерфейс программы полностью на английском языке. Аналогичен и сайт разработчика. Хотя на сайт скуп на инструкции и полезную информацию. Нет, к слову, справки и в самой программе. Хорошо, что не особо и надо — редактор внешне достаточно традиционен и не сложен. В левой его части размещен проводник, сверху — панели инструментов, а остальное место отведено под область редактирования документов.

Интерфейс редактора EditEx 2006

В программе присутствуют все необходимые инструменты для форматирования текста, поиска, смены кодировки. Дополнительно имеется пакет проверки правописания английских и русских слов и переводчик «на лету». К сожалению, работают обе последние утилиты просто ахово. И хотя они функционируют, пользоваться ими практически едва ли получится. Переводчик производит контекстный поиск по словарю и отображает абсолютно все встретившиеся результаты. Введите, к примеру, слово «go» и вы получите сотни вариантов от «агония» («the agony») до «ящера» («the pangolin»). Хотя, собственно, глагол «идти» будет где-то в середине выборки. Проверка правописания по словарю также удивила своей неординарностью, «части» было предложено заменить на «чёботы», «имеются» на «иван-чай», «запуск» на «заалеть» и т.д. в том же ключе буквально через слово. Лишь чуть лучше обстоит дело с английским языком, где слова, обычно, меньше склоняются.

Проверка правописания удивляет своим подходом

Теперь о приятных дополнениях. Простенький FTP-клиент, возможность работы в полноэкранном режиме, видя чистый код без надоедливых иногда кнопок и панелей, дополнительная панель автоматического выставления тегов HTML, предварительный просмотр HTML-страниц и запуск программы с указанием внешнего компилятора.

Опции соединения с FTP-сервером

Сайт программы: http://www.flywheel.nm.ru/editex.html

Crimson Editor

Обратившись к Crimson Editor уже после EditEx, мне показалось, что последний делался именно с него. Еще бы, по набору функций оба редактора — словно братья родные. Даже внешне немудрено спутать. Все тот же набор стандартных для рассматриваемого класса программ функций, все тот же расширенный поиск, та же подсветка парных скобок, нумерация строк (и печать с ее сохранением), форматирование текста, перекодировщик с минимальным количеством наборов. Есть встроенный FTP-клиент, опционально проводник, предварительный просмотр HTML-файлов, проверка правописания, подробная статистика, возможность записи и выполнения макросов. В наличие имеется и контекстный калькулятор.

Окно редактора без включенного проводника

Подсветка языков, которых в стандартной установке всего 16 (включая Basic, C/C++, CSS, HTML, Java, Matlab, Pascal, Perl, PHP, Python и др.) производится корректно, с автоматическим определением типа. Спецификации языков могут быть перенастроены самим пользователем. Кроме того, большое количество всевозможных языковых файлов доступно для скачивания на официальном сайте программы. Наверное, это позволило создателю (Ingyu Kang) заявить о поддержке более чем 100 компьютерных языков.

При работе с редактором нашелся неприятный баг — при открытии файлов программа осуществляет анализ его содержимого, видимо, для определения выделяемого синтаксиса. Механизмы его автором не сообщаются, но вследствие этой процедуры некоторые работоспособные скрипты приводят к ошибке обращения к памяти и программа вылетает.

Ошибка при анализе открываемого файла

Сайт программы: http://www.crimsoneditor.com/

Uniqway Poetic

Ну и в заключение — рассмотрим еще одну программу. Редактор этот совсем свежий, даже с сырцой, однако мне приглянулся и кажется весьма перспективным. Первая его версия 0.1a вышла всего около месяца назад, а теперь уже доступна вторая 0.2b. Если авторы (Павел Сушков и др.) и далее продолжат с той же ретивостью, то мы вправе ожидать законченную удобную программу с хорошей функциональностью уже весной. Хотя пользоваться Uniqway Poetic можно прямо сейчас.

Итак, что здесь есть интересного. В целом — приятный многодокументный интерфейс, широкое использование «горячих» клавиш, удобная навигация, импорт/экспорт форматов UTF-8 и UTF-16, возможность печати, предварительный просмотр и установка параметров страницы. Отображение непечатаемых символов, подгон размера шрифта для удобства работы, разумеется, поиск и замена, причем с использованием регулярных выражений. Еще есть статистика файла по количеству слов и определенных символов.

Uniqway Poetic

Работа с текстом. Понравились опции регулирования отступа, удаления начальных и конечных пробелов. Присутствует возможность изменения регистра набранного текста и установка типа переноса строки (Unix, Mac или Win). Может производиться перекодировка между следующими видами: Windows 1251, KOI8-R, ISO-8859-2, ISO-8859-5, ISO-8859-6, DOS 866, Mac Central European, Mac Cyrillic, Mac Greek. Доступны небольшая таблица символов с указанием кодов для быстрого набора на клавиатуре, а также функция сортировки строк в алфавитном порядке. Не ограничена история вносимых изменений.

Перекодировщик

Работа с кодом. Интересной выглядит фраза с официальной страницы программы о подсветке «любого типа синтаксиса». Я так и не понял, что именно создатели имели в виду, но практически программа поддерживает следующие типы: PHP, CSS, HTML, Delphi, XML, INI и Perl. Опционально, помимо координат позиции курсора в статусной строке, присутствует нумерация строк кода.

Настройки программы

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

Кстати, что еще может появиться в следующих версиях? Прежде всего, увеличение количества поддерживаемых языков, включение FTP-клиента и hex-режима, расширение настроек программы. А может чем-то оригинальным, отличным от других редакторов порадует нас в будущем команда Uniqway?

Сайт программы: http://www.uniqway.com/poetic/

Итоги

Вообще, все рассмотренные выше программы, так или иначе, понравились. И все можно применять на собственный «вкус и цвет».

PSPad среди прочих выделяется по набору функций и удобству. Очень дельный редактор, превосходит даже некоторые платные аналоги. Рекомендую абсолютно всем, кому по долгу службы или велению сердца приходится заниматься программописательством.

Golden Pen является неплохой заменой стандартному блокноту Windows с рядом дополнительных инструментов как общего назначения, так и предназначенных для программистов.

PolyEdit — достаточно сильная программа, но не является специализированным продуктом для программистов. Потенциально может быть альтернативой MS Word, так как включает широкие возможности по работе с текстом.

В EditEx интересна, прежде всего, поддержка большого количества различных синтаксисов. Вместе с тем попытку автора напичкать программу значительным количеством дополнительных функций стоит признать неудачной. Возможно, дело в нехитром использовании найденных в сети готовых программных компонентов. Притом, что некоторые из них не доработаны сами по себе. Довольно быстро надоедает баннер с предложением купить сырцы программы за 40 долларов. Отбросьте это, не пользуйтесь недоделанными функциями и получите вполне годный редактор.

Crimson Editor в целом поприятней предыдущей программы, нет раздражающего баннера. Возможности примерно те же, но EditEx поддерживает больше языков. Crimson Editor в свою очередь представляется лучше доработанным.

Ну и Uniqway Poetic — молодая программа с перспективой стать хорошим подспорьем программисту…

Редактор кода с подсветкой синтаксиса популярных языков — Touchqode / Хабр

У меня, как у web-программиста, иногда возникает острая необходимость внести какие-то изменения в код сайта, когда под рукой нет компьютера/ноутбука. Сейчас на Android написано несколько хороших FTP и SSH клиентов, которые позволяют без проблем работать с удалённым сервером до того момента, пока не требуется редактирование кода. С существующими текстовыми редакторами это ужасно неблагодарное занятие, учитывая что никакого намёка на ориентированность на программистов у этих программ нет. Но на днях я узнал про Touchqode, который успел меня уже один раз выручить.

Touchqode это кросплатформенный (в будущем планируется версия для iOS) редактор кода для смартфонов. Больше всего он ориентирован на Java, но на хорошем уровне поддерживаются C++, C#, Python, Ruby, HTML, JavaScript и простой XML, имеет функцию «code suggestions» (не могу подобрать фразу на русском языке). Для удобства работы на экране есть несколько дополнительных кнопок, которые позволяют выполнять некоторые действия без лишних усилий.

Так же программа незаменима для написания простых скриптов на SL4A (Scripting Layer for Android), которые сразу можно запускать и проверять их работоспособность на своём аппарате.

Я запускал Touchqode на своём HTC Legend и десятидюймовом планшете — интерфейс выглядит корректно, при больших кусках кода начинает немного подтормаживать, но для версии «public alpha» это вполне простительно.

Видео работы в редакторе от создателя:

Как понятно из блога разработчика — программа находится в стадии тестирования, и будет развиваться.

Ссылка на скачивание программы с Маркета:

А вы знаете какие-нибудь редакторы кода для Android или других платформ? Пробовали ли вы пользоваться ними?

UPD: По просьбам в личку и комментах — скриншот работы программы на Zenithink ZT-180, 10′ — habrastorage.org/storage/203d9fc1/4f0c23e5/686256a8/dbed9e66.png

Путеводитель по редакторам исходного кода

Известно, что IDE (англ. «Integrated Development Environment» — интегрированная среда разработки) предоставляет программисту наиболее полный инструментарий для работы с кодом. Примеры таких сред — NetBeans, Microsoft Visual Studio, Eclipse. Проблема выбора между IDE и редакторами исходного кода активно обсуждается в интернете прежде всего новичками в программировании. Многие сходятся во мнении, что для работы с языками HTML, JS (включая фреймворк jQuery) IDE-среда не нужна. Также при работе с небольшими проектами разработчики отдают предпочтение легким редакторам исходного кода. О них далее и пойдет речь.

Sublime Text

Sublime Text 2

Домашняя страница: http://www.sublimetext.com/

Sublime Text — мультиплатформенный редактор (Linux, Mac OS, Windows). Цена лицензии — $70, но бесплатная версия работает без ограничений.

Из первичных возможностей нужно отметить базовую поддержку нескольких десятков языков программирования и разметки: HTML, CSS, Ruby, PHP, SQL, Javascript, C и других. Для поддерживаемых форматов предусмотрена подсветка синтаксиса и автодополнение.

Для более тесной интеграции Sublime Text с языком (например, с jQuery, Ruby, C) можно установить расширения. Среди наиболее полезных: SideBarEnhancements, Emmet, SublimeGDB, SFTP. Расширения инсталлируется в Sublime Text через командную палитру с помощью модуля Package Control.

Одна из наиболее интересных функций Sublime Text — мультивыделение, что позволяет редактировать несколько участков кода одновременно. Для этого достаточно нажать Ctrl и установить курсор на тех участках, где нужно ввести данные, или Alt + F3. Для редактирования нескольких строк можно нажать Ctrl+Shift+L и передвинуть курсор в нужное место.

В ST широкие поисковые возможности. Помимо поиска по файлу, можно быстро перемещаться по всему проекту, например:

  • Ctrl + R — переход к символу (@)
  • Ctrl + G — переход к строке (:)
  • Ctrl + P — переход к файлу

Для того чтобы сосредоточиться на написании кода, можно перейти в режим Distraction Free Mode (Shift + F11). При этом останется доступной карта файла, также будет возможно переключаться между вкладками (Alt + цифра) или поменять режим отображения.

Работая в Sublime Text, написание кода также можно ускорить за счет сниппетов и макросов. Сниппеты — фрагменты часто используемого кода, которые вставляются посредством автодополнения. Макросы применяются для воспроизведения последовательности действий.

Из других особенностей интерфейса — боковая панель, которая ускоряет доступ к файлам и проектам. Удобны сессии вкладок: можно закрыть Sublime Text, и при следующем запуске редактора вкладок будут в состоянии, сохраненном при закрытии.

Пожалуй, у Sublime Text два заметных неудобства: невозможность локализации и отсутствие графического окна с настройками. Обе проблемы, впрочем, мало обременят программиста. Посредством редактирования текстовых файлов конфигурации настройке поддается абсолютно все (см. раздел «Preferences» в меню). Можно сменить тему оформления, цветовую схему, настроить расширения, горячие клавиши и т. д.

Intype

Intype

Домашняя страница: http://inotai.com/intype/

Intype — текстовый редактор, который, на первый взгляд, ничем интересным не отличается. Однако неплохая базовая функциональность в связке с легким и аккуратным интерфейсом найдет своих сторонников.

Поддерживаемых языков немного, около 20. Для работы с ними предусмотрены сборки (bundles), предполагающие подсветку кода, сниппеты, а также проверку правописания. Есть специальный редактор, в котором легко посмотреть имеющиеся сниппеты, изменить их или соответствующие им триггеры (сокращенные фразы).

Как и в Sublime Text, есть мультивыделение и режим «умного» выделения в колонках. Увы, команд редактирования самый минимум, и вместо указанных функций было бы рациональней добавить хотя бы возможность закомментировать строку.

Из особенностей интерфейса: Intype, помимо вкладок и сессий, также предоставляет боковую панель, куда можно перенести любые файлы и папки для дальнейшего использования, например, в проекте. Имеется режим Distraction Free (F11), при его активации отображается лишь поле редактирования и линейка. Тем самым, от написания кода на экране ничего не отвлекает.

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

Из других минусов: нет поддержки расширений, очень мало настроек. Как работает автодополнение — непонятно, а где искать документацию — тоже вопрос. Не очень привлекательной выглядит цена в 42 евро, которую пользователь платит, скорее, за минимализм. Ведь если сравнивать с Sublime Text, разрыв по функциональности огромный.

PSPad

PSPad

Домашняя страница: http://www.pspad.com/ru/

В отличие от минималистичных по интерфейсу редакторов Intype или Programmer’s Notepad (см. ниже), иконка в меню есть практически для каждой команды, что при работе с графической оболочкой — дополнительный плюс. Можно возразить, что предпочтительней использовать горячие клавиши, но и такие моменты важны.

Боковая панель PSPad — наиболее функциональная среди рассматриваемых редакторов. С ее помощью можно не только управлять проектами, но и настроить синхронизацию. Также в панели доступны элементы избранного, менеджер файлов и даже FTP-менеджер.

Среди стандартных возможностей — макросы, шаблоны (здесь так называются сниппеты). Подсветка парных скобок, автодополнение — в наличии, правда, реализовано последнее не самым лучшим образом: очень неудобное меню.

PSPad будет интересен HTML(XML)-верстальщикам, поскольку в данный редактор встроен CSS-редактор TopStyle Lite и известная библиотека Tidy, которая позволяет оптимизировать код. Также доступна валидация и другие инструменты для верстки.

Тем не менее, форматирование HTML — не главный профиль PSPad. Так, из дополнительных инструментов можно обнаружить HEX-режим, хеш-генератор, генератор текста, сравнение текстовых файлов и множество других модулей. Очень востребованная возможность — проводник кода, который выводит список переменных, классов, функций и т. п. в виде дерева (Shift+Ctrl+E). Поиск доступен не только внутри файла, но и внутри определенной папки.

Доступно несколько десятков расширений в форматах .VBS и .JS.

Из замеченных недостатков: PSPad редко обновляется — но, тем не менее, актуальные обновления можно загрузить с форума.

Notepad++

Notepad++

Notepad++ обладает классическим набором возможностей для работы с кодом: автодополнение функций, параметров и слов, подсветка. Сюда же входят операции со строками, в том числе комментирование, преобразование текста. Характерная особенность Notepad++ — возможность применения токенов (шаблонов) стилей кода. Помимо стандартной нумерации строк, предполагается сворачивание кода (фолдинг), доступное не в каждом редакторе.

Notepad++ основан на базе редакторского компонента Scintilla, однако ожидать разительного сходства не следует. С точки зрения удобства, Notepad++ многим пользователям покажется наиболее привычным и понятным редактором. Это уже ставшие стандартом де факто вкладки, сохранение сессий, а также возможность смены режима интерфейса, поддержка огромного количества кодировок, поиск с использованием регулярных выражений, запись и воспроизведение макросов.

К Notepad++ написано немало плагинов (в состав дистрибутива некоторые из них уже включены). При желании, можно найти аналогичные Sublime Text дополнения (Zen Coding — Emmet, NppFTP — SFTP, и т. д.). Хотя если сравнивать Sublime Text и Notepad++, решающая разница между ними — все же не по функциональности, а по удобству. Notepad++ удобней осваивать, не вдаваясь в подробности документации и редактирование текстовых файлов конфигурации. Также не нужно забывать, что Notepad++ был и остается бесплатной программой.

SciTE

SciTE

Домашняя страница: http://www.scintilla.org/SciTE.html (официальная версия), http://code.google.com/p/scite-ru (модификация)

Кроссплатформенный редактор также берет свое начало из компонента редактирования Scintilla. Это предполагает подсветку синтаксиса и автодополнение функций и переменных для наиболее популярных языков программирования. Также возможно сворачивание кода, подсветка парных скобок, автоматические отступы.

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

Есть возможность интегрировать SciTE с компиляторами, поддерживается консоль для вывода результатов. Консоль удобно использовать для отладки кода, просмотра ошибок (Python, GCC, Visual C++, Borland C++ и т. п.). Есть поддержка расширений.

Интерфейс позволяет работать с вкладками и сессиями. Так или иначе, удобство графического интерфейса вызывает сомнения: сложно управлять обширным списком команд в меню. Поэтому, как вариант, можно посоветовать модификацию SciTE. Ее особенности — не только более дружелюбный интерфейс, но и поддержка русского языка, переведенная документация, расширенные возможности, дополнительные скрипты и утилиты.

Programmer’s Notepad

Programmer’s Notepad

Домашняя страница: http://www.pnotepad.org/

На раннем этапе развития Programmer’s Notepad взял за основу компонент Scintilla, поэтому в нем присутствуют сворачивание кода, цветовые схемы и прочие функции, упомянутые при описании SciTE.

Интерфейс удобный, за некоторыми оговорками. Во-первых, вместо не так часто используемых кнопок (копировать/вставить/вырезать) логичней было бы предусмотреть более «программистский» набор. Панель инструментов приходится перенастраивать. Вторая оговорка — отсутствие удобной боковой панели, при активации нескольких окон (Вид → Окна) рабочее окно отвлекает от работы ввиду своей громоздкости. Из положительных моментов — в настройках можно разделить окно по горизонтали или вертикали.

Наибольший интерес представляет диалог настроек с грамотным разделением опций: настройка горячих клавиш, автодополнения, стилей, схем, файловых ассоциаций и т. д. Это позволяет гибко настроить Notepad на свое усмотрение. Есть возможность смены локализации на русский. Цветовые схемы — переопределяемые: их можно перенастраивать, причем нашлось отдельное место продвинутым настройкам.

Доступны расширения, однако их считанное количество, в этом же разделе можно скачать схемы для поддержки дополнительных языков. Несложно заметить, что они давно не обновляются, да и последняя версия Notepad вышла в 2011 году.

EditPlus

EditPlus

Домашняя страница: http://www.editplus.com/

Редактор платный, цена лицензии — $35.

EditPlus изначально поддерживает форматы HTML, CSS, PHP, ASP, Perl, C/C++, Java, JavaScript и VBScript, но можно расширить список. Файлы STX отвечают за синтаксис, ACP — автодополнение, CTL — сниппеты (доступны через Cliptext Window, Alt + Shift + 1).

В EditPlus изначально есть функции, которые в других редакторах доступны виде модулей: например, поддержка SVN (Subversion — контроль версий) и FTP-менеджер (нет надобности синхронизировать файлы проекта вручную). К сожалению, в данном менеджере нет никакого намека на протокол SFTP.

Также в редакторе можно обнаружить рабочий модуль ZenCoding. С его помощью легко задать структуру HTML-документа без копирования/вставки тегов, составив запрос буквально из одной короткой строки. Помимо того, для работы с HTML в EditPlus предусмотрена отдельная панель инструментов, встроенный браузер. Заметно, что под этот язык разметки EditPlus адаптирован в большей степени, чем под другие форматы. Хотя у него есть и другие инструменты, вроде HEX-редактора, но их не так много.

Настроек в EditPlus несоизмеримо меньше, чем функций (о чем свидетельствует диалог настроек). Из других замеченных неудобств: нет официальной поддержки русского языка, нет расширений.

Сводная таблица

ПрограммаЛицензияПоддержка расширенийЛокализация (официальная)Поддержка платформ
Sublime TextProprietary software, 70 долларов+Windows, Mac OS, Linux
IntypeShareware, 42 евроWindows
PSPadFreeware++Windows
Notepad++Freeware++Windows
SciTEFreeware+Windows, Linux
Programmer’s NotepadFreeware++Windows
EditPlusProprietary EULA, 35 долларовWindows

Резюме

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

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

Отличительная черта PSPad — наличие удобных инструментов для различных языков. Это делает его наиболее универсальным редактором, который по функциональности может на равных соперничать с Sublime Text.

Notepad++ — редактор исходного кода с удобным интерфейсом, с богатым инструментарием по редактированию кода и широкой поддержкой плагинов.

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

Programmer’s Notepad — редактор с базовой функциональностью, гибкий в настройке. Не обновляется с 2011 года.

EditPlus содержит базовые функции редактора исходного кода, а также FTP и SVN «из коробки». Будет оптимален HTML-верстальщикам.

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

11 удобных в использовании редакторов кода для начинающих

Перевод статьи “11 Recommended Text Editor Easy to Use Even Beginners”.

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

  • Подсветка синтаксиса для различных языков программирования
  • Автодополнение
  • Сохраняемые макросы.

В интернете можно найти разные виды текстовых редакторов. Есть десктопные, есть облачные, есть редакторы сниппетов и мобильные редакторы. В этой статье мы рассмотрим 10 текстовых редакторов, которые можно рекомендовать новичкам.

Visual studio code

VSCode от Microsoft это мощный, многоплатформенный редактор с открытым исходным кодом. Он быстро стал моим любимцем. VSCode очень хорошо настраивается.

Обратите внимание на большое количество расширений, благодаря которым в VSCode улучшается процесс разработки на Python.

Текстовый редактор Sublime

Это один из самых популярных редакторов. Он совместим с разными операционными системами: Mac, Windows и Linux.

Это легковесный редактор с обширным функционалом и кучей особенностей. В нем есть множественное выделение, палитра команд, переключение текущего проекта и т.п.

Благодаря гибкой настройке и плагинам этот редактор имеет прекрасные UI и UX.

Notepad++

Этот редактор самый лучший для новичков. Он существует уже довольно долго.

Notepad++ обладает богатым функционалом и всеми характеристиками, которые должны быть у хорошего текстового редактора. Это и подсветка синтаксиса, и разбиение экрана, и разные вкладки для разных файлов, и синхронизированная прокрутка, и автодополнение, и умная подсветка, и много всего другого.

Этот оконный текстовый редактор совершенно бесплатен.

VIM

По сути это улучшенный редактор VI. Он имеет открытый исходный код и ориентирован на использование клавиатуры (не предусматривает использование мыши). Кроме того, он есть практически на всех машинах с ОС на основе Unix. VIM доступен для Mac, Windows и Linux.

Этот текстовый редактор настолько мощный и продвинутый, что его можно считать в некотором роде IDE.

ATOM

Этот кроссплатформенный текстовый редактор создан разработчиками GitHub. Он похож на WordPress.

Он гибкий и настраиваемый, имеет разные темы оформления. При всем этом он относительно новый.

Этот редактор в открытым кодом поставляется с различными темами и встроенным менеджером пакетов.

Brackets

Современный текстовый редактор с открытым кодом, понимающий процесс веб-дизайна. Он изначально создан для веб-дизайнеров и фронтенд-разрабочтиков.

В этом редакторе отлично подобранные визуальные инструменты.

Написание кода в Brackets — сплошное удовольствие.

TextWrangler

TextWrangler совершенно бесплатный редактор, который произошел от очень популярного текстового редактора BBEdit.

В высшей степени интуитивно понятный интерфейс упрощает просмотр документов и работу над проектами.

В нем есть все, что должно быть в хорошем текстовом редакторе: подсветка синтаксиса, простая навигация и т.д. Совместим он только с Mac.

Bluefish

Этот текстовый редактор с открытым исходным кодом поставляется с разнообразными инструментами программирования.

Он поддерживает разработку на PHP, C, C++, HTML, XHTML, CSS, XML, JavaScript, Java, Google Go, Vala, Ada, D, SQL, Perl, ColdFusion, JSP, Python, Ruby и shell.

Emacs

Этот редактор подходит для Linux, Windows и Mac. У него есть разные режимы редактирования, зависящие от контента (например, синтаксическая раскраска), для многих типов файлов. Он очень настраиваемый.

BBEdit

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

UltraEdit

UltraEdit в основном известен своими возможностями осуществлять блочное выделение и редактирование.

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

UltraEdit текстовый редактор кода и подсветка синтаксиса

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

В UltraEdit подсветка синтаксиса для разных языков кодирования определяется в текстовых файлах конфигурации, называемых wordfiles (.uew файлы). Файлы Word содержат набор определений и правил для связанного языка (а также конфигурации для сопоставления скобок, сворачивания кода, перечисления функций и т. Д.). UltraEdit применяет выделение в файлах слов на основе имени или расширения файла или, в некоторых случаях, путем определения строки «shebang» в верхней части файла. UltraEdit поставляется с несколькими предопределенными файлами слов для наиболее популярных и распространенных языков программирования, однако вы можете добавить (или создать) гораздо больше.

Поскольку файлы слов являются самодостаточными в текстовом файле с понятным для человека синтаксисом, их очень легко изменить.Вы можете открывать и изменять файлы слов, выбрав «Настройки» »Отображение редактора» Подсветка синтаксиса. Выберите файл Word из раскрывающегося списка и нажмите кнопку Открыть , чтобы открыть его в редакторе. Вы также можете просмотреть и изменить (при желании) папку, содержащую файлы слов, которые UltraEdit использует для выделения синтаксиса.

Для получения исчерпывающей документации по различным компонентам и настройкам, доступным для файлов Word, см. Раздел «Файлы Word».

Вы можете указать тип подсветки синтаксиса по умолчанию для новых файлов в Настройки »Отображение редактора» Подсветка синтаксиса.

Вы можете добавить или удалить файлы слов для выделения синтаксиса, нажав кнопку Добавить другой язык … в группе Форматирование вкладки Кодирование.

Вы можете изменить (или применить) выделение синтаксиса для активного файла с помощью раскрывающегося списка «Просмотр как язык» в группе «Форматирование» на вкладке «Кодирование» или с помощью селектора выделения синтаксиса в строке состояния.

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

.Руководство по выделению синтаксиса

| API расширения кода Visual Studio

Подсветка синтаксиса определяет цвет и стиль исходного кода, отображаемого в редакторе кода Visual Studio. Он отвечает за раскрашивание ключевых слов, таких как , если , или для в JavaScript, иначе, чем строки, комментарии и имена переменных.

Подсветка синтаксиса состоит из двух компонентов:

  • Токенизация: разбиение текста на список токенов
  • Theming: Использование тем или пользовательских настроек для сопоставления токенов с определенными цветами и стилями

Прежде чем углубляться в детали, хорошее начало — поиграться с инструментом инспектора области видимости и изучить, какие токены присутствуют в исходном файле и каким правилам темы они соответствуют.Чтобы увидеть как семантический, так и синтаксический токен, используйте встроенную тему (например, Dark +) в файле TypeScript.

Токенизация

Токенизация текста — это разбиение текста на сегменты и классификации каждого сегмента по типу токена.

Механизм токенизации

VS Code основан на грамматиках TextMate. Грамматики TextMate представляют собой структурированный набор регулярных выражений и записываются в виде файлов plist (XML) или JSON. Расширения VS Code могут вносить грамматики через точку включения грамматики .

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

Начиная с версии 1.43, VS Code также позволяет расширениям обеспечивать токенизацию через Semantic Token Provider. Семантические поставщики обычно реализуются языковыми серверами, которые имеют более глубокое понимание исходного файла и могут разрешать символы в контексте проекта.Например, постоянное имя переменной можно отобразить с помощью постоянного выделения во всем проекте, а не только в месте его объявления.

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

Эта статья посвящена токенизации на основе TextMate.Семантическая разметка и тематизация описаны в Semantic Highlighting Guide.

Грамматики TextMate

VS Code использует грамматики TextMate в качестве механизма токенизации синтаксиса. Изобретенные для редактора TextMate, они были приняты многими другими редакторами и IDE из-за большого количества языковых пакетов, созданных и поддерживаемых сообществом Open Source.

Грамматики

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

Жетоны и области TextMate

Токены — это один или несколько символов, которые являются частью одного и того же программного элемента. Примеры токенов включают такие операторы, как + и * , имена переменных, такие как myVar , или строки, такие как «моя строка» .

Каждый токен связан с областью, которая определяет контекст токена. Область — это список идентификаторов, разделенных точками, которые определяют контекст текущего токена. Например, операция + в JavaScript имеет ключевое слово scope .оператор.arithmetic.js .

Темы сопоставляют области действия с цветами и стилями, чтобы выделить синтаксис. TextMate предоставляет список общих областей, на которые нацелены многие темы. Чтобы ваша грамматика поддерживалась как можно более широко, старайтесь опираться на существующие области, а не определять новые.

Области вложены таким образом, что каждый токен также связан со списком родительских областей. В приведенном ниже примере используется инспектор области видимости, чтобы показать иерархию области для оператора + в простой функции JavaScript.Наиболее конкретная область действия указана вверху, а более общие родительские области перечислены ниже:

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

Введение в базовую грамматику

VS Code поддерживает грамматики json TextMate. Они вносятся через грамматики балла.

Каждый вклад грамматики определяет: идентификатор языка, к которому применяется грамматика, имя области верхнего уровня для маркеров грамматики и относительный путь к файлу грамматики. Пример ниже показывает грамматический вклад для вымышленного языка abc :

  {
  "способствует": {
    "languages": [
      {
        "id": "abc",
        "расширения": [".abc"]
      }
    ],
    "грамматики": [
      {
        "язык": "abc",
        "scopeName": "источник.abc ",
        "путь": "./syntaxes/abc.tmGrammar.json"
      }
    ]
  }
}  

Сам файл грамматики состоит из правила верхнего уровня. Обычно он делится на раздел шаблонов , в котором перечислены элементы верхнего уровня программы, и репозиторий , определяющий каждый из элементов. Другие правила грамматики могут ссылаться на элементы из репозитория , используя {"include": "#id"} .

В примере грамматики abc буквы a , b и c помечаются как ключевые слова, а вложения скобок — как выражения.

  {
  "scopeName": "source.abc",
  "шаблоны": [{"включать": "# выражение"}],
  "репозиторий": {
    "выражение": {
      "шаблоны": [{"включать": "#letter"}, {"включать": "# парен-выражение"}]
    },
    "письмо": {
      "матч": "a | b | c",
      "name": "keyword.letter"
    },
    "парен-выражение": {
      "начать": "\\(",
      "конец": "\\)",
      "beginCaptures": {
        "0": {"name": "пунктуация.paren.open "}
      },
      "endCaptures": {
        "0": {"name": "punctuation.paren.close"}
      },
      "name": "expression.group",
      "шаблоны": [{"включать": "# выражение"}]
    }
  }
}  

Механизм грамматики попытается последовательно применить правило выражение ко всему тексту в документе. Для простой программы типа:

  а
(
    б
)
Икс
(
    (
        c
        xyz
    )
)
(
а
  

В примере грамматики создаются следующие области (перечислены слева направо от наиболее конкретной до наименее конкретной):

  ключевое слово.письмо, source.abc
(punctuation.paren.open, expression.group, source.abc
    b ключевое слово.letter, expression.group, source.abc
) punctuation.paren.close, expression.group, source.abc
x source.abc
(punctuation.paren.open, expression.group, source.abc
    (punctuation.paren.open, expression.group, expression.group, source.abc
        c keyword.letter, expression.group, expression.group, source.abc
        xyz expression.group, expression.group, source.abc
    ) punctuation.paren.close, expression.group, expression.group, source.abc
) punctuation.paren.close, expression.group, source.abc
(punctuation.paren.open, expression.group, source.abc
ключевое слово.letter, source.abc
  

Обратите внимание, что текст, который не соответствует ни одному из правил, например, строка xyz , включается в текущую область.Последняя скобка в конце файла не является частью группы выражений , так как правило конец не соответствует.

Встроенные языки

Если ваша грамматика включает встроенные языки в родительский язык, такие как блоки стилей CSS в HTML, вы можете использовать точку добавления embeddedLanguages ​​, чтобы указать VS Code обрабатывать встроенный язык отдельно от родительского языка. Это гарантирует, что сопоставление скобок, комментарии и другие базовые языковые функции работают должным образом во встроенном языке.

Точка вклада embeddedLanguages ​​ отображает область видимости встроенного языка в область действия языка верхнего уровня. В приведенном ниже примере любые токены в области meta.embedded.block.javascript будут обрабатываться как содержимое JavaScript:

  {
  "способствует": {
    "грамматики": [
      {
        "путь": "./syntaxes/abc.tmLanguage.json",
        "scopeName": "source.abc",
        "embeddedLanguages": {
          "мета.embedded.block.javascript ":" javascript "
        }
      }
    ]
  }
}  

Теперь, если вы попытаетесь прокомментировать код или запустить фрагменты внутри набора токенов, помеченных meta.embedded.block.javascript , они получат правильный комментарий стиля JavaScript // и правильные фрагменты JavaScript.

Разработка нового расширения грамматики

Чтобы быстро создать новое расширение грамматики, используйте шаблоны Yeoman VS Code для запуска кода yo и выберите параметр New Language :

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

  • Идентификатор языка — уникальный идентификатор вашего языка.
  • Имя языка — удобочитаемое имя для вашего языка.
  • Имена областей — Имя корневой области TextMate для вашей грамматики

Генератор предполагает, что вы хотите определить и новый язык, и новую грамматику для этого языка. Если вы создаете грамматику для существующего языка, просто заполните их информацией о вашем целевом языке и обязательно удалите точку вклада languages ​​ в сгенерированном пакете .json .

Ответив на все вопросы, Йомен создаст новое расширение со структурой:

Помните, что если вы добавляете грамматику на язык, о котором VS Code уже знает, обязательно удалите точку вклада languages ​​ в сгенерированном package.json .

Преобразование существующей грамматики TextMate

yo code также может помочь преобразовать существующую грамматику TextMate в расширение VS Code.Опять же, начните с запуска yo code и выбора Language extension . При запросе существующего файла грамматики укажите полный путь к файлу грамматики .tmLanguage или .json TextMate:

Использование YAML для написания грамматики

По мере того, как грамматика становится более сложной, ее становится трудно понимать и поддерживать как json. Если вы обнаружите, что пишете сложные регулярные выражения или вам нужно добавить комментарии для объяснения аспектов грамматики, подумайте об использовании yaml для определения вашей грамматики.

Грамматики

Yaml имеют ту же структуру, что и грамматики на основе json, но позволяют использовать более сжатый синтаксис yaml, а также такие функции, как многострочные строки и комментарии.

VS Code может загружать только грамматики json, поэтому грамматики на основе yaml должны быть преобразованы в json. Пакет js-yaml и инструмент командной строки упрощают это.

  # Установите js-yaml как зависимость только для разработки в вашем расширении
$ npm установить js-yaml --save-dev

# Используйте инструмент командной строки для преобразования грамматики yaml в json
Синтаксисы $ npx js-yaml / abc.tmLanguage.yaml> синтаксисы / abc.tmLanguage.json  

Инъекционные грамматики

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

  • Выделение ключевых слов, таких как TODO , в комментариях.
  • Добавить более конкретную информацию об объеме к существующей грамматике.
  • Добавление выделения для нового языка в блоки кода, изолированные от Markdown.
Создание базовой грамматики внедрения

Инъекционные грамматики добавляются через package.json , как и обычные грамматики. Однако вместо указания языка грамматика внедрения использует injectTo для указания списка областей целевого языка, в которые будет внедряться грамматика.

В этом примере мы создадим простую грамматику внедрения, которая выделяет TODO как ключевое слово в комментариях JavaScript. Чтобы применить нашу грамматику внедрения в файлах JavaScript, мы используем исходный код .js целевой язык в injectTo :

  {
  "способствует": {
    "грамматики": [
      {
        "путь": "./syntaxes/injection.json",
        "scopeName": "todo-comment.injection",
        "injectTo": ["source.js"]
      }
    ]
  }
}  

Сама грамматика является стандартной грамматикой TextMate, за исключением записи верхнего уровня injectionSelector . jectionSelector — это селектор области видимости, который указывает, в каких областях должна применяться внедренная грамматика.В нашем примере мы хотим выделить слово TODO во всех комментариях // . Используя инспектор области видимости, мы обнаруживаем, что комментарии JavaScript с двойной косой чертой имеют область видимости comment.line.double-slash , поэтому наш селектор инъекции — L: comment.line.double-slash :

  {
  "scopeName": "todo-comment.injection",
  "jectionSelector ":" L: comment.line.d double-slash ",
  "шаблоны": [
    {
      "include": "# todo-keyword"
    }
  ],
  "репозиторий": {
    "todo-keyword": {
      "match": "TODO",
      "name": "ключевое слово.сделать"
    }
  }
}  

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

Встроенные языки

Грамматики

Injection также могут добавлять встроенные языки в свои родительские грамматики. Как и в случае с обычной грамматикой, грамматика внедрения может использовать embeddedLanguages ​​ для сопоставления областей видимости встроенного языка с областью действия языка верхнего уровня.

Расширение, которое выделяет SQL-запросы в строках JavaScript, например, может использовать embeddedLanguages ​​, чтобы убедиться, что все токены внутри строки с пометкой meta.embedded.inline.sql обрабатываются как SQL для основных языковых функций, таких как соответствие скобок и выбор фрагмента.

  {
  "способствует": {
    "грамматики": [
      {
        "путь": "./syntaxes/injection.json",
        "scopeName": "sql-string.injection",
        "injectTo": ["источник.js "],
        "embeddedLanguages": {
          "meta.embedded.inline.sql": "sql"
        }
      }
    ]
  }
}  
Типы токенов и встроенные языки

Существует одно дополнительное осложнение для встроенных языков языков внедрения: по умолчанию VS Code обрабатывает все токены в строке как содержимое строки, а все токены с комментарием как содержимое токена. Поскольку такие функции, как сопоставление скобок и автоматическое закрытие пар, отключены внутри строк и комментариев, если встроенный язык отображается внутри строки или комментария, эти функции также будут отключены во встроенном языке.

Чтобы переопределить это поведение, вы можете использовать meta.embedded. * для сброса маркировки токенов кодом VS как строки или содержимого комментария. Рекомендуется всегда заключать встроенный язык в область видимости meta.embedded. * , чтобы убедиться, что VS Code правильно обрабатывает встроенный язык.

Если вы не можете добавить область видимости meta.embedded. * в свою грамматику, вы также можете использовать tokenTypes в точке добавления грамматики для сопоставления определенных областей в режиме содержимого.Раздел tokenTypes ниже гарантирует, что любой контент в области my.sql.template.string обрабатывается как исходный код:

  {
  "способствует": {
    "грамматики": [
      {
        "путь": "./syntaxes/injection.json",
        "scopeName": "sql-string.injection",
        "injectTo": ["source.js"],
        "embeddedLanguages": {
          "my.sql.template.string": "sql"
        },
        "tokenTypes": {
          "мой.sql.template.string ":" другое "
        }
      }
    ]
  }
}  

Темы

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

Правила темы

TextMate определены в tokenColors и имеют тот же синтаксис, что и обычные темы TextMate. Каждое правило определяет селектор области TextMate и результирующий цвет и стиль.

При оценке цвета и стиля токена область текущего токена сравнивается с селектором правила, чтобы найти наиболее конкретное правило для каждого свойства стиля (передний план, полужирный, курсив, подчеркивание)

Руководство по цветовой теме описывает, как создать цветовую тему.Тематика семантических токенов объясняется в Semantic Highlighting Guide.

Инспектор по приему

Встроенный инструмент инспектора области видимости

VS Code помогает отлаживать грамматики и семантические токены. Он отображает области для токена и семантические токены в текущей позиции в файле, а также метаданные о том, какие правила темы применяются к этому токену.

Запустите инспектор области действия из палитры команд с помощью команды Developer: Inspect Editor Tokens and Scopes или создайте для нее привязку клавиш:

  {
  "ключ": "cmd + alt + shift + i",
  "команда": "редактор.action.inspectTMScopes "
}  

Инспектор области отображает следующую информацию:

  1. Текущий токен.
  2. Метаданные о токене и информация о его вычисленном внешнем виде. Если вы работаете со встроенными языками, важные записи здесь язык и тип токена .
  3. Раздел семантического токена отображается, когда поставщик семантического токена доступен для текущего языка и когда текущая тема поддерживает семантическое выделение.Он показывает текущий тип семантического токена и модификаторы вместе с правилами темы, которые соответствуют типу семантического токена и модификаторам.
  4. В разделе TextMate отображается список областей действия для текущего токена TextMate, причем наиболее конкретная область видимости находится вверху. Он также показывает самые конкретные правила темы, соответствующие областям действия. Это показывает только правила темы, которые отвечают за текущий стиль токена, но не показывает переопределенные правила. Если семантические токены присутствуют, правила темы отображаются только тогда, когда они отличаются от правила, соответствующего семантическому токену.

10.09.2020

.

Как я могу получить подсветку синтаксиса для моего формата в текстовом редакторе Eclipse?

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

.

Как работает подсветка синтаксиса в текстовом редакторе?

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *