這個世界上編程工具分為三種,Emacs,VIM 和 各種 IDE們。在過去的十幾年裡面,IDE 編程環境由於龐大資金的積極推動,取得了相當可觀的市場地位。但是曆史的發展總是螺旋前進的,隨著 IDE 環境變得越來越龐大,越來越複雜,龐大和複雜本身就成了 IDE 環境越來越無法解決的問題。隨著大量快速多邊的編程需求的出現,越來越多的程式員的開始尋找快速簡單而又靈活多變的輕量化編程環境古老的 Emacs 和 VIM 又重新進入了程式員的視線。
對於初次接觸這些輕量級編程工具的同學們來說,最直接的一個感受可能就是——哇!整個世界安靜了!從此直落的白茫茫一片大地真乾淨…… 但是呢,實話實說,真的就只有一個視窗的話是絕對不夠的。多視窗不是錯,錯的是視窗太多太亂了。所以,像 Emacs,VIM 這樣的編程環境,選擇了最簡單的解決方案——將視窗留給你自己來決定。
視窗切割
下面我們就來看看在這些古老的編輯器裡面怎樣打造自己的視窗環境。第一季先從最簡單的切分視窗開始。當然了,這些古老的工具經過漫長的發展演變已經變成了堪稱“神級”的作品,完整的使用方式已經多到不可勝數。我在這裡只涉及一些最簡單的用法,拋磚引玉,為那些剛剛開始接觸的同學們做個參考。
下面的樣本包括三種工具:Emacs - tmux - vim 。Emacs 和 vim 就不用介紹了,tmux 這個名字可能有些同學沒有聽說過。 tmux 是一個終端視窗管理器。是的,你沒有聽錯,不僅僅是編輯器可以多視窗,即便是一個終端內部也可以視窗、視窗、視窗、視窗、^_^
這一季介紹三部分內容:第一部分是如何把視窗切開來。第二部分是如何把切開的視窗收合來。 第三部分是如何調整切出來的視窗的大小。
下面的樣本當中設計的命令/操作按如下順序給出 Emacs - tmux - vim 。樣本當中的 tab 代表 tab 鍵,right 和 left 分別代表向右和向左方向鍵,up 和 down 分別代表向上和向下方向鍵。
首先是如何把視窗切開來
#+BEGIN_EXAMPLE
+---------------------------------+ +--------------------------------+
| | Ctrl-x 2 | |
| | Ctrl-b " | |
| | :split | |
| | ----------------> +--------------------------------+
| | | |
| | | |
| | | |
+---------------------------------+ +--------------------------------+
| |
| Ctrl-x 3 | Ctrl-x o Ctrl-x 3
| Ctrl-b % | Ctrl-b tab Ctrl-x %
| :vsplit | Ctrl-w down :vsplt
v v
+----------------+----------------+ +--------------------------------+
| | | | |
| | | | |
| | | | |
| | | +---------------+----------------+
| | | | | |
| | | | | |
| | | | | |
+----------------+----------------+ +---------------+----------------+
|
| Ctrl-x o Ctrl-x 2
| Ctrl-b tab Ctrl-b "
| Ctrl-w right :split
v
+----------------+----------------+
| | |
| | | +------------------------+
| | | | |
| +----------------+ | Legend: |
| | | | .Emacs |
| | | | .tmux |
| | | | .vim |
+----------------+----------------+ +------------------------+
#+END_EXAMPLE
然後是如何將切開的視窗收回去
#+BEGIN_EXAMPLE
+--------------------------------+ +---------------------------------+
| | Ctrl-x 1 | |
| | Ctrl-b ! | |
| | :only | |
+---------------+----------------+ ----------------> | |
| | | | |
| | | | |
| | | | |
+---------------+----------------+ +---------------------------------+
|
| Ctrl-x 0
| Ctrl-b x
| :hide
v
+--------------------------------+
| | +------------------------+
| | | |
| | | Legend: |
+--------------------------------+ | .Emacs |
| | | .tmux |
| | | .vim |
| | +------------------------+
+--------------------------------+
#+END_EXAMPLE
最後是調整視窗的大小
在這個地方有兩點需要說明:
1. 對於 Emacs 和 vim ,這裡給出的樣本每次只能調整一行或一列大小。大家在實際使用的時候可以選擇加上數字首碼,提高調整的效率。
2. 對於 tmux 視窗的左右調整,是根據 tmux 手冊裡面的描述給出的。但是在我的 urxvt 終端裡面不工作,不清楚是終端的原因還是 tmux 的原因。
#+BEGIN_EXAMPLE
+--------------------------------+ +--------------------------------+
| | Ctrl-x ^ | |
| a | Ctrl-b Ctrl-down | a |
| | Ctrl-w + | |
+--------------------------------+ ----------------> | |
| | | |
| | +--------------------------------+
| | | |
+--------------------------------+ +--------------------------------+
+--------------------------------+ +--------------------------------+
| | shrink-window | a |
| a | Ctrl-b Ctrl-up +--------------------------------+
| | Ctrl-w - | |
+--------------------------------+ ----------------> | |
| | | |
| | | |
| | | |
+--------------------------------+ +--------------------------------+
+----------------+----------------+ +------------------------+-------+
| | | Ctrl-x } | | |
| a | | Ctrl-b Ctrl-right| a | |
| | | Ctrl-w > | | |
| | | ----------------> | | |
| | | | | |
| | | | | |
| | | | | |
+----------------+----------------+ +------------------------+-------+
+----------------+----------------+ +-------+------------------------+
| | | Ctrl-x } | | |
| a | | Ctrl-b Ctrl-left | a | |
| | | Ctrl-w < | | |
| | | ----------------> | | |
| | | | | |
| | | | | |
| | | | | |
+----------------+----------------+ +-------+------------------------+
#+END_EXAMPLE