在 emacs 中读取文件时,如何为 Shell-脚本模式设置 "shell"?
When reading a file in emacs, how can I set the "shell" for Shell-script mode?
我有一些文件不是 shell 脚本 本身 ,而是设计为由 shell 脚本获取。因此,文件名与 auto-mode-alist
中的任何模式都不匹配(我也没有兴趣尝试为每个文件更新)。
当我编辑我的 bash 脚本之一时(例如,foo.bash),emacs 正确地推断出 shell 和模式行显示 Shell-script[bash]
。我认为这是基于文件名还是 shebang 行并不重要。我想对我的“非脚本”脚本文件强制执行此行为。
我想到的是这个:
# -*- mode: Shell-script; eval (sh_set_shell "bash"); -*-
但这给出了关于 eval
的警告(这是正确的)。我还能如何为 Shell-脚本模式设置方言?
除了主要模式之外,您还可以使用文件局部变量块并设置sh-shell
:
# Local Variables:
# mode: shell-script
# sh-shell: bash
# End:
如果你不喜欢这个大的(可读性更好:))块,一个衬里就可以了(根据下面的@jwm 评论):
# -*- mode: Shell-script; sh_shell: "bash"; -*-
Nota Bene: 根据文档,使用文件局部变量 sh-shell
等同于调用 sh-set-shell
,以及设置的预期方式这是:
Shell script files can cause this function be called automatically
when the file is visited by having a `sh-shell' file-local variable
whose value is the shell name (don't quote it).
我有一些文件不是 shell 脚本 本身 ,而是设计为由 shell 脚本获取。因此,文件名与 auto-mode-alist
中的任何模式都不匹配(我也没有兴趣尝试为每个文件更新)。
当我编辑我的 bash 脚本之一时(例如,foo.bash),emacs 正确地推断出 shell 和模式行显示 Shell-script[bash]
。我认为这是基于文件名还是 shebang 行并不重要。我想对我的“非脚本”脚本文件强制执行此行为。
我想到的是这个:
# -*- mode: Shell-script; eval (sh_set_shell "bash"); -*-
但这给出了关于 eval
的警告(这是正确的)。我还能如何为 Shell-脚本模式设置方言?
除了主要模式之外,您还可以使用文件局部变量块并设置sh-shell
:
# Local Variables:
# mode: shell-script
# sh-shell: bash
# End:
如果你不喜欢这个大的(可读性更好:))块,一个衬里就可以了(根据下面的@jwm 评论):
# -*- mode: Shell-script; sh_shell: "bash"; -*-
Nota Bene: 根据文档,使用文件局部变量 sh-shell
等同于调用 sh-set-shell
,以及设置的预期方式这是:
Shell script files can cause this function be called automatically when the file is visited by having a `sh-shell' file-local variable whose value is the shell name (don't quote it).