Як встановити розмір шрифту в Emacs?


341

Я також хочу зберегти розмір шрифту у своєму .emacsфайлі.



3
Це найпростіша відповідь, яка працювала для мене stackoverflow.com/a/6050987/215094
Zeynel

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файл.
Rory O'Kane

1
@ RoryO'Kane Чому деякі команди недоступні через M-x? Питання Noob, я впевнений, але я не знайомий з тим, як emacs "працює" на низькому рівні
DavidS

6
@DavidS Добре запитання. Я написав відповідь на " Чому деякі функції Emacs недоступні через M-x? ”. Дослідження відповіді виявилося навчальним.
Rory O'Kane

Це рішення не працює, хоча ви налаштували деякі обличчя, наприклад, щоб мати чіткий шрифт, нахил і т.д.
Привіт-Ангел

371

З Emacswiki , GNU Emacs 23 має вбудовану комбінацію клавіш:

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


29
або `Cx C- = 'і' Cx C-- '
HongboZhu

59
Це локально для конкретного буфера. Тож, перейшовши на інші файли, які ви редагуєте, вони не побачать ефекту від цієї зміни. Крім того, коли ви закриєте і повторно відкриєте буфер (або навіть перезапустите Emacs), вони будуть розміром за старим типовим розміром. Це може бути те, що ви хочете; Я просто констатую це для повноти.
ShreevatsaR

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

працює в spacemacs UI (в MacOS), щоб встановити в init.el - stackoverflow.com/a/296316/432903
prayagupd

80

Натисніть Shift та першу кнопку миші. Ви можете змінити розмір шрифту наступним чином: Цей веб-сайт має більш детальну інформацію.


1
@AndrewLarned Щоб зміни були постійними, ви внесете зміни у файл .emacs. (Див. Відповідь Кріса Конвей на прикладі того, що він має у своєму досьмі .emacs.)
Рам Нарасимхан,

Чи є спосіб контролювати, наскільки він збільшує або зменшує шрифт, роблячи це?
Маурісіо А. Сінеллі

42

M-x customize-face RET defaultдозволить вам встановити defaultобличчя, на якому базуються всі інші обличчя. Там ви можете встановити розмір шрифту.

Ось що є в моїх .emacs. насправді кольорова тема задасть основи, тоді мої власні налаштування обличчя замінять деякі речі. спеціальні набори-обличчя записані за допомогою механізму налаштування-обличчя emacs:

;; 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.
EdwardGarson

3
FWIW, сервіс Emacs (імовірно, "просунутий" користувач emacs) використовує систему налаштування: github.com/jwiegley/dot-emacs/blob/…
Бен

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, перейдіть у меню Опції, виберіть "Встановити шрифт за замовчуванням ...", змініть розмір шрифту. У цьому ж меню виберіть "Зберегти параметри". Зроблено.


Зміни не зберігаються, якщо я перезавантажую emacs.
занурює

9

zoom.cfg та global-zoom.cfg забезпечують внесення змін до розміру шрифту (від EmacsWiki)

  • C-- або C-маховик: збільшує розмір шрифту.
  • C- + або C-маховик: зменшує розмір шрифту.
  • 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

Аквамаки :

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

У вікні Emacs Wiki Global Change Change Font (Шрифт за замовчуванням у глобальному масштабі) написано, що ви можете використовувати будь-який із цих:

(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-terminal) мають кращу підтримку шрифту. Плюс якщо ви звикнете до цього, то можете використовувати tmux, і тому робота з повним середовищем на віддалених серверах стає можливою навіть без X.



1

Я використовую пакет гідри для постійного управління збільшенням / зменшенням шрифту натисканням 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"))

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

(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)
Зельфір Кальтшталь

1
Це було б (global-set-key (kbd "<C-mouse-4>") 'text-scale-increase) (global-set-key (kbd "<C-mouse-5>") 'text-scale-decrease) у моїй версії emacs (25)
stefano

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.