解决方法
sh-mode的味道是从shebang行(脚本的第一行)中自动检测的.如果您有“#!/ bin / zsh”,则会假设zsh并且(例如)autoload将被识别为关键字.如果第一行是“#!/ bin / bash”,则无法识别自动加载
要使emacs将* .zsh文件识别为shell脚本,只需将其添加到init文件中:
(add-to-list 'auto-mode-alist '("\\.zsh\\'" . sh-mode))
当你不想使用shebang时选择一种风味的程序化方法是在sh模式缓冲区中这样做:
(sh-set-shell "zsh")
所以在你的情况下你需要的东西(除非你使用shebang)是更新auto-mode-alist,如上所述
(add-hook 'sh-mode-hook (lambda () (if (string-match "\\.zsh$" buffer-file-name) (sh-set-shell "zsh"))))