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

來源:互聯網
上載者:User

  首先先明確下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 { (shrink-window-horizontally) 這個是把視窗變窄,變寬的話是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 { shrink-window-horizontally 將當前視窗變窄
C-x } enlarge-window-horizontally 將當前視窗變寬
C-x - shrink-window-if-larger-than-buffer 如果視窗比緩衝大就縮小
C-x + balance-windows 所有視窗一樣高
windmove-right 切換到右邊的視窗(類似:up, down, left)

 

  未完待續。。。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.