Чтобы получить исходный код ~/.inputrc , я попробовал C-x C-c и bind -f ~/.inputrc . У меня нет идей, даже после прочтения раздела bash о bind .


У меня есть "\C-Rubout": backward-kill-word в моем ~/.inputrc . Но когда я запрашиваю bash с помощью bind -q backward-kill-word , я не получаю ожидаемый результат:

$ bind -q backward-kill-word
backward-kill-word can be invoked via "\C-rubout", "\e\C-h", "\e\C-?".

Я думаю, что неправильная заглавная буква в rubout может быть проблемой, но независимо от того, как я изменяю свой файл ~/.inputrc , я не могу заставить его работать !!

Я изо всех сил пытаюсь найти хороший ресурс, чтобы помочь мне узнать, как стать менее некомпетентным в bind части Bash ... Результаты, которые я получаю, кажутся ошибочными, но я знаю лучше, чем быть уверенным в этом, пока не узнаю больше об этом.


Я прочитал руководство по gnu и попытался использовать \b , \d и \177 вместо Rubout , но ни один из них не сработал. Тот, что в руководстве по GNU (здесь), был довольно аккуратным.

1 ответ1

0

Привязка по умолчанию отсутствовала в терминале. Мне нужно было добавить "\C-x\C-r": re-read-init-file в мой ~/.inputrc .

Повторное чтение файла инициализации не приведет к исчезновению связанных в данный момент команд. Я ошибался, предполагая, что удаление строки из моего ~/.inputrc последующим вызовом bind -f ~/.inputrc приведет к отмене привязки указанной привязки. Таким образом, эта команда фактически выполняет перечитывание моего файла инициализации.


Я плохо решал проблемы. Поскольку мои основы не работали, все мои знания были шаткими. Я не искал свой файл readline, я перечитывал. Это КЛЮЧЕВАЯ разница

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

Наконец, я не знал, что есть и unix-word-rubout и backward-kill-word . Это две разные команды, но они действуют одинаково на моем терминале.


Я понял, что могу понять, как представить delete , посмотрев на команду, которая должна была удалить:

$ bind -q backward-kill-word
backward-kill-word can be invoked via "\e\C-h", "\e\C-?".

Я полагаю, мой терминал преобразует удаление не так, как другие. Я так думал ? был заполнителем для "Я не могу представить это", но это ! Мне действительно просто нужно использовать литерал ? , Код ASCII 63.

Во всяком случае, когда я разместил "\C-?": unix-word-rubout в моем ~/.inputrc , все работало отлично :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .