4

Я столкнулся со следующей проблемой с файлами Unix .sh в Notepadd ++:

Весь документ будет окрашен в один цвет, если его содержимое будет перенесено с помощью команды heredoc . Например:

**<< 'EOF0'**

Content of the document --- All of which will be dyed in a single color.

**EOF0**

Примеры изображений:

1 - без наследственности:


2 - с наследственностью:


Почему ситуация, которую я только что описал, проблематична:

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

Что я пытался решить это:

Я попытался зайти в « Settings > Style configurator > Language --- Bash и там каким-то образом полностью удалить ЗДЕСЬ DELEM && ЗДЕСЬ Q, но я не нашел такой способ в графическом интерфейсе.

Мой вопрос:

Как вы можете удалить эти 2 стиля (или любой другой стиль) из Notepad++, чтобы они не влияли на цвет текста в документах .sh? (.ш документы в моем случае)?

Я просто не хочу, чтобы такие обертки (heredocs - обертки текста) окрашивались в любой цвет ... Я просто хочу полностью удалить их "родной" стиль Notepad++ ...

1 ответ1

4

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

Почему это не возможно напрямую:

Если вы перейдете в каталог Notepad++ в Windows, вы найдете файл с именем SciLexer.dll . Этот файл был построен из исходного исходного кода Notepad++. То, как коды Bash обнаруживают команды heredoc , жестко запрограммировано в этом файле. И этот файл не редактируется пользователем напрямую.

Тогда как редактировать SciLexer.dll:

Поскольку мы знаем, что Notepad++ является программным обеспечением с открытым исходным кодом, мы можем создать собственный SciLexer.dll из их исходных кодов. Но для этого нужно очень хорошо знать язык программирования, иначе он мог все испортить. Здесь вы найдете полный исходный код Notepad++ и SciLexer.dll вместе с подробными инструкциями по их сборке. Итак, если вы хорошо разбираетесь в программировании, вы наверняка можете просмотреть их учебник и найти файл с именем LexBash.cxx в каталоге scintilla > lexers который вы можете редактировать, чтобы удалить часть обнаружения heredoc и восстановить файлы в соответствии с этот учебник. Наконец вы получите новый SciLexer.dll . Если вы замените его SciLexer.dll в каталоге Notepad++ , он будет работать как шарм.

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

Будет ли это работать так, как вы думали:

Как вы заявили:

Я попытался зайти в « Settings > Style configurator > Language --- Bash и там каким-то образом полностью удалить ЗДЕСЬ DELEM && ЗДЕСЬ Q, но я не нашел такой способ в графическом интерфейсе.

Очевидно, что в графическом интерфейсе нет возможности удалить эти атрибуты, но мы можем удалить эти атрибуты. Для этого в Windows вам нужно перейти в этот каталог:

%AppData%\Notepad++ (скопируйте и вставьте каталог в адресную строку Windows Explorer)

В этом каталоге вы найдете несколько xml файлов. То, что нам нужно, это stylers.xml . Итак, найдите и откройте его с помощью Notepad++ или других хороших инструментов форматирования и редактирования текста, так как Windows Notepad по умолчанию портит форматирование. В этом файле ищите bash . Вы найдете что-то вроде этого:

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

На самом деле они удалят стиль форматирования HERE DELIM и HERE Q из сценариев Notepad++ Bash, но не решат вашу проблему. Потому что, как я уже говорил ранее, стиль форматирования heredoc жестко запрограммирован в SciLexer.dll . Таким образом, когда вы удаляете эти атрибуты, Notepad++ может по-прежнему обнаруживать команды heredoc и, поскольку он не найдет подходящий стиль форматирования, он переопределит стиль по умолчанию, что означает, что все строки будут черного цвета. Таким образом, ваша проблема не может быть решена так, как вы думаете.

Простой трюк, который может частично решить вашу проблему:

Notepad++ предоставляет доступ к стилю форматирования почти 52 языков программирования, но все они не нужны всем. Итак, мой трюк - отредактировать другой язык с похожим стилем форматирования для работы с файлами Bash . Я обнаружил, что NSIS использует почти тот же стиль форматирования, что и Bash . Таким образом, во время редактирования или записи .sh или других файлов Bash после открытия файла в Notepad++ просто выберите язык как NSIS .

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

%AppData%\Notepad++ (скопируйте и вставьте каталог в адресную строку Windows Explorer)

На этот раз нам нужен файл с именем langs.xml . Так что откройте его с помощью Notepad++ . Ищите bash . Вы найдете что-то вроде этого:

Скопируйте эту часть куда-нибудь еще. Теперь снова ищите nsis в этом файле langs.xml . Вы найдете что-то вроде этого:

Теперь, наконец, замените часть nsis ранее скопированной частью, как показано ниже:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .