KornShellコマンドラインでArrowとDeleteキーが機能するようにする

StackOverflow https://stackoverflow.com/questions/1623256

  •  06-07-2019
  •  | 
  •  

質問

私はUnixが初めてで、sun solaris(v10と思います)を使用しています。シェルをKornShell(ksh)として設定しています。

コマンドラインで矢印キーと削除キーを機能させる方法を知りたいのですが。 set -o emacsを実行しましたが、バックスペースは機能しますが、矢印キーと削除キーは機能しません。

また、上下の矢印キーを設定してコマンドライン履歴を循環させることは可能ですか?

役に立ちましたか?

解決

矢印キーの場合、これをホームディレクトリの.kshrcファイルに入れることができます。

set -o emacs
alias __A=`echo "\020"`     # up arrow = ^p = back a command
alias __B=`echo "\016"`     # down arrow = ^n = down a command
alias __C=`echo "\006"`     # right arrow = ^f = forward a character
alias __D=`echo "\002"`     # left arrow = ^b = back a character
alias __H=`echo "\001"`     # home = ^a = start of line
alias __Y=`echo "\005"`     # end = ^e = end of line

等号の左側の文字の前に2つの下線文字があることに注意してください。イコールの右側の目標は、エイリアスに割り当てられた適切な制御文字を取得することです。このスクリプトの実行方法は、コマンドを実行することです(バックティック経由)

echo "\020"

__ Bに割り当てられたcontrol-n文字を取得します。

他のヒント

以下を使用し、正常に動作しています:

set -o emacs

注:これらは実際の制御文字です。 viで、i ctrl-vと入力してからctrl-Pと入力します(ctrl-pが必要な場合)

alias _A=^P
alias _B=^N
alias _D=^B
alias _C=^F

以下の行も追加:

alias __A=^P
alias __B=^N
alias __D=^B
alias __C=^F

戦わないでください。 管理者にデフォルトのシェルをbashに変更してもらってください。 bashはSolaris 10に含まれており、高度なksh互換性があり、好みのキーマッピングをサポートします。 次のように入力するだけでbashを起動できます。

$ bash

管理者が役に立たない場合は、.profileからbashを実行できます。 以下は、管理者がuser1を(rootとして)bashに変更するために行うことです。

# passwd -e user1
Old shell: /bin/ksh
New shell: /usr/bin/bash        <- You type this, use whence bash to look up the path
passwd: password information changed for user1

デフォルトのkshはksh88である可能性があります-これはエイリアス__キーボードマクロをサポートしていません。 Ksh93はそうです。基本的に、それが機能しない場合-おそらくksh88を使用しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top