Как перезагрузить .inputrc?

25564
Captain Lepton

Фон

Я слышал, что модуль readline читает ~/.inputrcи именно так он меняет поведение нажатий клавиш в таких программах, как bash.

Вопрос

Как я могу перезагрузить это после редактирования, чтобы увидеть измененное поведение без перезапуска моей терминальной программы?

81
Фон * (не ошибается) *. Dennis Williamson 13 лет назад 8
Есть ли способ вызвать Readline, чтобы перезагрузить историю? Например, `xmonad ---- Recompile && xmonad --restart` для перезагрузки XMonad? Ehtesh Choudhury 12 лет назад 0
Я пришел сюда в поисках, как загрузить .inputrc с помощью команды. http://superuser.com/q/419670/56544 dfrankow 11 лет назад 3
Просто перезапустите Bash. Kusalananda 7 лет назад 0
@Kusalananda, похоже, вы не правильно прочитали вопрос: «Как я могу перезагрузить его после редактирования, чтобы увидеть измененное поведение _ без перезапуска моей терминальной программы_?" Captain Lepton 7 лет назад 0
@CaptainLepton Я видел это. Терминал не совпадает с оболочкой. Выполнение `exec bash` в сеансе Bash заменит текущий сеанс оболочки новым сеансом Bash. `xterm` является терминалом. Kusalananda 7 лет назад 1
@Kusalananda Спасибо за разъяснения. Это хорошая идея. Не могли бы вы описать запуск> exec bash как запуск новой оболочки в текущем терминале, а не перезапуск bash, когда вы заменяете свой предыдущий исполняемый файл? Captain Lepton 7 лет назад 1
Да, нет способа «перезапустить» текущий сеанс оболочки. Это * один * способ сделать это. Использование решения, которое дал @maxelost, другое. Kusalananda 7 лет назад 1

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

74
maxelost

By default, C-x C-r is bound to re-read-init-file.

See the Bash Reference Manual for explanation.

Это не работает для меня. Я попробовал другое сопоставление в файле .inputrc, и тоже не повезло: "\ eX \ eR": re-read-init-file Есть предложения? Captain Lepton 13 лет назад 2
@Captain На самом деле это так, за исключением того, что он не * очищает * нажатия клавиш, которые были удалены за это время. Например, если вы добавите их, они будут загружены. Ваше единственное решение для этого - новая `bash -l` (оболочка, которая ведет себя как оболочка входа в систему), которая недавно инициализируется. Daniel Beck 13 лет назад 6
Я редактировал `/ etc / inputrc`, но у меня был почти пустой` ~ / .inputrc`, который не позволял использовать тот, что в `/ etc /`. Удаление `~ / .inputrc` заставило его прочитать` / etc / inputrc` и сделать мои изменения активными. Malvineous 6 лет назад 0
41
studgeek

Вы также можете перезагрузить новые записи из командной строки, используя bind -f ~/.inputrc. Это загрузит записи в .inputrc. Обратите внимание, что он просто выполняет загрузку, а не «перезагрузку» - поэтому он не сбрасывает строки, которые вы удалили из .inputrc.

Чтобы быстро выполнить тестирование с чистого листа, просто запустите, а bashзатем поработайте внутри этой новой вложенной оболочки (или запустите новый терминал).

11
rofrol
10
Antonio Bardazzi

В .inputrc сначала выберите привязку, а после привязки re-read-init-fileфункцию:

set editing-mode vi "\C-x\C-r": re-read-init-file 

Нажмите CTRLи x, отпустите оба, нажмите CTRLи r.

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