现在的位置: 首页 > 综合 > 正文

类Unix编程必备——Vim+tmux组合出你的专属IDE

2013年12月03日 ⁄ 综合 ⁄ 共 1947字 ⁄ 字号 评论关闭

导读:vi是类Unix操作系统中最常用的编辑器之一,甚至有学会使用vi就等于学会了Unix之说,也许言之太过,但vi确实是学习类Unix系统必学的工具之一,而Vim是基于vi的改良版本。tmux是一个多终端工具,支持多会话独立运行。本文作者Alex Young通过组合Vim和tmux建立起一个"半IDE"的工作环境,利用ctags和git很好地融合了IDE和控制台的优点,并且还为其添加了一些独特的新功能。

由于Vim和tmux的跨平台性,这一组合支持Unix、Linux、BSD、Mac

我的一位朋友遇到一个让员工使用tmux和Vim组合编辑Ruby代码的公司。他很好奇人们怎么能使用控制台版本的Vim工作,而不是便利地使用鼠标输入。

最终我发现这其实是一个很好的工作方式。刚开始,控制台版本的Vim迫使我学习正确的Vim Motion Command。与盲打结合,它让我能够有效地在文件间切换,命令行明显比使用鼠标更加高效。

我习惯把终端排放在我编辑器旁边,在Web开发时通常要求有一个控制台来运行ad-hoc命令、一个控制数据库、一个来查看日志。而一些项目又需要在文件改变时自动测试,当然,我也想同时看到我的测试结果。

实际上,已经有集成了这些功能的Vim插件,不过我觉得Vim+tmux的组合更适合我,这是一个可视化的操作。

通过这样使用控制台工具,我们很快就能建立起这么一个自己定制的轻量级IDE。同时我发现在tmux控制块空闲空间中使用Unix命令很不错,这样仅仅通过组合命令编写脚本就能实现在IDE中需要复制操作才能做到的功能。

和传统的IDE相比这种方法的不同在于它能更适合我现在的任务,而且可以有数千种命令供选择,不关心你究竟使用什么编程语言。我按照需求创造了tmux窗格,隔开Vim框,而不用创建什么模板。虽然Eclipse和Xcode提供task-focused接口,但我觉得他们做得太多了。特别是在Xcode中,键盘快捷键似乎并不是原生功能,我的手不得不经常回到鼠标上。

在tmux和Vim的组合任务切换也更加方便。作为一个自由职业者,所以我经常在3、4个项目中来回切换。通过tmux,我能够迅速地从离开一个会话也能快速返回,迅速地回到手头的工作。我认为这是一个控制台版本Vim相比于GUI版本或者使用多终端控制的优点。

为什么使用hjkl

也许并不适合所有人,但如果您能够熟练地盲打,Vim和tmux会让你的手指不离Home键,远离鼠标。这正是hjkl的秘密——人们习惯把手放在他们旁边来盲打。对于不习惯这些键的人们,尝试着通过几天的时间来适应吧。然后开始小心并系统地打字,充分地利用你们的小拇指。

hjkl的事实让我想起PC游戏新手学着使用wasd来代替键盘上的方向键的情况。虽然wasd更不直觉化,但显然它让键盘和鼠标联合工作更加简单。

设置窍门

我在.tmux.conf文件中做了这些修改:

  1. set-window-option -g mode-keys vi 
  2. bind h select-pane -L 
  3. bind j select-pane -D 
  4. bind k select-pane -U 
  5. bind l select-pane -R 

这样就是使用Vim的快捷键覆盖了tmux的。

如果你正试着习惯Vim的快捷键,请在插入模式下禁止方向键,参照:Vim:让方向键以另一种方式为你工作

如果你是Vim的新手,应该记住它同样提供ctags。TagHighLight插件能动态地在你正在使用的面板中展示多个标签,这是个类似IDE的特色。

Dotfiles

你的IDE能在多台计算机之间设置同步吗?我使用个人git库dotfiles来同步我的Vim、ctags设置和插件。我写了一些安装脚本来自动符号化链接设置文件和我本地dotfiles库中文件。当我更换计算机时,我首先做的就是检查我的库。当我编辑项目时,tmux和Vim能够一如既往地工作。

复制和粘贴

我经常使用tmux的复制粘贴命令复制粘贴控制台输出到Vim。不同的tmux设置,快捷键会有不同,所以值得你花时间去了解tmux的工作原理。默认通过Ctrl+B[进入复制模式,空格键开始选择,Enter键复制所选,然后按Ctrl+B]粘贴。

Motion Command

为了高效地使用Vim,永远对复杂的键盘操作是否能够比适当的Motion Command更有效保持怀疑。比如,在我第一次使用~分割(交换情况)时"我觉得这很有趣,但我再也不会用到它"。实际上,我在写这篇文章时就已经用了三次。我开始找到Motion Command的窍门是因为我注意到有经验的Vim用户轻易不会进入Insert模式。经常使用Vim的帮助文档,你会发现有很多可以提升你编辑技能的方法。

抱歉!评论已关闭.