用使用vi的方法来使用bash

bash风格介绍

bash是大多数UNIX-LIKE系统的默认shell,其广泛行不言而喻,使用UNIX-LIKE系统的都会用到bash。但是大多数人都不知道我们也可以像使用vi那样使用bash。bash默认快捷键都和ctrl和alt键相关,比如ctrl+b光标向后移动一个字符、alt+b按单词向后移动等等,其实这是Emacs风格的快捷键,其特点是频繁的用到小拇指——即ctrl和alt键,这对熟悉vim的用户来说有些繁琐,而且快捷键用久了还会手指酸痛。不过实际上bash也提供了一套vi风格的快捷键和操纵方法,能够将我们从ctrl和alt键中解放出来:)

另外,在本文最后也汇总了所有的Emacs和Vi风格的bash快捷键。


vi风格使用及配置

通过在.bashrc中加入:

set -o vi

就可以将bash设置为vi风格了。如果你只是想尝试一下这种操作方法,可以直接在终端中输入以上命令。

使用方法

vi风格的bash也是分为插入和命令两种主要的模式,除此之外还有替换模式。在插入模式下可以进行普通的字符输入,而在命令模式下可以各种快捷键对当前命令行就行编辑,在命令模式下按住R可以进入替换模式,用法都基本和vi一致。不过由于bash没有状态栏,所以模式之间的切换没有明显的提示。

普通情况下我们是处在插入模式下的,按’Esc’或者’ctrl+['可以进入命令模式,除此之外也可以绑定自己喜欢的按键。在命令模式下可以使用'h'和'l'来移动光标,'j'和'k'可以浏览上一条/下一条命令,'dd'可以删除当前行,'yy'可以复制当前行,'p'可以进行粘帖,'x'可以删除当前字符,'w'可以跳到下一个单词的开始处,'b'可以跳到上一个单词的开始处,这些与vi基础一致。除此之外在命令模式下按'v'可以在vi中编辑当前命令,并在退出vi的时候自动执行,还有原本的'ctrl+r'搜索历史和'ctrl+g'退出搜索历史都可以继续使用,不过其他的键可能就需要自己绑定了。

快捷键绑定

除了上面介绍的快捷键之外,我们还可以.bashrc中绑定自己喜欢的快捷键。比如如果你喜欢一些Emacs的快捷键,我们可以将其重新绑定回来:

#清屏
bind -m vi-insert '\c-l':clear-screen
#进入vi命令模式
bind -m vi-insert 'jj':vi-movement-mode
#跳到末尾
bind -m vi-insert '\c-e':end-of-line
#跳到开头
bind -m vi-insert '\c-a':beginning-of-line
#向后一个字符
bind -m vi-insert '\c-b':backward-char
#向前一个字符
bind -m vi-insert '\c-f':forward-char
#插入上一条命令的最后一个参数
bind -m vi-insert '\m-.':insert-last-argument

另外在终端中输入:

$ bind -P

可以查看都有哪些键可以绑定,并且目前都绑定到了哪里。


bash快捷键

Emacs风格的bash快捷键:

让你提升命令行效率的 Bash 快捷键 [完整版]

高效操作Bash(推荐阅读)

Vi风格的bash快捷键:

HTML

PDF


PS:

如果你将以下内容加入到.inputrc中,然后注销再登录,就可以在其他的使用GNU Readline的工具中也使用vi风格,例如mysql command line:

set editing-mode vi

参考文章

http://my.oschina.net/xiangxw/blog/15137(这篇好像也是转的…)
http://blog.sanctum.geek.nz/vi-mode-in-bash

一条评论

Leave a Comment.