Make Arrow and delete keys work in KornShell command line

前端 未结 5 2062
猫巷女王i
猫巷女王i 2020-12-13 07:10

I am new to Unix and am using sun solaris (v10 I think). I have my shell set as KornShell (ksh).

I am wondering how to make the arrow keys and delete key work in th

相关标签:
5条回答
  • 2020-12-13 07:51

    For the arrow keys, you can put this into your the .kshrc file in your home directory:

    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
    

    Note that there are two underscore characters before the letters on the left side of the equal sign. On the right-hand side of the equal, the goal is to get the proper control character assigned to the alias. The way this script does that, is by running the command (via back-tics)

    echo "\020"
    

    to get the control-n character assigned to __B.

    0 讨论(0)
  • 2020-12-13 07:51

    Don't fight it. Just have your administrator change your default shell to bash. bash is included with Solaris 10, is highly ksh compatible, and it supports the key mappings that you like. You can launch bash just by typing:

    $ bash
    

    You could exec bash out of your .profile if your administrator is not helpful. Here is what your administrator would do to change user1 to bash (as root):

    # 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
    
    0 讨论(0)
  • 2020-12-13 07:51

    The default ksh might be ksh88 - which does not support the alias __ keyboard macros. Ksh93 does. Basically, if it doesn't work - you are probably using ksh88.

    0 讨论(0)
  • 2020-12-13 07:51

    Since it took me forever to figure out the delete key on my Mac, to get the delete key to work you can add stty erase ^? to your .kshrc file. Instead of typing the actual characters for ^? you can just hit the delete key and it will output ^?. So in combination with Tim's answer my .kshrc file looks like

    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
    stty erase                  # prevent command from being echoed
    stty erase ^?               # allow for delete key to work
    
    0 讨论(0)
  • 2020-12-13 07:59

    I used following and is working fine:

    set -o emacs
    

    Note: these are the actual control characters. In vi, type i ctrl-v then ctrl-P (if u want a ctrl-p)

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

    and add below lines too:

    alias __A=^P
    alias __B=^N
    alias __D=^B
    alias __C=^F
    
    0 讨论(0)
提交回复
热议问题