Изменение цвета определенного фрагмента текста в emacs без создания темы

#emacs #terminal

#emacs #терминал

Вопрос:

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

Ответ №1:

Тема в любом случае не позволяет указывать цвет произвольного текста. Он описывает только набор лиц, которые будут использоваться font-lock.

Чтобы применить грань к произвольному фрагменту текста, выделите текст, затем M-: (add-text-properties (region-beginning) (region-end) '(face font-lock-warning-face))

См. Раздел faces руководства elisp о том, как создать лицо.

Emacs также поставляется с hi-lock пакетом, который может выделять регулярные выражения или строки, содержащие регулярные выражения. См. Руководство

Комментарии:

1. Я почти уверен, что это не сработает, поскольку add-text-properties это не interactive так. Может работать с M-: ( eval ) .

2. Под выделением текста вы подразумеваете установку метки в начале текста, а затем перемещение курсора в конец выделения?

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

4. @CharlieMartin да, конечно, M-:. Я просто предположил, что он действительно хочет hi-lock в любом случае.

5. Хорошо, я пробовал много вещей и приближался к своему решению. В конечном счете, я все еще очень неопытен в emacs. У меня есть очень начинающий вопрос: что представляет M-:? Я знаю, что M-x представляет собой удержание клавиши meta и нажатие x, но меня смущает M-: и что это значит. Я попытался, удерживая клавишу meta, ввести двоеточие, но получил следующее сообщение: «Синтаксис комментариев не определен, используйте:» и приглашение. Кто-нибудь может это объяснить? Большое спасибо!

Ответ №2:

как насчет M-x highlight-phrase ?

Комментарии:

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

Ответ №3:

Я знаю, что шесть лет — довольно долгий срок, но я наткнулся на этот вопрос и после долгих исследований не нашел ничего более объективного, чем то, что я в конечном итоге откопал для себя.

Чтобы раскрасить, скажем, первые 200 символов в вашем буфере, выполните команду:

 (put-text-property 1 200 'face (cons 'foreground-color "red"))
  

Если вам нужна помощь в выполнении этой команды в emacs, вот одна из многих возможностей:

  1. Введите ESC-x eval-expression .
  2. Введите или вставьте приведенную выше команду в мини-буфер после приглашения.
  3. Нажмите ENTER.

Комментарии:

1. Если это не сработает, попробуйте M-x font-lock-mode RET, чтобы отключить (переключить) режим блокировки шрифта, который при включении блокирует все цвета и грани. Кроме того, (cons ‘foreground-color «red») устарел в пользу (список: передний план «красный»), который позволяет, например, (список: передний план «красный»: фон «оранжевый» : наклонный курсив)

Ответ №4:

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

Ответ №5:

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

Например, выделите фрагмент текста, затем с помощью мыши нажмите C-mouse-2 . Затем вы можете выбрать лицо (некоторую комбинацию свойств текста с именем). Вы также можете выбрать случайные цвета фона или фона.

Если ваш Emacs особенно старый, я, кажется, помню что-то подобное M-g .

Комментарии:

1. C-mouse-2 позволяет мне изменять цвет переднего плана, но только временно. Как только я выхожу из emacs, изменение цвета переднего плана теряется. Я подозреваю, что это ожидаемо, поскольку в файл ничего не добавляется для «сохранения» изменения цвета переднего плана.

Ответ №6:

Попробуйте set-background-color , set-foreground-color , set-cursor-color .
Однако изменения не будут сохранены вместе с документом.

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

Комментарии:

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

Ответ №7:

См. http://www.emacswiki.org/emacs/HighlightTemporarily (и это не обязательно должно быть временным).

Вы можете «раскрасить» текст, проведя по нему мышью или сопоставив его с регулярным выражением, а также несколькими другими способами. Библиотека highlight.el , в частности, позволяет «раскрашивать» текст разными способами.