# 2021-01-03 #「GNU Emacs」- 快速切換視窗(Window)

2583542425發表於2021-01-03

問題描述

在 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 程式設計。

參考文獻

K4NZ / 快速切換視窗(Window)
EmacsWiki: Numbered Windows
EmacsWiki: Window Numbering Mode

相關文章