分页: 1 / 1

Emacs快速改变字体大小

发表于 : 2012-02-01 12:03
老蒋
Emacs的默认的字体大小设置比较不方便。
我习惯浏览器风格的按住Ctrl+滚轮,或者Ctrl+=, Ctrl+- 改变字体大小,Ctrl+0恢复默认大小。

使用方法,把以下代码贴到.emacs中
[lisp]
;; Fonts setting
;; 设置两个字体变量,一个中文的一个英文的
;; 之所以两个字体大小是因为有的中文和英文相同字号的显示大小不一样,需要手动调整一下。
(setq cjk-font-size 16)
(setq ansi-font-size 16)

;; 设置一个字体集,用的是create-fontset-from-fontset-spec内置函数
;; 中文一个字体,英文一个字体混编。显示效果很好。
(defun set-font()
(interactive)
(create-fontset-from-fontset-spec
(concat
"-*-fixed-medium-r-normal-*-*-*-*-*-*-*-fontset-myfontset,"
(format "ascii:-outline-Consolas-normal-normal-normal-mono-%d-*-*-*-c-*-iso8859-1," ansi-font-size)
(format "unicode:-microsoft-Microsoft YaHei-normal-normal-normal-*-%d-*-*-*-*-0-iso8859-1," cjk-font-size)
(format "chinese-gb2312:-microsoft-Microsoft YaHei-normal-normal-normal-*-%d-*-*-*-*-0-iso8859-1," cjk-font-size)
;; (format "unicode:-outline-文泉驿等宽微米黑-normal-normal-normal-sans-*-*-*-*-p-*-gb2312.1980-0," cjk-font-size)
;; (format "chinese-gb2312:-outline-文泉驿等宽微米黑-normal-normal-normal-sans-*-*-*-*-p-*-gb2312.1980-0," cjk-font-size)
)))

;; 函数字体增大,每次增加2个字号,最大48号
(defun increase-font-size()
"increase font size"
(interactive)
(if (< cjk-font-size 48)
(progn
(setq cjk-font-size (+ cjk-font-size 2))
(setq ansi-font-size (+ ansi-font-size 2))))
(message "cjk-size:%d pt, ansi-size:%d pt" cjk-font-size ansi-font-size)
(set-font)
(sit-for .5))

;; 函数字体增大,每次减小2个字号,最小2号
(defun decrease-font-size()
"decrease font size"
(interactive)
(if (> cjk-font-size 2)
(progn
(setq cjk-font-size (- cjk-font-size 2))
(setq ansi-font-size (- ansi-font-size 2))))
(message "cjk-size:%d pt, ansi-size:%d pt" cjk-font-size ansi-font-size)
(set-font)
(sit-for .5))

;; 恢复成默认大小16号
(defun default-font-size()
"default font size"
(interactive)
(setq cjk-font-size 16)
(setq ansi-font-size 16)
(message "cjk-size:%d pt, ansi-size:%d pt" cjk-font-size ansi-font-size)
(set-font)
(sit-for .5))

;; 只在GUI情况下应用字体。Console时保持终端字体。
(if window-system
(progn
(set-font)
;; 把上面的字体集设置成默认字体
;; 这个字体名使用是create-fontset-from-fontset-spec函数的第一行的最后两个字段
(set-frame-font "fontset-myfontset")

;; 鼠标快捷键绑定
(global-set-key '[C-wheel-up] 'increase-font-size)
(global-set-key '[C-wheel-down] 'decrease-font-size)
;; 键盘快捷键绑定
(global-set-key (kbd "C--") 'decrease-font-size) ;Ctrl+-
(global-set-key (kbd "C-0") 'default-font-size) ;Ctrl+0
(global-set-key (kbd "C-=") 'increase-font-size) ;Ctrl+=
))
[/lisp]

在Gnu Emacs 23.x win32上测试。
Linux上是类似的,只是修改一下字体集的字体格式和键盘绑定键值。

Re: Emacs快速改变字体大小

发表于 : 2012-02-04 16:55
tonghuix
好东西啊!

我喜欢!

Re: Emacs快速改变字体大小

发表于 : 2012-07-01 10:24
lkymlf598
无效果

Re: Emacs快速改变字体大小

发表于 : 2012-07-01 10:30
lkymlf598
试试这些吧
放大字体: Ctrl-x Ctrl-+ 或 Ctrl-x Ctrl-=
缩小字体: Ctrl-x Ctrl–
重置字体: Ctrl-x Ctrl-0

;; For Linux
(global-set-key (kbd "<C-mouse-4>") 'text-scale-increase)
(global-set-key (kbd "<C-mouse-5>") 'text-scale-decrease)

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

Re: Emacs快速改变字体大小

发表于 : 2012-12-17 3:19
fenghelong
还是这个靠谱些蛮 :em04

Re: Emacs快速改变字体大小

发表于 : 2012-12-31 2:31
jobinson99
lkymlf598 写了:试试这些吧
放大字体: Ctrl-x Ctrl-+ 或 Ctrl-x Ctrl-=
缩小字体: Ctrl-x Ctrl–
重置字体: Ctrl-x Ctrl-0

;; For Linux
(global-set-key (kbd "<C-mouse-4>") 'text-scale-increase)
(global-set-key (kbd "<C-mouse-5>") 'text-scale-decrease)

;; For Windows
(global-set-key (kbd "<C-wheel-up>") 'text-scale-increase)
(global-set-key (kbd "<C-wheel-down>") 'text-scale-decrease)
呀,emacs24默认就有的啊,刚刚发现,不过没用过,因为老早自己就设定好了默认字体大小了。

Re: Emacs快速改变字体大小

发表于 : 2013-01-13 1:09
bluebirdshao
jobinson99 写了:
lkymlf598 写了:试试这些吧
放大字体: Ctrl-x Ctrl-+ 或 Ctrl-x Ctrl-=
缩小字体: Ctrl-x Ctrl–
重置字体: Ctrl-x Ctrl-0

;; For Linux
(global-set-key (kbd "<C-mouse-4>") 'text-scale-increase)
(global-set-key (kbd "<C-mouse-5>") 'text-scale-decrease)

;; For Windows
(global-set-key (kbd "<C-wheel-up>") 'text-scale-increase)
(global-set-key (kbd "<C-wheel-down>") 'text-scale-decrease)
呀,emacs24默认就有的啊,刚刚发现,不过没用过,因为老早自己就设定好了默认字体大小了。
竟然还有这等神器功能
收下!