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

5296
Martin Janiczek

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

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

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

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

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

7
Комментарии к [SU 169930] (http://superuser.com/questions/169920/binding-fn-delete-in-zsh-on-mac-os-x/169930#169930) кажутся достаточно ясными: вы должны использовать Control-v перед нажатием Fn-BackSpace, который, вероятно, будет отображаться как `033 [3 ~` from * od *. Затем используйте `bindkey" ^ [[3 ~ "delete-char`, чтобы связать то, что * Terminal * отправляет функции в * zsh *. Это не работает для вас? Chris Johnsen 13 лет назад 0
Попытался добавить `bindkey" ^ [[3 ~ "delete-char` в мой ~ / .profile, перезапустил Терминал и сказал, что не знает` bindkey`. Добавил его в .zshrc, перезапустил Терминал, и ничего не происходит. Я не думаю, что я использую _zsh_. Или это оболочка Mac по умолчанию? Я любитель в этих вещах ... :) Martin Janiczek 13 лет назад 0
Вы можете проверить вашу оболочку с помощью `dscl. read / Users / $ USER UserShell`. По умолчанию это * bash *. Вы можете изменить оболочку по умолчанию с помощью `chsh -s / bin / bash`. Вы можете изменить только оболочку, используемую в * Terminal * в ее настройках (кнопка панели настроек, затем вкладка Shell, измените команду запуска на (например) `/ bin / zsh`). Chris Johnsen 13 лет назад 0
Да, по умолчанию у меня bash. Я пробовал Zsh, и, кажется, работает так, как я хочу. У bash есть способ достичь того же результата? Martin Janiczek 13 лет назад 0

1 ответ на вопрос

14
Chris Johnsen

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

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

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

bindkey "^[[3~" delete-char 

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

Однако, Баш является оболочкой по умолчанию в Mac OS X, поэтому команда связать ключ (и функции, доступные для связывания) будет отличаться, если вы используете Баш : 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(если у вас нет ни того, ни другого, создайте первый; если у вас уже есть ровно один из них, то используйте тот, который у вас есть; если у вас есть оба, тогда вы должны исправить это, так как, вероятно, используется только первое).

Отличное объяснение. Спасибо! (о, и это сработало. :)) Martin Janiczek 13 лет назад 0
Хороший простой ответ для меня. Просто поместите это в `~ / .zshrc` на сервере itsthejb 7 лет назад 0

Похожие вопросы