Терминал на Mac - Удалить поведение ключа

Я хотел бы, чтобы клавиша удаления (ну, комбинация Fn+Backspace) на моем Mac велась в терминале так же, как обычно. То есть делать вперед-удалять. Прямо сейчас он выводит тильду - по крайней мере, это то, что я вижу.

В Binding Fn-Delete в zsh на Mac OS X я увидел некоторые хакеры и попробовал их тоже:

(нажал [Fn]+[<---] внутри кавычек ниже)

$ echo "~" | od -c
0000000   ~  \n
0000002

Как я могу заставить его вести себя?

1 ответ

Решение

Ответ на вопрос, с которым вы связались, показывает, как найти последовательность управления, которую Терминал отправляет при нажатии Fn Backspace: echo ' Control V Fn Backspace ' | od -c,
Control V имеет решающее значение для предотвращения специальной интерпретации (вероятного) начального символа ESC.

Терминал, вероятно, отправляет четырехбайтовую последовательность ESC [ 3 ~,

Вопрос, на который вы ссылались, был о zsh. Комментарий к ответу дает команду связать последовательность в zsh, т.е.

bindkey "^[[3~" delete-char

(обычно в ~/.zhsrc).

Однако bash является оболочкой по умолчанию в Mac OS X, поэтому команда для привязки ключа (и функции, доступные для привязки) будут другими, если вы используете bash: bind '"\e[3~": delete-char', Возможно, вы захотите поместить это в файл запуска bash 1.

Если вы обнаружите, что используете bash, но вместо этого хотите использовать zsh, то есть два способа изменить эффективную оболочку:

  • использование chsh -s /bin/zsh изменить вашу оболочку по умолчанию.
    Это изменит оболочку, которую запускает Терминал, а также оболочку, запущенную для других сеансов входа в систему (например, для входа через SSH).
  • Настройте просто терминал, чтобы использовать другую оболочку в настройках терминала.
    Терминал > Настройки..., кнопка панели настроек, затем вкладка Оболочка,
    изменить команду запуска на (например) /bin/zsh -l,

1 Обычно ~/.bashrc, но вы также можете поставить соответствующую строку ("\e[3~": delete-char) в ~/.inputrc вместо. Если вы положите его .bashrc, вы хотите убедиться, что у вас также есть строка, как source ~/.bashrc в ~/.bash_profile, или же ~/.bash_login (если у вас нет ни того, ни другого, создайте первое; если у вас уже есть ровно один из них, используйте тот, который у вас есть; если у вас есть оба, то вам следует это исправить, поскольку, вероятно, используется только первое).

Другие вопросы по тегам