ปรับขนาดตัวอักษรในโหมดบรรทัดและ minibuffer ชั่วคราว?


10

เมื่อทำงานกับผู้อื่นรอบ ๆ จอภาพที่แชร์หรือผ่านการแชร์หน้าจอ (เช่น Google Hangout) ฉันมักจะใช้text-scale-adjust( C-x C-+) เพื่อให้ผู้อื่นอ่านหน้าจอของฉันได้ง่ายขึ้น

ฉันชอบที่จะเพิ่มขนาดตัวอักษรของโหมดบรรทัดและมินิบัสเซอร์ในเฟรมที่เลือก ความสามารถดังกล่าวมีอยู่แล้ว? ถ้าไม่ฉันอาจไขปริศนาว่าจะเขียนเองอย่างไร ... ในที่สุด

คำตอบ:


9

การปรับขนาดข้อความจะซูมข้อความของบัฟเฟอร์เฉพาะทุกที่ที่แสดงบัฟเฟอร์

สิ่งที่คุณต้องการทำคือการซูมเฟรมที่เฉพาะเจาะจงและไม่เพียง แต่ปรับขนาดข้อความของบัฟเฟอร์ที่เฉพาะเจาะจง

คำสั่งzoom-in, zoom-outและzoom-in/out ห้องสมุดzoom-frm.elให้คุณทำทั้งสองสิ่งเหล่านี้ได้อย่างง่ายดายและค่อยเป็นค่อยไป

จากแป้นพิมพ์คำสั่งzoom-in/outคือสิ่งที่คุณต้องการใช้เป็นคำสั่งแทนtext-scale-adjust:

(define-key ctl-x-map [(control ?+)] 'zoom-in/out)
(define-key ctl-x-map [(control ?-)] 'zoom-in/out)
(define-key ctl-x-map [(control ?=)] 'zoom-in/out)
(define-key ctl-x-map [(control ?0)] 'zoom-in/out)

คุณสามารถผูกzoom-inและzoom-outการหมุนของล้อเลื่อนของเมาส์ได้ :

(global-set-key (vector (list 'control mouse-wheel-down-event)) 'zoom-in)
(global-set-key (vector (list 'control mouse-wheel-up-event))   'zoom-out)

ฉันผูกสิ่งเหล่านี้เช่นกันสำหรับซูมโดยการคลิกเมาส์ :

(global-set-key [S-mouse-1]    'zoom-in)
(global-set-key [C-S-mouse-1]  'zoom-out)
;; Get rid of `mouse-set-font' or `mouse-appearance-menu':
(global-set-key [S-down-mouse-1] nil)

zoom-frm.elคำสั่งสามารถทำตัวเหมือนtext-scale-adjust, ซูมบัฟเฟอร์ใดก็ตามที่มันจะแสดงหรือพวกเขาสามารถซูมทั้งกรอบเดียว (ทั้งหมดหน้าต่างรวมทั้ง minibuffers; โหมดออนไลน์ของตนแถบเลื่อนของตน ฯลฯ )

ตีC-uในเวลาใด ๆ ในขณะที่ใช้คำสั่งเหล่านี้จะสลับไปมาระหว่างการซูมบัฟเฟอร์และกรอบการซูม ชนิดของการซูม (บัฟเฟอร์หรือกรอบ) zoom-frame/bufferคุณได้รับโดยเริ่มต้นจะถูกกำหนดโดยตัวเลือก C-uด้วยคำสั่งซูมสลับตัวเลือก


5

การC-x C-0/-/=ผูกเริ่มต้นทำงานได้อย่างยอดเยี่ยมในการปรับขนาดตัวอักษร แต่จะใช้กับบัฟเฟอร์ที่ใช้เท่านั้น พวกเขาไม่เปลี่ยนขนาดตัวอักษรสำหรับข้อความนอกบัฟเฟอร์ตัวอย่างเช่นในโหมดบรรทัดมินิบัฟเฟอร์หรือบัฟเฟอร์อื่น ๆ

ฟังก์ชั่นด้านล่างเปลี่ยนขนาดตัวอักษรในพื้นที่เหล่านั้นด้วยทั่วโลก

คุณสามารถใช้default-font-size-ptตัวแปรเพื่อกำหนดขนาดตัวอักษรเริ่มต้นสำหรับแต่ละเซสชัน emacs

(setq default-font-size-pt 12)

(defun modi/font-size-adj (&optional arg)
  "The default C-x C-0/-/= bindings do an excellent job of font resizing.
They, though, do not change the font sizes for the text outside the buffer,
example in mode-line. Below function changes the font size in those areas too.

M-<NUM> M-x modi/font-size-adj increases font size by NUM points if NUM is +ve,
                               decreases font size by NUM points if NUM is -ve
                               resets    font size if NUM is 0."
  (interactive "p")
  (if (= arg 0)
      (setq font-size-pt default-font-size-pt)
    (setq font-size-pt (+ font-size-pt arg)))
  ;; The internal font size value is 10x the font size in points unit.
  ;; So a 10pt font size is equal to 100 in internal font size value.
  (set-face-attribute 'default nil :height (* font-size-pt 10)))

(defun modi/font-size-incr ()  (interactive) (modi/font-size-adj +1))
(defun modi/font-size-decr ()  (interactive) (modi/font-size-adj -1))
(defun modi/font-size-reset () (interactive) (modi/font-size-adj 0))

(modi/font-size-reset) ; Initialize font-size-pt var to the default value

การปรับแบบอักษรสามารถทำให้ง่ายด้วยความช่วยเหลือของhydraแพคเกจ

(require 'hydra)
(defhydra hydra-font-resize
    (global-map "C-M-=")
  "font-resize"
  ("-"   modi/font-size-decr  "Decrease")
  ("="   modi/font-size-incr  "Increase")
  ("0"   modi/font-size-reset "Reset to default size"))

ตัวอย่างการใช้งาน:

  • เพิ่มแบบอักษร 4 คะแนน C-M-= = = = =
  • ลดแบบอักษร 6 คะแนน C-M-= - - - - - -
  • รีเซ็ตฟอนต์เป็นขนาดพอยต์เริ่มต้นที่ตั้งไว้ C-M-= 0
  • คุณไม่แน่ใจว่าคุณต้องการให้แบบอักษรเล็กหรือใหญ่มากแค่ไหน :) C-M-= = = = - - = = - - 0 - - = =

อย่าลังเลที่จะเปลี่ยนC-M-=คำนำหน้าให้เป็นอย่างอื่นที่คุณชอบ

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