Заставьте клавиши со стрелками и delete работать в командной строке KornShell

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

  •  06-07-2019
  •  | 
  •  

Вопрос

Я новичок в Unix и использую sun solaris (по-моему, v10).У меня есть оболочка, установленная как KornShell (ksh).

Мне интересно, как заставить клавиши со стрелками и клавишу удаления работать в командной строке.Я выполнил set -o emacs, и backspace работает, но не с клавишами со стрелками и клавишами удаления.

Также можно ли настроить клавиши со стрелками вверх и вниз для циклического просмотра истории командной строки?

Это было полезно?

Решение

Что касается клавиш со стрелками, вы можете поместить это в свой файл .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

Обратите внимание, что перед буквами в левой части знака равенства стоят два символа подчеркивания.В правой части значения equal цель состоит в том, чтобы получить правильный управляющий символ, присвоенный псевдониму.Способ, которым этот скрипт делает это, заключается в выполнении команды (через back-tics)

echo "\020"

чтобы получить управляющий символ-n, присвоенный __B.

Другие советы

Я использовал следующее, и оно работает нормально:

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

Вы могли бы выполнить bash из своего .profile, если ваш администратор не поможет.Вот что сделал бы ваш администратор, чтобы изменить user1 на bash (как 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

ksh по умолчанию может быть ksh88, который не поддерживает макросы alias __ keyboard.Ksh93 так и делает.В принципе, если это не сработает - вы, вероятно, используете ksh88.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top