「GNU Emacs」- 快速切换窗口(Window)

更新日期:2020年09月30日

问题描述

在 GNU Emacs 中,切换窗口(Window)是件麻烦的事情(20.3 Using Other Windows),因为我们希望按下快捷键,直接切换到特定窗口(Window),而不是快捷键组合。

该笔记将记录:在 GNU Emacs 中,在窗口(Window)间快速切换的方法。

解决方法

我们有两个选择:EmacsWiki: Numbered WindowsEmacsWiki: Window Numbering Mode 插件

Numbered Windows

window-number-mode is an interactive compiled Lisp function in ‘window-number.el’.
nikolas/window-number: Select windows by M-1, M-2, etc in Emacs

Window Numbering Mode

window-numbering-mode is an interactive autoloaded compiled Lisp function in ‘window-numbering.el’.
nschum/window-numbering.el: Emacs: Numbered window shortcuts

我们选择的插件

我们使用 window-numbering.el 插件,通过 M-x window-numbering-mode 开启,它将在模式行(Mode Line)的最开始显示数字来指示当前窗口的序号,然后使用 M-<number> 进行窗口切换。

选型没有什么特别的原因,可能是因为我们一直都在使用 Window Numbering Mode 插件,还有就是 Numbered Windows 显示数字样式及位置不符合我们的审美 :-)

我们的配置参数

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Window Number
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; (require 'window-number)
;; (window-number-mode 1)
(require 'window-numbering)
(defun window-numbering-get-number-string (&optional window)
  (let ((s (int-to-string (window-numbering-get-number window))))
    (propertize (concat " " s " ") 'face 'window-numbering-face)))
(window-numbering-mode 1)

我们重新定义 window-numbering-get-number-string 函数,使显示在模式行(Mode Line)的数字左右两边为空格,这样会更宽、更显眼。

如上函数定义(defun)复制于 window-numbering.el 文件,并修改 s 为 (concat " " s " ") 以追加空格。如果想明白这些东西,需要学习 Emacs Lisp 编程。

参考文献

EmacsWiki: Numbered Windows
EmacsWiki: Window Numbering Mode


ToC

问题描述

解决方法

Numbered Windows

Window Numbering Mode

我们选择的插件

我们的配置参数

参考文献