bash有两种输入模式vi模式和emacs模式,其中emacs是默认模式,而且操作起来也比vi模式要快捷。可以通过 set -o vi和set -o emacs来转换。
1.在命令历史中查找
强烈推荐使用 Ctrl+r, 这个键组合是反向增量查找消息历史。很好用。 比如你很久以前输入过某个命令如。 gcc -c -DKKT - Dnnn 等等,一长串, 用上下方向键来找比较困难,这时候可以Ctrl+r,然后输入gcc很快找到该命令,重复按Ctrl+r将查找更早的历史。
其实还有 Ctrl+s 是正向增量查找的,但是由于这个快捷键被终端预设成锁屏幕了,没有效果。不过可以使用命令 stty -ixon -ixoff来解除绑定.再举一个Ctrl+r和Ctrl+s的应用吧.
比如我打入了如下命令,
echo aa bb cc d ee ff gg kk qq
然后我发现我要修改一下,把d修改成dd,这时候只要Ctrl+r 输入d,就立刻定位到d所在的位置,然后Ctrl+f一下,再输入d即可
2.命令行中移动
Ctrl+f Ctrl+b 分别是前后移动一个字符的距离
Alt+f Alt+b 是前后移动一个单词的距离这个很快比如你输入了
$grep -e funtion file1 file2 file3
然后你发现funtion错了,要移动回来修改,则可以Alt+b三下就移动回来了,很快。
Ctrl+a Ctrl+e 移动到行首和行尾。这个也很好用,如果输入了一长串命令行,发现第一个单词拼错了,可以Ctrl+a到开头再进行修改。
3.删除
Alt+d 往右边删除一个单词
Alt+Backspace 往左删除一个单词
Ctrl+u 往左删除到行首
Ctrl+k 往右删除到行末
其中这些删除都放入了删除环里面,可以使用Ctrl+y找回,Alt+y在删除环里面移动也就是说命令行里面可以使用剪切和粘贴了。
上面的几条如果用熟练了效率能提高很多。
而如果还想了解更多的快捷键绑定,敲如下命令
bind -P
发现有些你需要的功能而没有快捷键绑定的话可以如下绑定,比如我绑定了两个函数
bind -m emacs '"\M-w": kill-region'
bind -m emacs '"\M-W": copy-region-as-kill'