วิธีการตั้งค่าขนาดตัวอักษรใน Emacs?


341

ฉันต้องการบันทึกขนาดตัวอักษรใน.emacsไฟล์ของฉันด้วย


1
ดูเพิ่มเติมที่: stackoverflow.com/questions/2091881/…
Michael Paulukonis

3
นี่เป็นคำตอบที่ง่ายที่สุดสำหรับฉันstackoverflow.com/a/6050987/215094
Zeynel

3
สามเณรให้ใช้.emacs.d/init.elแทนซึ่งดีกว่า (การควบคุมที่สะอาดและดีกว่า)
Lorem Ipsum Dolor

คำตอบ:


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

ค่าอยู่ใน 1/10 พอยต์ดังนั้น 100 จะให้ 10 พอยต์ ฯลฯ


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เท่านั้น
Tom Brito

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
@ David เป็นคำถามที่ดี ฉันเขียนคำตอบไว้ที่“ ทำไม Emac บางฟังก์ชั่นถึงไม่สามารถใช้งานได้ผ่านทางM-x? ” การค้นคว้าคำตอบกลายเป็นเรื่องทางการศึกษา
Rory O'Kane

วิธีนี้ไม่ได้ผลเมื่อคุณปรับแต่งใบหน้าบางส่วนเช่นมีแบบอักษรที่แตกต่างกันเอียง ฯลฯ จะมีขนาดเก่าและคุณต้องตั้งค่าแยกกัน
สวัสดีแองเจิล

371

จากEmacswiki , GNU Emacs 23 มีคีย์ผสมในตัว:

C-xC-+และC-xC--เพื่อเพิ่มหรือลดขนาดข้อความบัฟเฟอร์


29
หรือ `Cx C- = 'และ' Cx
C--

59
นี่เป็นโลคัลสำหรับบัฟเฟอร์นั้น ดังนั้นเมื่อคุณเปลี่ยนไปใช้ไฟล์อื่นที่คุณกำลังแก้ไขพวกเขาจะไม่เห็นผลของการเปลี่ยนแปลงนี้ นอกจากนี้เมื่อคุณปิดและเปิดบัฟเฟอร์อีกครั้ง (หรือแม้กระทั่งเริ่ม Emacs ใหม่) มันจะเป็นขนาดเริ่มต้นเก่า นี่อาจเป็นสิ่งที่คุณต้องการ ฉันแค่บอกเรื่องนี้เพื่อความสมบูรณ์
ShreevatsaR

9
OP ต้องการบันทึกการกำหนดค่าใน. emacs และสิ่งนี้ไม่ได้
xwl

ทำงานใน spacemacs UI (ใน macos) เพื่อตั้งใน init.el - stackoverflow.com/a/296316/432903
prayagupd

80

กด Shift และปุ่มแรกของเมาส์ คุณสามารถเปลี่ยนขนาดตัวอักษรด้วยวิธีต่อไปนี้: เว็บไซต์นี้มีรายละเอียดเพิ่มเติม


1
@AndrewLarned เพื่อทำการเปลี่ยนแปลงแบบถาวรคุณต้องทำการเปลี่ยนแปลงในไฟล์. emacs ของคุณ (ดูคำตอบของ Chris Conway สำหรับตัวอย่างของสิ่งที่เขามีในไฟล์. emacs ของเขา)
Ram Narasimhan

มีวิธีใดที่จะควบคุมว่าจะเพิ่มหรือลดแบบอักษรเมื่อทำสิ่งนี้หรือไม่
Mauricio A. Cinelli

42

M-x customize-face RET defaultจะช่วยให้คุณตั้งค่าdefaultใบหน้าซึ่งใบหน้าอื่น ๆ ทั้งหมดตั้งอยู่ คุณสามารถตั้งขนาดตัวอักษรได้ที่นั่น

นี่คือสิ่งที่อยู่ใน. emacs ของฉัน ที่จริงธีมสีจะตั้งค่าพื้นฐานแล้วการตั้งค่าใบหน้าที่กำหนดเองของฉันจะแทนที่บางสิ่ง custom-set-faces เขียนโดยกลไกปรับแต่งใบหน้าของ 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 และ anti-aliasing เปิดใช้งานสามารถเลือกแบบอักษรระบบด้วยชื่อเช่นMonospace, Sans Serifฯลฯ


10

เปิด emacs ใน X11 เมนูไปที่ตัวเลือกเลือก "ตั้งค่าแบบอักษรเริ่มต้น ... " เปลี่ยนขนาดตัวอักษร เลือก "บันทึกตัวเลือก" ในเมนูเดียวกัน เสร็จสิ้น


การเปลี่ยนแปลงไม่คงอยู่หากฉันรีสตาร์ท emacs
dips

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-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)
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)
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))))))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.