Невозможно сделать обратную TAB как Shift-TAB в Zsh

Проблема: для перехода назад с помощью TAB в Zsh так же, как в Firefox,

Shift-TAB

Пример действий Shift-TAB

Я запускаю следующий код в терминале

ls <TAB>

я получил

A B C D E F G H I J K H L M N...

Я вижу в Zsh следующее, когда нажимаю TAB http://dl.getdropbox.com/u/175564/smallEx.png

Я перехожу к папке J с помощью TAB. Затем я заметил, что один раз слишком часто нажимал клавишу табуляции.

Как сделать обратную TAB для Zsh, похожую на Shift-TAB в Firefox?


person Léo Léopold Hertz 준영    schedule 02.05.2009    source источник
comment
Старый вопрос ... сегодня можно достичь bindkey более портативный   -  person vinipsmaker    schedule 24.02.2014


Ответы (3)


Попробуй это:

bindkey '^[[Z' reverse-menu-complete

Если это не сработает, попробуйте запустить zsh следующим образом (что делает setopt MENU_COMPLETE):

zsh -Y

а затем попробуйте еще раз!

person ypsu    schedule 09.05.2009
comment
@ypsu: Спасибо за ответ! Ваше решение - именно то, что я искал. - person Léo Léopold Hertz 준영; 09.05.2009
comment
Где найти ключевую команду '^[[Z' для моего малыша она не слишком интуитивна ???? - person martisj; 26.09.2018
comment
@martisj: ^ [[Z (читай: escape, левая скобка, заглавная z) - это последовательность, которую большинство терминалов записывают в стандартный ввод оболочки для shift-tab. Просто скопируйте и вставьте вышеупомянутое в zsh или какой-нибудь запускаемый rc-файл, и Shift-Tab должна работать. Если это не так, попробуйте также с другими терминалами, возможно, это проблема вашего терминала. - person ypsu; 28.09.2018
comment
Спасибо @ypsu, у вас есть ссылка на эти последовательности? - person martisj; 30.09.2018
comment
@martisj: это настройка для каждого терминала. Просматривая вывод команды infocmp для моего терминала, похоже, что это возможность cbt или kcbt. Согласно man terminfo, это означает back_tab. Вы можете найти остальные последовательности и их объяснение в этих двух источниках. Если вам только интересно, что генерирует данный ключ, просто запустите stty raw; cat и нажмите интересующую вас клавишу. - person ypsu; 08.10.2018

Этот документ должен дать вам хорошее объяснение:

Короче говоря, несколько терминалов поддерживают сдвинутую вкладку, но вы можете настроить свой терминал для поддержки последовательности клавиш «backtab», которую вы можете настроить X для отправки.

person a paid nerd    schedule 08.05.2009
comment
Это неудобно. Хорошим (и не чистым, в отличие от вашего предложения) было бы сделать .zshrc поддерживать несколько бэкэндов запросов (terminfo, zkbd, manual) и заставить ваш zsh работать под SSH, xterm, консолью linux, консолью linux raw и т. Д. .. но это предложение требует исправления очень многих компонентов ОС, и это приведет к нефункциональной конфигурации zsh в других системах ... так неудобно - person vinipsmaker; 24.02.2014
comment
Это ТОЛЬКО историческая причина, и в zsh следует изменить это старое значение по умолчанию, которое обычно не развертывается в устаревших системах. Как свидетельствуют массовые голоса за решение ACTUAL, терминалы людей ДЕЙСТВИТЕЛЬНО работают с shift + tab. - person Krisztián Szegi; 17.06.2020

Я не совсем уверен, что вам нужно от обратной вкладки, но у zsh есть есть виджет отмены, который отменяет эффект последнего нажатого нажатия клавиши, будь то Tab или что-то еще. Используйте его, привязав к ключу:

$> bindkey "<Ctrl-V><Shift-Tab>" undo 

Это означает, что вы нажимаете эти комбинации клавиш, а не печатаете буквы.

Я думаю, что это именно то, о чем вы просите, но я не могу сказать наверняка без дополнительных примеров.

person sykora    schedule 08.05.2009
comment
Я добавил картинку в свой вопрос. Я показываю, чего пытаюсь достичь. Я возвращаю TAB, например, для команды cd. - person Léo Léopold Hertz 준영; 08.05.2009
comment
@sykora: Это не так. Он игнорирует завершение TAB и отменяет d в команде cd. - person Léo Léopold Hertz 준영; 08.05.2009
comment
@sykora: Я получаю следующий код: bindkey ^ [[Z undo. Я помещаю его в терминал, и он дает мне zsh: bad pattern: ^ [[Z. - person Léo Léopold Hertz 준영; 08.05.2009
comment
Ага, цитаты забыл. А теперь попробуй. - person sykora; 08.05.2009
comment
@sykora: Вы всегда используете Ctrl-V, когда пытаетесь сделать эти сочетания клавиш. Это похоже на xev, который показывает, что вы вводите, но это встроенная функция в Shell. - person Léo Léopold Hertz 준영; 09.05.2009
comment
Используйте команду bindkey. Ctrl-V привязан к вставке в кавычки. Это означает, что все, что набирается после Ctrl-V, вставляется как есть, и никакого эффекта не выполняется. Таким образом вы можете буквально вставлять управляющие последовательности. - person sykora; 09.05.2009