Keyboard-Shortcuts
更改在 ksh 中顯示先前命令行的鍵
在 Linux 上的大多數 shell 中,當您按下該
Up-arrow
鍵時,它會顯示命令行歷史記錄中的先前命令行。我的問題是,對於
ksh
外殼,
- 如何設置其他鍵以顯示上一個命令行?
- 如何禁用該
Up-arrow
鍵以使其不顯示上一個命令行?
您可以找到的大多數教程都是關於 bash 的。Ksh 非常擅長編寫腳本,但不擅長互動使用。如果可以,請使用 zsh(最佳)或 bash(次佳)作為命令行。
今天有兩個主要的 ksh 實現:實際的 Korn shell ksh93 和複製 mksh(源自長期無人維護的 pdksh)。它們有不同的鍵綁定工具。
在 ksh93 中,
Up
andDown
鍵預設不會在命令行歷史記錄中移動。預設鍵是Ctrl
+P
和Ctrl
+N
。KEYBD
您可以通過陷阱更改鍵綁定;它相當笨拙,因為您只能將鍵轉換為其他鍵,並且所有綁定都必須在同一個地方定義。以下是如何製作Up
和Down
瀏覽歷史記錄(此程式碼進入~/.kshrc
):set -o emacs function KEYBD_trap { case ${.sh.edchar} in $'\e'[[O]A) .sh.edchar=$'\e>';; $'\e'[[O]B) .sh.edchar=$'\e<';; esac } trap KEYBD_trap KEYBD
\e[A
和代表ASCII 轉義字元\eOA
,是使用者按鍵時終端可能發送的兩個轉義序列(取決於終端及其目前模式)。同樣和為。是可以在 ksh 中用於轉義字元的符號;模式匹配 a或 a 。\e``Up``\e[B``\eOB``Down``$'\e``[[O]``[``O
在 mksh 中,您通過
bind
內置函式定義鍵綁定。Up
並Down
預設瀏覽歷史記錄(除了 kbd>Ctrl+P
和Ctrl
+N
)。以下程式碼(要放入~/.mkshrc
)禁用箭頭鍵:bind '^[OA'= bind '^[[A'= bind '^[OB'= bind '^[[B'=
^[
是您可以在 mskh 鍵綁定中為轉義字元使用的符號。所有這些資訊都在 shell 的手冊頁中,如果您不熟悉 Unix shell,則不一定是可以理解的形式。