Сначала вам нужно исправить скобки и сделать функцию интерактивной.
(defun foo ()
(interactive)
(message "hello"))
Тогда вам нужно привязать это к клавише, находясь в shell-mode
.
(local-set-key (kbd "C-i") 'foo)
Чтобы сделать его постоянным, добавьте функцию для установки этого значения в shell-mode-hook
или (предпочтительно) добавьте его в раскладку для режима, например, так:
(eval-after-load "shell"
'(define-key shell-mode-map (kbd "C-i") 'foo))