BASH命令行快捷键指南(二)

BASH命令行快捷键指南(二)_第1张图片

题图:Rocky自画BASH快捷键导图

上一篇《BASH命令行快捷键指南(一)》中列举了BASH下常用的快捷键,但是难免还会有很多其它的问题,导致一段时间过后还是不能很好掌握这些快捷键。

以下是BASH命令行快捷键相关的几个技巧:

1. 设置Meta键

我在网上搜了很多关于BASH快捷键的文章,很少会提到BASH有emacs和vi两种模式,也很少有提到emacs模式下的Meta键。大部分都默认将ALT键当做Meta键了,导致我尝试使用ALT的组合键时,根本不起作用。原来这个ALT键时需要设置才能作为Meta键的。

关于如何设置Meta键,请戳“阅读原文”查看上一篇文章《BASH命令行快捷键指南》的第2节。

2. 禁用上下左右方向箭头

我自己最常见的情况就是快捷键太多记不住,有时又懒得去查找应该是哪个快捷键,干脆就临时用上下左右的箭头按键代替,还自我安慰说现在时间太急,先搞定当前的工作,回头再看看这个操作使用哪一个快捷键。这一回头,早就忘了快捷键的事了。

因此,为了不让自己呆在舒适的区域,强迫自己在命令行使用各种快捷键,决定想办法在命令行禁用上下左右箭头。

谷歌了一下,找到了在命令行禁用上下左右箭头的方法。总体来讲,BASH调用Readline库来处理用户输入,而readline库会调用/etc/inputrc~/.inputrc文件来设置键值映射,所以可以通过在~/.inputrc文件中将上下左右箭头映射为空来达到禁用的目的。

默认情况下,linux和macOS的用户主目录~下没有.inputrc文件,需要自行创建,以下是我在macOS上新建的.inputrc文件:

这里由于使用了$if mode=emacs语句,所以这里的键值映射设置只在默认的emacs模式下才有用。

如果只想在vi模式下起作用,则需要将if语句修改为$if mode=vi, 如下:

如果没有$if语句,则不论哪一种模式,上下左右箭头都会被屏蔽。

题外话,我使用的是Ubuntu,在图形界面的终端上,似乎并没有很好解决Alt映射为Meta键的问题。平时喜欢secure crt通过ssh连接,通过在secure crt中设置“Use ALT as meta key”得到解决。但仍然没有解决图形界面上ALT键会被窗口菜单拦截的问题。求大神指导下。

3. 整理归类命令行的快捷键

BASH命令行的快捷键说少不少,说多不多,二三十个吧,说实话,要一下子记住还是挺有难度的。

基于常用的快捷键,我在整理了一个简单的图,希望能减轻记忆的难度。


BASH命令行快捷键指南(二)_第2张图片

这里只包含了一些常用的快捷键,而非所有(没有包含ctrl+c, ctrl+z等,以及一些少用的)

由于公众号对图片大小限制的原因,这里只能放下一个没有注释的图片,不嫌麻烦的同学可以搜索公众号“洛奇看世界”,后台回复”0521”,获取带注释的完整图片。


BASH命令行快捷键指南(二)_第3张图片

4. vi模式下的提示

其实在熟悉vim的情况下,命令行切换到vi模式也很好用,问题就是vi模式的命令行也有insert mode和command mode,默认情况下没有任何提示,如何判断当前处于哪个模式呢?

知乎上的这位兄弟提供了一个办法:

https://www.zhihu.com/question/23857131/answer/124738655

bash 4.2以上
编辑 $HOME 目录下的 .inputrc
增加:

bash提示符前会出现+和:这两种符号,+代表插入/替代模式,:代表普通模式。

显然,这里的重点是设置:

我尝试在Ubuntu 14.04上进行设置,完成后命令行能正常通过”+”和”:”来指示当前的模式,如下:

前面两个提示符前都是’+’号,说明当前是可以输入的insert mode;最后一行的提示符是’:’,因为我已经按ESC键切换到了command mode。

我在mac上捣鼓了一下,发现不起作用,再仔细检查的时候,发现需要bash 4.2以上,而mac上的bash竟然是3.2.57的老版本,这版本也忒特么旧了:

那看来在Mac下只能升级BASH到4.2以上了。

通过brew install bash将bash升级到4.4.19发现还是不行。
搜索找到个相关的帖子:
https://unix.stackexchange.com/questions/22527/change-cursor-shape-or-color-to-indicate-vi-mode-in-bash

这里提到可能跟PS1的设置有关,当然,貌似有人是通过其他办法hack解决了,但我还是希望不使用hack的方式,等我解决了再告诉大家吧。

你可能感兴趣的:(BASH命令行快捷键指南(二))