學習Emacs系列教程(十) 多視窗

2022-03-16 04:58:17 字數 3003 閱讀 9621

首先先明確下emacs視窗的概念,我們雙擊emacs圖示開啟程式見到的windows視窗叫做frame,包含了標題欄,選單欄,工具欄,最下面的mode line和回顯區域,而中間一大塊顯示文字的區域則是window,實際上每個視窗都有自己的mode line。下文中我將稱frame為框,window為視窗,這裡和我們平時理解的windows視窗有點區別。

在emacs裡面,乙個框可以分割出多個視窗,多個視窗可以顯示同乙個或者不同buffer,但是乙個視窗只能屬於乙個frame。乙個視窗同時也只能顯示乙個buffer,但是同時開啟兩個視窗也能顯示乙個buffer的不同部分,這兩個視窗是同步的,就是說如果在乙個視窗中對buffer做了修改,在另乙個視窗中可以立即表現出來。但在乙個視窗中移動游標之類的操作不會影響另乙個視窗。多緩衝中有當前緩衝這個概念,同樣對於多視窗也有當前視窗,對於當前選中的視窗其mode line相對於其它視窗顏色會深一些。

一、顯示視窗

命令c-x 2 (split-window-vertically) 垂直拆分視窗,就是把乙個視窗上下等分為兩個,拆分出來的視窗預設是顯示當前buffer。可以多次使用這個命令,會把乙個視窗不停的兩等分。對應也有水平拆分視窗的命令c-x 3 (split-window-horizontally),這兩個命令也可以混合使用,如果你螢幕夠大畫個迷宮出來也不是不可能的。拆分命令還可以加引數,比如m-5 c-x 2就是說上面那個視窗只佔5行,其餘的位置都給下面的視窗。

c-x o (other-window) 可以在多個視窗中切換,從上到下乙個乙個的來。使用引數來控制選中下面第幾個視窗,想往回選的話引數設為負數。

c-m-v (scroll-other-window),用來滾動下乙個視窗。

上一章我們看到有些命令加了c-x 4這個字首,這一類命令都是用來操作多視窗的。

c-x 4 b

bufname (switch-to-buffer-other-window) 在另乙個視窗開啟緩衝。

c-x 4 c-o

bufname (display-buffer) 在另乙個視窗開啟緩衝,但不選中那個視窗。

c-x 4 f

filename (find-file-other-window) 在另乙個視窗開啟檔案。

c-x 4 d

directory (dired-other-window) 在另乙個視窗開啟資料夾。

c-x 4 m (mail-other-window) 在另乙個視窗寫郵件。

c-x 4 r

filename (find-file-read-only-other-window) 在另乙個視窗以唯讀方式開啟檔案。

這一類的命令預設是垂直拆分視窗。

二、重排視窗

視窗排的密密麻麻看上去肯定不舒服,這時使用c-x 0 (delete-window) 來關閉當前視窗,需要注意的是視窗和緩衝是兩個概念,關閉乙個視窗對緩衝,或者我們正在編輯的檔案沒有任何影響。也可以使用c-x 1 (delete-other-windows) 關閉其它所有視窗。如果想連視窗開啟的緩衝一併關掉使用c-x 4 0 (kill-buffer-and-window)。

我們還可以對視窗的大小做些改變:c-x ^ (enlarge-window)讓視窗變得高點,c-x (enlarge-window-horizontally) ,c-x - (shrink-window-if-larger-than-buffer)這個看字面意思就能理解,如果視窗比緩衝大就縮小點,c-x + (balance-windows)這個命令和前面那個沒有任何關係是將所有視窗變得一樣高。

最後再說乙個在視窗中切換的命令,有時候視窗開的太多自己也記不住順序,使用c-x o就會很麻煩。有一類命令能讓你在上下左右切換當前視窗,m-x windmove-right 就是移到右邊那個視窗,對應的"left","up「, "down",向四個方向都能移。

不知不覺寫了十章了,雖然慢了點,但還堅持下來了,繼續努力!

小結:按鍵

命令作用

c-x 2

split-window-vertically

垂直拆分視窗

c-x 3

split-window-horizontally

水平拆分視窗

c-x o

other-window

選擇下乙個視窗

c-m-v

scroll-other-window

滾動下乙個視窗

c-x 4 b

switch-to-buffer-other-window

在另乙個視窗開啟緩衝

c-x 4 c-o

display-buffer

在另乙個視窗開啟緩衝,但不選中

c-x 4 f

find-file-other-window

在另乙個視窗開啟檔案

c-x 4 d

dired-other-window

在另乙個視窗開啟資料夾

c-x 4 m

mail-other-window

在另乙個視窗寫郵件

c-x 4 r

find-file-read-only-other-window

在另乙個視窗以唯讀方式開啟檔案

c-x 0

delete-window

關閉當前視窗

c-x 1

delete-other-windows

關閉其它視窗

c-x 4 0

kill-buffer-and-window

關閉當前視窗和緩衝

c-x ^

enlarge-window

增高當前視窗

c-x

enlarge-window-horizontally

將當前視窗變寬

c-x -

shrink-window-if-larger-than-buffer

如果視窗比緩衝大就縮小

c-x +

balance-windows

所有視窗一樣高

windmove-right

切換到右邊的視窗(類似:up, down, left)

未完待續。。。

學習Emacs系列教程(二) 導航

學習emacs系列教程 二 導航 學習emacs系列教程 一 基本使用 href 學習emacs系列教程 一 基本使用 上回開了個頭,簡單的介紹了emacs的一些基本常識,這回繼續說基本常識,怎麼移動你的游標。可能有人會說,這上下左右鍵不是很好用嗎,還用你來講。呶,emacs的強大在於你能夠只使用鍵...

學習Emacs系列教程(二) 導航

上回開了個頭,簡單的介紹了emacs的一些基本常識,這回繼續說基本常識,怎麼移動你的游標。可能有人會說,這上下左右鍵不是很好用嗎,還用你來講。呶,emacs的強大在於你能夠只使用鍵盤左邊那堆鍵來完成任何事情 不包括頂上的esc和function 這也是emacs的設計宗旨。為了試驗這些按鍵,大家在進...

學習Emacs系列教程(九) 緩衝管理

首先提及一點,這裡的緩衝就是emacs中的buffer。鬧,所謂的緩衝就是當前你正在編輯的東東。比如,你開啟乙個檔案emacs會建立乙個緩衝來裝載這個檔案,當你呼叫幫助時emacs會建立乙個叫 help 的緩衝來顯示幫助內容,開啟tutorial則會出現tutorial.cn這個緩衝。本質上來說緩衝...