Как установить размер шрифта в Emacs?


341

Я также хочу сохранить размер шрифта в моем .emacsфайле.



3
Это самый простой ответ, который работал для меня stackoverflow.com/a/6050987/215094
Зейнел

3
Новичок, используйте .emacs.d/init.elвместо этого, что лучше (чище и лучше контроль версий)
Lorem Ipsum Dolor

Ответы:


403
(set-face-attribute 'default nil :height 100)

Значение в 1 / 10pt, поэтому 100 даст вам 10pt и т. Д.


2
Я пытаюсь это сделать, но в Emacs 23.1.1 автозаполнение покажет только опции set-face-background set-face-font set-face-inverse-video-p set-face-underline set-face-background-pixmap set-face-foreground set-face-stipple set-face-underline-p.
Том Брито,

8
@TomBrito Какой автозаполнение? В моем Emacs set-face-attributeдействительно отсутствует в M-x( execute-extended-command), но он присутствует в M-:( eval-expression) и C-h f( describe-function). M-:это, вероятно, то, что вы хотите, если вы не хотите поместить это в свой .emacsфайл.
Рори О'Кейн

1
@ RoryO'Kane Почему некоторые команды недоступны через M-x? Вопрос Noob, я уверен, но я не знаком с тем, как emacs «работает» на низком уровне
DavidS

6
@DavidS Хороший вопрос. Я написал ответ на вопрос « Почему некоторые функции Emacs недоступны через M-x? ». Исследование ответа оказалось образовательным.
Рори О'Кейн

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

371

От Emacswiki , GNU Emacs 23 имеет встроенную комбинацию клавиш:

C-xC-+и C-xC--увеличить или уменьшить размер текста буфера


29
или "Cx C- =" и "Cx C--"
HongboZhu

59
Это локально для этого конкретного буфера. Поэтому, когда вы переключаетесь на другие редактируемые файлы, они не увидят эффекта этого изменения. Также, когда вы закроете и снова откроете буфер (или даже перезапустите Emacs), они будут иметь старый размер по умолчанию. Это может быть то, что вы хотите; Я просто констатирую это для полноты.
ShreevatsaR

9
ОП хочет сохранить конфигурацию в .emacs, а это не так.
xwl

работает в пользовательском интерфейсе spacemacs (в macos), для установки в init.el - stackoverflow.com/a/296316/432903
praagagupd

80

Нажмите Shift и первую кнопку мыши. Вы можете изменить размер шрифта следующим образом: этот сайт имеет более подробную информацию.


1
@AndrewLarned Чтобы сделать изменение постоянным, вы должны внести изменения в свой файл .emacs. (См. Ответ Криса Конвея для примера того, что он имеет в своем файле .emacs.)
Рам Нарасимхан

Есть ли способ контролировать, насколько это увеличивает или уменьшает шрифт при этом?
Маурисио А. Синелли

42

M-x customize-face RET defaultпозволит вам установить грань defaultлица, на которой основаны все остальные лица. Там вы можете установить размер шрифта.

Вот что есть в моем .emacs. на самом деле, color-theme установит основы, а затем моя пользовательская настройка лица отменит некоторые вещи. custom-set-face записывается с помощью механизма emacs customize-face:

;; my colour theme is whateveryouwant :)
(require 'color-theme)
(color-theme-initialize)
(color-theme-whateveryouwant)

(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(default ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 98 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
 '(font-lock-comment-face ((t (:foreground "darkorange4"))))
 '(font-lock-function-name-face ((t (:foreground "navy"))))
 '(font-lock-keyword-face ((t (:foreground "red4"))))
 '(font-lock-type-face ((t (:foreground "black"))))
 '(linum ((t (:inherit shadow :background "gray95"))))
 '(mode-line ((t (nil nil nil nil :background "grey90" (:line-width -1 :color nil :style released-button) "black" :box nil :width condensed :foundry "unknown" :family "DejaVu Sans Mono")))))

2
Многие продвинутые пользователи emacs предпочитают не использовать систему настройки, так как она подвержена ошибкам и мешает всем настройкам. Лучше разбить ваши настройки на отдельные файлы .el и загрузить их из init.el, а также добавить настройки вашего режима в виде кода elisp в каждом из них. Посмотрите ответ huaiyuan выше, чтобы узнать, как установить шрифт через elisp.
Эдвард Гарсон

3
FWIW, сопровождающий emacs (предположительно, «продвинутый» пользователь emacs) использует систему настройки: github.com/jwiegley/dot-emacs/blob/…
Ben

38

Это еще одно простое решение. Работает также в 24

(set-default-font "Monaco 14")

Короткие пути:

`C-+` increases font size
`C--` Decreases font size

15

У меня есть следующее в моем .emacs:

(defun fontify-frame (frame)
  (set-frame-parameter frame 'font "Monospace-11"))

;; Fontify current frame
(fontify-frame nil)
;; Fontify any future frames
(push 'fontify-frame after-make-frame-functions) 

Вы можете заменить любой шрифт по вашему выбору "Monospace-11". Набор доступных параметров сильно зависит от системы. Использование M-x set-default-fontи просмотр вкладок дополнений даст вам некоторые идеи. В моей системе, с Emacs 23 и сглаживанием включен, можно выбрать системные шрифты по имени, например, Monospace, Sans Serifи т.д.


10

Откройте emacs в X11, перейдите в меню Options, выберите «установить шрифт по умолчанию ...», измените размер шрифта. Выберите «сохранить параметры» в том же меню. Готово.


Изменения не сохранятся, если я перезапущу emacs.
погружает

9

zoom.cfg и global-zoom.cfg предоставляют привязки изменения размера шрифта (из EmacsWiki)

  • C- или C-mousewheel-up: увеличивает размер шрифта.
  • C- + или C-mousewheel-down: уменьшает размер шрифта.
  • C-0 возвращает размер шрифта к значению по умолчанию.

8

Вот вариант интерактивного изменения высоты шрифта, по одному за раз:

;; font sizes
(global-set-key (kbd "s-=")
                (lambda ()
                  (interactive)
                  (let ((old-face-attribute (face-attribute 'default :height)))
                    (set-face-attribute 'default nil :height (+ old-face-attribute 10)))))

(global-set-key (kbd "s--")
                (lambda ()
                  (interactive)
                  (let ((old-face-attribute (face-attribute 'default :height)))
                    (set-face-attribute 'default nil :height (- old-face-attribute 10)))))

Это предпочтительно, когда вы хотите изменить размер текста во всех буферах. Мне не нравятся решения, text-scale-increaseи text-scale-decreaseномера строк в сточной канаве могут быть впоследствии отрезаны.


Это потрясающе! Огромное спасибо.
Fomentia

7

Firefox и другие программы позволяют увеличивать и уменьшать размер шрифта с помощью C- + и C--. Я настроил свой .emacs так, чтобы у меня была такая же возможность, добавив следующие строки кода:

(global-set-key [C-kp-add] 'text-scale-increase)

(global-set-key [C-kp-subtract] 'text-scale-decrease)

5

Aquamacs :

(set-face-attribute 'default nil :font "Monaco-16" )

В Emacs Wiki глобально измените шрифт по умолчанию , он говорит, что вы можете использовать любой из этих:

(set-face-attribute 'default nil :font FONT )

(set-frame-font FONT nil t)

Где FONTчто-то вроде "Monaco-16", например:

(set-face-attribute 'default nil :font "Monaco-16" )

В первом предложении на вики была добавлена ​​дополнительная закрывающая скобка, которая вызвала ошибку при запуске. Я наконец заметил дополнительные закрывающие скобки и впоследствии исправил предложение в вики. Тогда оба предложения работали для меня.


3

Все зависит от того, что вы подразумеваете под изменением размера шрифта. Этот раздел EmacsWiki предоставляет лучшую и наиболее полную информацию. Он различает различные случаи (масштабирование текста, шрифт кадра, буфер / кадр и т. Д.): Изменение размера шрифта .


1

В NTEmacs 23.1 в меню «Параметры» есть опция «Установить шрифт по умолчанию ...».


1

Если вы довольны консольным emacs (emacs -nw), современные реализации vterm (например, gnome-терминал), как правило, имеют лучшую поддержку шрифтов. Кроме того, если вы привыкнете к этому, вы сможете использовать tmux, и, таким образом, станет возможной работа с вашей полной средой на удаленных серверах, даже без X.



1

Я использую пакет Hydra для управления непрерывным увеличением / уменьшением шрифта, нажимая f2 + + + +/ f2 - - - -, что означает, что нажмите f2один раз, а затем используйте +/, -чтобы контролировать только, и восстановите размер шрифта по умолчанию с помощью f2 0. Потому что у меня есть клавиатура, поэтому я также привязываю клавиатуру к настройке шрифта.

(defhydra hydra-zoom (global-map "<f2>")
  "zoom"
  ("<kp-add>" text-scale-increase "in")
  ("+" text-scale-increase "in")
  ("-" text-scale-decrease "out")
  ("<kp-subtract>" text-scale-decrease "out")
  ("0" (text-scale-set 0) "reset")
  ("<kp-0>" (text-scale-set 0) "reset"))

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

(global-set-key (kbd "<C-wheel-up>") 'text-scale-increase)
(global-set-key (kbd "<C-wheel-down>") 'text-scale-decrease)

Привязки клавиш для колеса мыши не работают, у меня есть версияGNU Emacs 24.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.10.7)
Zelphir Kaltstahl

1
Это было бы (global-set-key (kbd "<C-mouse-4>") 'text-scale-increase) (global-set-key (kbd "<C-mouse-5>") 'text-scale-decrease) в моей версии emacs (25)
Стефано

1

Вот фрагмент, который позволяет вам напрямую указать глобальный размер шрифта с помощью интерактивной функции:

(defun set-font-size ()
    "Set the font size."
  (interactive)
  (set-face-attribute
   'default nil :height
   (string-to-number
    (read-string "Font size: " (number-to-string (face-attribute 'default :height nil))))))
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.