Linux学习总结(15)——提高 Vim 和 Shell 效率的 9 个建议
你上一次使用 CAPSLOCK 键是什么时候?很久没有了对不对?噢,我也是,它已经被遗忘了,它浪费了键盘上一个黄金位置。让我们把它重映射成 Control 键来发挥它的作用吧!这里告诉了你在不同的操作系统上的具体操作。
现在你可以保持标准键位手势,随意的敲击到 a
键左边的 crtl
了。
2. 使用 ctrl-r 来搜索和自动重做历史命令
许多人都知道可以使用箭头键来都调用上一个历史命令,但相对的,很少有人知道可以使用 ctrl-r
来迅速完成历史命令的调用。
一旦找到相应的命令,可以通过回车来执行,或者在执行前对命令进行修改,这很容易会养成习惯,特别是在你把 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 环境时,所做的第一件事就是添加如下映射
6. 重映射 Vim 的 Leader 键
如果你不熟悉 leader 键,也不知道它能为你做什么,那你就从这开始了解吧。它本质上是作为你快捷键的激活键,你可以自定义用哪个键作为你的 leader 键。所以,你可以:
这可以让你按下 leader 键结合大写 ‘j’ 后可视化的选择整段并加入行。
我个人用 ‘,’ 键作为我的leader键,这样我可以用 ‘,’ 激活我所有的快捷键,然后通过 ‘jj’ 退出插入模式。你可以在 .vimrc
中像这样映射:
7. 在 Shell 中使用 vi 模式
无论是 zsh 还是 bash 你都会想尽可能的使用同样的肌肉记忆,如果你是 vim 用户,这意味着你应该把你的 shell 从 Emacs模式(默认)切换到 vi 模式
这意味着你可以用 vim 的方式编辑你的 shell 命令行:
b
返回上一个单词dd
删除整行0, $
移动到行末- …等等。
你可以通过添加下面这行代码到 .zshrc
或 .bashrc
文件来实现这一切:
你也可以像 vim 一样映射你的 escape 键:
1 | bindkey -M viins ‘jj’ vi-cmd-mode |
另一个好处是可以通过j、k
来自然的浏览历史记录。还可以在你的.zshrc
文件中通过下面的代码添加ctrl-r
的功能。
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 上,就会感觉完全不同,这太令人恼火了。还好,可以通过同步来处理这个问题。
- 在 git 上为你的配置文件创建一个仓库,例如:Bash、Zsh、Vim 等等。记得保持更新。
- 在你所用的每个系统上都克隆一份(配置文件)到对应系统的目录下。
- 有评论说也可以用 Dropbox 来同步,似乎很棒,但我不确定在 Headless(Headless指没有显示器、键盘、鼠标等设备)的 Linux 服务器上工作效果如何。
Linux学习总结(15)——提高 Vim 和 Shell 效率的 9 个建议的更多相关文章
- Linux 学习记录 四(Bash 和 Shell scirpt)
一.什么是 Shell? 狭义的shell指的是指令列方面的软件,包括基本的Linux操作窗口Bash等,广义的shell则包括 图形接口的软件,因为图形接口其实也可以操作各种驱动程序来呼叫核心进行工 ...
- Linux学习--第五天--vim使用、rpm命令
vim使用 三种模式: 编辑模式 插入模式 命令模式 |命令|作用| |--|--| |a|在光标字符后插入| |A|在光标行尾插入| |i|在光标字符前插入| |I|在光标行首插入| |o|在光标下 ...
- linux学习笔记--vi与vim编辑器
vi编辑器全名为Visual Interface,即为可视化接口,类似于Windows中的记事本 vim相当于是vi的一个升级版本,包含vi的一切操作命令,vim相对于vi做了哪些提升: 1.vim支 ...
- Linux学习笔记3-VI 和 VIM的使用
vi: Visual Interface vim: VI iMproved 全屏编辑器, Linux系统下最强大的两款编辑器,vi和vim,vi是Linux本身自带的一款编辑器,纯文本编辑不带任何效果 ...
- Linux学习之路(三)Shell脚本初探
本文参考链接:http://www.runoob.com/linux/linux-shell.html 基本说明 Shell脚本(shell script)是一种为shell编写的脚本程序.其中she ...
- 【Linux学习三】VI/VIM全屏文本编辑器
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 一.打开关闭文件打开文件:vim /path/to/somefilev ...
- shell学习(15)- eval及shell No such file or directory解决办法
eval可以读取一连串的参数,然后按照参数特性来执行.参数数目不限,彼此之间用分号隔开. eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令:如果命令中含有变量的间接 ...
- linux 学习5 文本编辑器 vim
vim 没有菜单,只有命令 //root用户既可以用vi,也可以用vim, 无实质性区别,vim是vi的升级版//粘贴用shift+insert , 要在insert模式下粘贴,否则粘贴不全// ^ ...
- Linux学习笔记15——GDB 命令详细解释【转】
GDB 命令详细解释 Linux中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C和C++程序,功能不亚于Windows下的许多图形界面的调试工具. 和所有常用的调试工 ...
随机推荐
- BA-siemens-insight_lenum点
lenum点特性 lenum点有如下特点 如果状态字是自定义的,只能在bacnet / ip的aln层使用 如果想在ms/tp层使用lenum的功能,就必须将system profile中bacnet ...
- ISAM Indexed Sequential Access Method 索引顺序存取方法
ISAM Indexed Sequential Access Method 索引顺序存取方法 学习了:https://baike.baidu.com/item/ISAM/3013855 是IBM发展起 ...
- A server is already running. Check tmp/pids/server.pid.
A server is already running. Check tmp/pids/server.pid. 把server.pid删除: 学习了: http://stackoverflow.co ...
- Cocos2D-x设计模式发掘之中的一个:单例模式
http://www.tuicool.com/articles/NBRn2murl=pVtZACoQFKXC3u3uGwMLnTy4YDWihcVg0ata5gy506pmPpQEc0PO9hm6wG ...
- ES等待任务——是master节点上的task任务
等待中的任务编辑 有一些任务只能由主节点去处理,比如创建一个新的 索引或者在集群中移动分片.由于一个集群中只能有一个主节点,所以只有这一节点可以处理集群级别的元数据变动.在 99.9999% 的时间里 ...
- Windows下慎用内核隔离
1. 开启内核隔离后只能通过注册表关闭 2. 开启内核隔离后, 默认会启动hybrid-v, 这个东西和虚拟机是冲突的, 这样就用不了虚拟机了. 3. 解决方法: 关闭内核隔离后, 再关闭已经 ...
- c++面向对象程序设计 谭浩强 第二章答案
类体内定义成员函数 #include <iostream> using namespace std; class Time { public: void set_time(); void ...
- Fragment间相互调用并传值
public class MainFragment extends Fragment { private static final String ARG_DATE="com.example. ...
- Scrapy Architecture overview--官方文档
原文地址:https://doc.scrapy.org/en/latest/topics/architecture.html This document describes the architect ...
- PHP日期和时间处理组件-Carbon
https://packagist.org/packages/nesbot/carbon 我们使用PHP时经常需要处理日期和时间,有时会被时间时区搞混淆,而Carbon是PHP中很人性化的时间日期处理 ...