Emacs tmux 和 vim 环境下的多窗口工作环境 - 第一季

这个世界上编程工具分为三种,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
复制代码



posted on   David Young 杨博华  阅读(3042)  评论(1编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
< 2012年2月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 1 2 3
4 5 6 7 8 9 10

导航

统计

点击右上角即可分享
微信分享提示