Vim bash 使用模式行突出显示语法
Vim bash syntax highlighting with modeline
根据许多在线文档 (e.g.),我应该能够通过添加如下行来通过模式行启用 bash 语法突出显示:
# vim:let g:is_bash=1:set filetype=sh:
在.vimrc
中:
filetype plugin indent on
syntax on
set modeline
set modelines=4
不幸的是,当我添加这些行时,我收到一条错误消息:
"packer/shunit2/include.sh" 85L, 2749C
Error detected while processing modelines:
line 85:
E518: Unknown option: let
第85行当然是上面的模式行。 (这是文件的最后一行。)
尽管有这么多页面建议它应该工作,但为什么这不起作用,错误消息是什么意思,我如何更改此设置以便我的 bash 脚本以正确的方式打开 bash 语法高亮?
Modeline 不允许您 运行 任何代码,只能设置选项。您要做的是 运行 一些将设置全局变量的 Vimscropt。那不会发生。
不对,that answer错了。您不能在 modeline 中定义变量,只能在那里设置(某些)options(出于安全原因)。
要实现bash语法高亮,您有以下选择:
- 全球
let g:is_bash = 1
在您的 ~/.vimrc
中。这是最简单的选项,但仅当您编辑的所有内容都是 Bash(不是 Korn shell 或任何其他 shell 方言)时才有效。
- 正确设置shebang为
#!/bin/bash
; $VIMRUNTIME/syntax/sh.vim
会自动检测到它。
- 编写 Bash 文件的自定义检测。如果您可以根据文件位置/名称执行此操作,
:autocmd BufNew,BufRead {pattern} let b:is_bash = 1
即可。如果需要检查文件内容,把代码放在~/.vim/ftplugin/sh_bashdetection.vim
左右。
- 如果你所有的 Bash 文件都在某些项目/目录中,本地 vimrc 插件(我推荐 localrc plugin (especially with my own enhancements),它甚至允许本地特定于文件类型的配置)。这样,您可以将命令 (
let b:is_bash = 1
) 放入该项目根目录中的 .lvimrc
文件中,它会自动将设置应用于该子目录树中的所有文件。
- 如果你真的想走 modeline 路线,let-modeline plugin 可以启用它。
根据许多在线文档 (e.g.),我应该能够通过添加如下行来通过模式行启用 bash 语法突出显示:
# vim:let g:is_bash=1:set filetype=sh:
在.vimrc
中:
filetype plugin indent on
syntax on
set modeline
set modelines=4
不幸的是,当我添加这些行时,我收到一条错误消息:
"packer/shunit2/include.sh" 85L, 2749C
Error detected while processing modelines:
line 85:
E518: Unknown option: let
第85行当然是上面的模式行。 (这是文件的最后一行。)
尽管有这么多页面建议它应该工作,但为什么这不起作用,错误消息是什么意思,我如何更改此设置以便我的 bash 脚本以正确的方式打开 bash 语法高亮?
Modeline 不允许您 运行 任何代码,只能设置选项。您要做的是 运行 一些将设置全局变量的 Vimscropt。那不会发生。
不对,that answer错了。您不能在 modeline 中定义变量,只能在那里设置(某些)options(出于安全原因)。
要实现bash语法高亮,您有以下选择:
- 全球
let g:is_bash = 1
在您的~/.vimrc
中。这是最简单的选项,但仅当您编辑的所有内容都是 Bash(不是 Korn shell 或任何其他 shell 方言)时才有效。 - 正确设置shebang为
#!/bin/bash
;$VIMRUNTIME/syntax/sh.vim
会自动检测到它。 - 编写 Bash 文件的自定义检测。如果您可以根据文件位置/名称执行此操作,
:autocmd BufNew,BufRead {pattern} let b:is_bash = 1
即可。如果需要检查文件内容,把代码放在~/.vim/ftplugin/sh_bashdetection.vim
左右。 - 如果你所有的 Bash 文件都在某些项目/目录中,本地 vimrc 插件(我推荐 localrc plugin (especially with my own enhancements),它甚至允许本地特定于文件类型的配置)。这样,您可以将命令 (
let b:is_bash = 1
) 放入该项目根目录中的.lvimrc
文件中,它会自动将设置应用于该子目录树中的所有文件。 - 如果你真的想走 modeline 路线,let-modeline plugin 可以启用它。