ksh автозаполнение и предыдущие команды вместе - PullRequest
5 голосов
/ 30 декабря 2011

set -o vi-tabcomplete включает вкладку автозаполнения

и

set -o emacs включает историю (вверх для предыдущей команды, вниз для следующей команды)

Но,если я установлю оба параметра в ~ / .kshrc, он включит только тот, который называется emacs (history), и я не смогу включить автозаполнение вкладки.Я что-то упустил?

set -o vi-tabcomplete
set -o emacs

Сделал следующее

set -o emacs

Esc, Ctrl V -- This gave me 
$ Version AJM 93t+ 2010-02-02

Также попытался сделать

$ set -o emacs
$ bind "^I=complete"
ksh: bind: not found [No such file or directory]

Также поместите эти вещи в .kshrc

set -o emacs
bind "^I=complete"

Теперь работает только история, а не табуляция.

Ответы [ 5 ]

3 голосов
/ 04 января 2012

Опции vi и emacs являются взаимоисключающими.

Проверьте свою версию ksh и обновите свой вопрос, пожалуйста:

set -o emacs 
Ctrl-V          # (yes, press control-v) this prints ksh version

Попробуйте:

set -o emacs
bind "^I=complete"      # tab completion

ЧтоЯ не помню, вводите ли вы буквально карету-I или контроль-I, чтобы получить правильную привязку.

2 голосов
/ 16 января 2017

В моей версии Версия M-11/16 / 88f с использованием оболочки ksh , а не ksh93. Я запускаю его, используя два раза клавишу ESC. Кроме того, вместо обычного способа использования вкладки затем дважды нажмите клавишу ESC. Но поведение не то же самое, более простое, чем в обычной оболочке sh или bash, когда вы нажимаете клавишу TAB, вы получаете список возможных совпадений с уже имеющейся строкой. Используя эту оболочку и нажимая клавишу ESC 2 раза, вы получите только автозаполнение, когда соответствует только один случай. Если вы хотите увидеть, сколько дел вы можете использовать комбинацию «ESC + =», а затем продолжить запись.

Резюме:

"ESC + ESC" => автозаполнение при наличии только совпадения.

"ESC + =" => показать все совпадения.

1 голос
/ 12 октября 2013

Это сработало для меня

Введите ~ / .environ.ksh следующее

set -o tabcomplete  # Auto Tab complete
set -o emacs        # History
0 голосов
/ 18 января 2019

проверьте вашу оболочку, используя echo $ 0 -> если это ksh, тогда.сделайте запись в .profile как: set -o vi

  1. для всех последних выполненных команд, используйте ключевое слово как: ESC + k (для последней выполненной команды назад) и ESC + j (для прямой команды)
  2. для автозаполнения пути используйте команду как ESC + \
0 голосов
/ 03 апреля 2018

Просто добавьте эти 2 строки в файл .profile в конце, чтобы решить эту проблему:

SHELL=/bin/ksh # Correct it if your ksh is at different path
exec $SHELL    # To fix autocomplete bug of standard ksh. It must be last line.
...