【问题标题】:When reading a file in emacs, how can I set the "shell" for Shell-script mode?在 emacs 中读取文件时,如何为 Shell 脚本模式设置“shell”?
【发布时间】:2021-10-14 19:12:02
【问题描述】:

我有一些不是 shell 脚本的文件本身,但设计为由 shell 脚本获取。因此,文件名与 auto-mode-alist 中的任何模式都不匹配(我也没有兴趣尝试更新每个文件)。

当我编辑我的一个 bash 脚本(例如 foo.bash)时,emacs 会正确推断出 shell,并且模式行显示 Shell-script[bash]。我认为这是基于文件名还是基于 shebang 行无关紧要。我想对我的“非脚本”脚本文件强制执行此行为。

我想出的是这样的:

# -*- mode: Shell-script; eval (sh_set_shell "bash"); -*-

但这给出了关于eval 的警告(没错)。我还能如何设置 Shell 脚本模式的方言?

【问题讨论】:

标签: shell emacs


【解决方案1】:

除了主模式之外,您还可以使用文件局部变量块并设置sh-shell

# Local Variables:
# mode: shell-script
# sh-shell: bash
# End:

如果你不喜欢这个大(可读性更好:))块,一个单行会很好(根据下面的@jwm 评论):

# -*- mode: Shell-script; sh_shell: "bash"; -*-

【讨论】:

  • 我最终浏览了 .el 文件并找到了 sh-shell 变量。模式文档中没有记录它只是令人失望,还是有理由更喜欢 (sh_set_shell "bash") 而不是 (setq 'sh-shell "bash")
  • 另外,我最终得到了# -*- mode: Shell-script; sh_shell: "bash"; -*-。因为我认为这是做同一件事的两种方式,如果你想在你的答案中加入这两个选项,我会接受。
猜你喜欢
  • 2016-07-25
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
  • 2013-06-14
  • 1970-01-01
相关资源
最近更新 更多