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'