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'