Bagaimana cara mengatur ukuran font di Emacs?

Jawaban:

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

Nilainya dalam 1 / 10pt, jadi 100 akan memberi Anda 10pt, dll.

huaiyuan
sumber
2
Saya mencoba melakukan ini, tetapi dalam Emacs 23.1.1 pelengkapan otomatis hanya akan menampilkan opsi 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.
Tom Brito
8
@ TomBrito Autocomplete yang mana? Di Emacs saya, set-face-attributememang hilang dari M-x( execute-extended-command), tetapi ada di M-:( eval-expression) dan C-h f( describe-function). M-:mungkin itu yang Anda inginkan, jika Anda tidak ingin meletakkan ini di .emacsfile Anda .
Rory O'Kane
1
@ RoryO'Kane Mengapa beberapa perintah tidak tersedia via M-x? Pertanyaan Noob, saya yakin, tapi saya tidak terbiasa dengan bagaimana emacs "bekerja" pada level rendah
DavidS
6
@ David Pertanyaan yang bagus. Saya menulis jawaban di “ Mengapa beberapa fungsi Emacs tidak tersedia via M-x? ” Meneliti jawabannya ternyata mendidik.
Rory O'Kane
Solusi ini tidak berfungsi meskipun ketika Anda telah mengkustomisasi beberapa wajah, misalnya untuk memiliki font yang berbeda, miring, dll. Mereka akan dibiarkan dengan ukuran yang lama, dan Anda harus mengaturnya secara individual.
Hi-Angel
371

Dari Emacswiki , GNU Emacs 23 memiliki kombinasi tombol bawaan :

C-xC-+dan C-xC--untuk menambah atau mengurangi ukuran teks buffer

Brandon Leiran
sumber
29
atau `Cx C- = 'dan' Cx C-- '
HongboZhu
59
Ini bersifat lokal untuk buffer tertentu. Jadi ketika Anda beralih ke file lain yang sedang diedit, mereka tidak akan melihat efek dari perubahan ini. Juga ketika Anda menutup dan membuka kembali buffer (atau bahkan me-restart Emacs), mereka akan berada pada ukuran default lama. Ini mungkin yang Anda inginkan; Saya hanya menyatakan ini untuk kelengkapan.
ShreevatsaR
9
OP ingin menyimpan konfigurasi di .emacs, dan ini tidak.
xwl
bekerja di spacemacs UI (di macos), untuk mengatur
init.el
80

Tekan Shift dan tombol mouse pertama. Anda dapat mengubah ukuran font dengan cara berikut: Situs web ini memiliki lebih banyak detail.

George Stocker
sumber
1
@AndrewLarned Untuk membuat perubahan permanen, Anda akan membuat perubahan pada file .emacs Anda. (Lihat jawaban Chris Conway untuk contoh tentang apa yang ia miliki dalam file .emacs-nya.)
Ram Narasimhan
Apakah ada cara untuk mengontrol berapa banyak peningkatan atau penurunan font saat melakukan ini?
Mauricio A. Cinelli
42

M-x customize-face RET defaultakan memungkinkan Anda untuk mengatur defaultwajah, yang menjadi dasar semua wajah lainnya. Di sana Anda dapat mengatur ukuran font.

Inilah yang ada di .emacs saya. sebenarnya, tema warna akan mengatur dasar-dasarnya, maka pengaturan wajah kustom saya akan menimpa beberapa hal. custom-set-faces ditulis oleh mekanisme kustomisasi wajah 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")))))
Johannes Schaub - litb
sumber
2
Banyak pengguna emacs tingkat lanjut memilih untuk tidak menggunakan sistem kustomisasi, karena itu rawan kesalahan dan memadukan semua penyesuaian. Lebih baik memecah kustomisasi Anda menjadi file .el individu dan memuatnya dari init.el, dan menambahkan kustomisasi mode Anda sebagai kode elisp di dalam masing-masing file tersebut. Lihat jawaban huaiyuan di atas untuk melihat cara mengatur font melalui elisp.
EdwardGarson
3
FWIW, pengelola emacs (mungkin pengguna "lanjutan" emacs) menggunakan sistem kustomisasi: github.com/jwiegley/dot-emacs/blob/…
Ben
38

Ini adalah solusi sederhana lain. Bekerja di 24 juga

(set-default-font "Monaco 14")

Jalan pintas:

`C-+` increases font size
`C--` Decreases font size
ravi404
sumber
15

Saya punya yang berikut ini di .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) 

Anda dapat mengganti font apa pun yang Anda pilih "Monospace-11". Seperangkat opsi yang tersedia sangat bergantung pada sistem. Menggunakan M-x set-default-fontdan melihat tab-melengkapi akan memberi Anda beberapa ide. Pada sistem saya, dengan Emacs 23 dan anti-aliasing diaktifkan, dapat memilih sistem font dengan nama, misalnya, Monospace, Sans Serif, dll

Chris Conway
sumber
10

Buka emacs di X11, Pilihan menu goto, pilih "set font default ...", ubah ukuran font. Pilih "simpan opsi" di menu yang sama. Selesai

TheGreatPower
sumber
Perubahan tidak bertahan jika saya me-restart emacs.
dips
9

zoom.cfg dan global-zoom.cfg menyediakan binding perubahan ukuran font (dari EmacsWiki)

  • C-- atau C-mousewheel-up: meningkatkan ukuran font.
  • C- + atau C-mousewheel-down: mengurangi ukuran font.
  • C-0 mengembalikan ukuran font ke default.
villa david
sumber
8

Berikut ini opsi untuk mengubah ukuran ketinggian font secara interaktif, satu titik pada satu waktu:

;; 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)))))

Ini lebih disukai ketika Anda ingin mengubah ukuran teks di semua buffer. Saya tidak suka solusi menggunakan text-scale-increasedan text-scale-decreasesebagai nomor baris di selokan bisa terputus sesudahnya.

Kevin Ushey
sumber
Ini sempurna! Terima kasih banyak.
Fomentia
7

Firefox dan program lain memungkinkan Anda untuk menambah dan mengurangi ukuran font dengan C- + dan C--. Saya mengatur .emacs saya sehingga saya memiliki kemampuan yang sama dengan menambahkan baris kode ini:

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

(global-set-key [C-kp-subtract] 'text-scale-decrease)
dgn kasar
sumber
5

Aquamacs :

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

Dari Emacs Wiki Secara Global Ubah Font Default , dikatakan Anda dapat menggunakan salah satu dari ini:

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

(set-frame-font FONT nil t)

Di mana FONTsesuatu seperti "Monaco-16", misalnya:

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

Ada kurung penutup ekstra di saran pertama pada wiki, yang menyebabkan kesalahan pada startup. Saya akhirnya memperhatikan tanda kurung penutup ekstra, dan saya kemudian mengoreksi saran pada wiki. Kemudian kedua saran itu berhasil untuk saya.

7 belajar
sumber
3

Itu semua tergantung apa yang Anda maksud dengan mengubah ukuran font. Bagian EmacsWiki ini memberikan informasi terbaik dan terlengkap. Ini membedakan berbagai kasus (penskalaan teks, font bingkai, buffer / bingkai, dll.): Mengubah Ukuran Font .

Drew
sumber
1

Dalam NTEmacs 23.1, menu Opsi memiliki opsi "Set font default ...".

Phil
sumber
1

Saya senang dengan konsol emacs (emacs -nw), implementasi vterm modern (seperti gnome-terminal) cenderung memiliki dukungan font yang lebih baik. Plus jika Anda terbiasa dengan itu, Anda kemudian dapat menggunakan tmux, dan bekerja dengan lingkungan penuh Anda di server jauh menjadi mungkin, bahkan tanpa X.

blais
sumber
1

Di AquaMacs CMD +dan CMD -sesuaikan ukuran font untuk buffer saat ini.

Matius H
sumber
1

Saya menggunakan paket hydra untuk mengontrol peningkatan / penurunan font secara bersamaan dengan menekan f2 + + + +/ f2 - - - -, yang berarti menekan f2sekali, dan kemudian menggunakan +/ -untuk mengontrol font saja, dan mengembalikan ukuran font default dengan f2 0. Karena saya punya keypad, jadi saya juga mengikat keypad dengan pengaturan font.

(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"))

Dan fungsi kontrol mouse editor modern didukung oleh binding kunci di bawah ini, tekan kontrol + roda mouse untuk menambah / mengurangi font.

(global-set-key (kbd "<C-wheel-up>") 'text-scale-increase)
(global-set-key (kbd "<C-wheel-down>") 'text-scale-decrease)
Leu_Grady
sumber
Binding kunci untuk roda mouse tidak berfungsi, saya punya versiGNU Emacs 24.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.10.7)
Zelphir Kaltstahl
1
Itu akan menjadi (global-set-key (kbd "<C-mouse-4>") 'text-scale-increase) (global-set-key (kbd "<C-mouse-5>") 'text-scale-decrease) Dalam versi saya dari emacs (25)
stefano
1

Berikut cuplikan yang memungkinkan Anda menentukan secara langsung ukuran font global menggunakan fungsi interaktif:

(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))))))
Ibrahim
sumber