提高 Vim 和 Shell 效率的 9 个建议

1. 重映射 CAPSLOCK 键

你上一次使用 CAPSLOCK 键是什么时候?很久没有了对不对?噢,我也是,它已经被遗忘了,它浪费了键盘上一个黄金位置。让我们把它重映射成 Control 键来发挥它的作用吧!这里告诉了你在不同的操作系统上的具体操作。

现在你可以保持标准键位手势,随意的敲击到 a键左边的 crtl 了。

2. 使用 ctrl-r 来搜索和自动重做历史命令

许多人都知道可以使用箭头键来都调用上一个历史命令,但相对的,很少有人知道可以使用 ctrl-r来迅速完成历史命令的调用。

ctrlr

一旦找到相应的命令,可以通过回车来执行,或者在执行前对命令进行修改,这很容易会养成习惯,特别是在你把 CAPSLOCK 键重映射以后。

3. 使用 OS X 系统的 iTerm

iTerm 不是必须要用的高效工具,但绝对能提升效率。它有如下特性:

  • 屏幕分割
  • 选中即复制
  • 剪切历史
  • 全屏切换
  • 系统热键
  • Exposé 所有 Tab
  • 保存当前快照

我还不知道有哪个人换到 iTerm 以后还愿意换回来的。上吧。

4. 把 Zsh 作为 Shell

大部分人会像我以前一样是用 Bash 的人,看了 Zsh 的优点之后,绝大多数人就会对它赞不绝口并且再也不愿意用 Bash 了。它的特性如下:

  • 目录补全:ve/pl/re --> vendor/plugins/redmine
  • 环境变量展开:$PATH --> /your/full/path
  • 智能修正:/pbulic/html 变 /public/html
  • 拼写修正
  • 命令历史共享
  • 行编辑高亮模式
  • 完美兼容 Bash 大部分配置
  • 运行/bin/sh的时候可以媲美Bash
  • 支持vim模式
  • OhMyZsh支持

最后一条是决定性的,ohmyzsh包含大量插件(包括 rails、git、OS X、brew 等等),有超过80个终端主题和自动更新。ohmyzsh通过这些来让 shell 用起来很爽。更详细请查看这里

5. 重映射 vim 的 ESCAPE 键

vim 有多个模式并不是什么大问题,但在模式间切换的时候会感觉很糟。ESC 键有点远,这太麻烦了。当我面对新的 vim 环境时,所做的第一件事就是添加如下映射


  1. inoremap jj <ESC>

6. 重映射 Vim 的 Leader 键

如果你不熟悉 leader 键,也不知道它能为你做什么,那你就从这开始了解吧。它本质上是作为你快捷键的激活键,你可以自定义用哪个键作为你的 leader 键。所以,你可以:


  1. nnoremap j VipJ

这可以让你按下 leader 键结合大写 ‘j’ 后可视化的选择整段并加入行。

我个人用 ‘,’ 键作为我的leader键,这样我可以用 ‘,’ 激活我所有的快捷键,然后通过 ‘jj’ 退出插入模式。你可以在 .vimrc中像这样映射:


  1. let mapleader = ","

7. 在 Shell 中使用 vi 模式

无论是 zsh 还是 bash 你都会想尽可能的使用同样的肌肉记忆,如果你是 vim 用户,这意味着你应该把你的 shell 从 Emacs模式(默认)切换到 vi 模式

这意味着你可以用 vim 的方式编辑你的 shell 命令行:

  • b 返回上一个单词
  • dd 删除整行
  • 0, $移动到行末
  • …等等。

你可以通过添加下面这行代码到 .zshrc 或 .bashrc 文件来实现这一切:


  1. bindkey -v

你也可以像 vim 一样映射你的 escape 键:


  1. bindkey -M viins ‘jj’ vi-cmd-mode

另一个好处是可以通过j、k来自然的浏览历史记录。还可以在你的.zshrc文件中通过下面的代码添加ctrl-r的功能:


  1. bindkey ‘^R’ history-incremental-search-backward

8. 把tmux加入工作流程

tmux是一个终端复用器,它允许你连接和管理多个服务器端会话。在tmux中可以启动并连接对话,还可以断开,然后在不同的时间地点再次连接。

你也许熟悉类似的解决方案,GNU Screen,但比起 screen,tmux 有如下优势

  • screen 是一个又大又重的项目,并且它的编码中有许多问题
  • tmux 是一个轻便的项目,有现代的、高效的代码库
  • tmux 是一个完整的客户端服务器项目,而 screen 是屏幕仿真软件
  • tmux 支持 vim 和 emacs 的键盘布局
  • tmux 支持运行时自动重命名窗口
  • tmux 能很方便的通过 shell 实现脚本化
  • tmux 自带垂直分屏功能,而 screen 里屏幕被固定死了

如果你用不上终端复用功能,也可以是尝试一下 tmux,你会获益的。[ 更新: 这有 tumx 的最全启蒙书。]

9. 同步工作环境

好了,在你的 MBP 能体验到酷炫的 shell 和 vim 了,但一旦你都 SSH 到你的 Linux 上,就会感觉完全不同,这太令人恼火了。还好,可以通过同步来处理这个问题。

  1. 在 git 上为你的配置文件创建一个仓库,例如:Bash、Zsh、Vim 等等。记得保持更新。
  2. 在你所用的每个系统上都克隆一份(配置文件)到对应系统的目录下。
  3. 有评论说也可以用 Dropbox 来同步,似乎很棒,但我不确定在 Headless(Headless指没有显示器、键盘、鼠标等设备)的 Linux 服务器上工作效果如何。


原文发布时间为:2015-07-05


本文来自合作伙伴“Linux中国”

时间: 2025-01-01 18:49:45

提高 Vim 和 Shell 效率的 9 个建议的相关文章

asp.net-如何提高Lodop套打效率?

问题描述 如何提高Lodop套打效率? 正常用lodop重複打印10次或者20次的時候沒什麼問題,當數量到上千的時候,打印預覽就需要很長的時間了,有沒什麼提高效率的好方法?Lodop官網的套打演示案例試過了還是一樣,謝謝 代碼是測試打印數量太多的時候用的,結果就是要等很久,效率很低.. function print_view() { //LODOP = getLodop(); LODOP.PRINT_INIT(""); LODOP.SET_PRINT_PAGESIZE(1, 2970,

SQL教程:提高SQL执行效率的几点建议

提高SQL执行效率的几点建议: ◆尽量不要在where中包含子查询; 关于时间的查询,尽量不要写成:where to_char(dif_date,'yyyy-mm-dd')=to_char('2007-07-01','yyyy-mm-dd'); ◆在过滤条件中,可以过滤掉最大数量记录的条件必须放在where子句的末尾; FROM子句中写在最后的表(基础表,driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有三个以上的连接查询,

如何提高WEB程序的效率 (第一篇SQL篇)  (转)

web|程序 如何提高WEB程序的效率 (第一篇"SQL篇") 很多网友非常不喜欢用ASP来编程,他们总是抱怨说ASP程序太慢,效率太低.更希望用PHP,JSP等来写程序.其实不能从 "认为" 这个角度来看问题 ,而应该从实际中看问题,ASP真的很慢的吗,那么微软的站为何用ASP也不慢呢?PHP真的很快吗,其实它也仍然是解释性的语言.只不过在Linux下的结合比较好而以.JSP的开发也不会简单到何处,而且要通过JDBC-ODBC桥才能连接ACCESS库等,这种情况下

如何提高WEB程序的效率 (第一篇)

web|程序 很多网友非常不喜欢用ASP来编程,他们总是抱怨说ASP程序太慢,效率太低.更希望用PHP,JSP等来写程序.其实不能从 "认为" 这个角度来看问题 ,而应该从实际中看问题,ASP真的很慢的吗,那么微软的站为何用ASP也不慢呢?PHP真的很快吗,其实它也仍然是解释性的语言.只不过在Linux下的结合比较好而以.JSP的开发也不会简单到何处,而且要通过JDBC-ODBC桥才能连接ACCESS库等,这种情况下效率也不高. 其实,三种语言各有特点,就是优,缺点.作为一个程序员不应

如何提高WEB程序的效率

web|程序 很多网友非常不喜欢用ASP来编程,他们总是抱怨说ASP程序太慢,效率太低.更希望用PHP,JSP等来写程序.其实不能从 "认为" 这个角度来看问题 ,而应该从实际中看问题,ASP真的很慢的吗,那么微软的站为何用ASP也不慢呢?PHP真的很快吗,其实它也仍然是解释性的语言.只不过在Linux下的结合比较好而以.JSP的开发也不会简单到何处,而且要通过JDBC-ODBC桥才能连接ACCESS库等,这种情况下效率也不高. 其实,三种语言各有特点,就是优,缺点.作为一个程序员不应

如何提高CSS网页渲染效率

  如何提高CSS网页渲染效率?CSS学习过程中需要关注的细节之处非常多,而这些细节之处也是影响CSS的网页渲染效率的重要因素,黑猫整理了由前辈们提出的提高CSS网页渲染效率的方法,一起来学习一下. 1.十六进制的颜色值对位数与大小写 编写十六进制颜色值时你可能会用小写字母或省略成3位数,关于这写法没找到确实的数据证明对浏览器的渲染效率是否有影响,但十六进制的颜色值默认标准是大写及6位数标注.在未知情况下不希望冒险而降低了渲染的效率. * 不赞成 - color:#f3a; * 建议用 - co

提高SQL执行效率的几点建议

提高SQL执行效率的几点建议: 尽量不要在where中包含子查询; 关于时间的查询,尽量不要写成:where to_char(dif_date,'yyyy-mm-dd')=to_char('2007-07-01','yyyy-mm-dd'); 在过滤条件中,可以过滤掉最大数量记录的条件必须放在where子句的末尾; FROM子句中写在最后的表(基础表,driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有三个以上的连接查询,那就

如何提高MySQL数据分页效率

  本节的数据编辑插教程给我们简单介绍如何提高MySQL数据分页效率,下面我们将会给出的这段代码是大数据量时提高分页的效率的测试代码. 如果你也需要设置MySQL数据提高分页效率,那么,就一起来看看代码段吧! --提高分页效率:实现分页时只读取显示数据,需要先在数据库创建数据库"TestForPaging" use TestForPaging go --创建表SomeData create table SomeData ( id int primary key, name varcha

提高编写CSS代码效率的10个习惯

  这篇文章介绍了提高编写CSS代码效率的10个习惯,看了觉得不错,大家可以学习一下.文章底部有原文链接. 1.保持一贯性. 就像其它的任何事一样,值得一直保持一贯性.保持连贯性,而不是想到什么就给id和class命名什么. CSS的级联样式有利于加深你的记忆,而且充分利用样式的继承去设置样式表. 首先声明通用的部分的样式,然后继续声明不通用的.这样当你需要的时候更容易的去覆盖一个特定的样式.因为样式更易于阅读和更具逻辑性,你会发现编写CSS更迅速. 使用一种最是适合你的方式. 复位和覆盖 链接