Bash 是否可以在vim modeline中添加关键字

Bash 是否可以在vim modeline中添加关键字,bash,shell,vim,modeline,Bash,Shell,Vim,Modeline,例如,我的文件看起来像: #! /bin/bash verbose() { [ "$VERBOSE_FLAG" == 'yes' ] && { [ $# == 0 ] || echo $@ return 0 } || return 1 } verbose display in verbose mode # make verbose highlight as a keyword # vim: syntax keyword

例如,我的文件看起来像:

#! /bin/bash
verbose()
{
    [ "$VERBOSE_FLAG" == 'yes' ] && 
    {
        [ $# == 0 ] || echo $@
        return 0
    } || return 1
}

verbose display in verbose mode

# make verbose highlight as a keyword
# vim: syntax keyword Keyword verbose

是否可以在modeline中使用syn,或者有其他方法吗?

您不能直接这样做;只能在modeline中设置(缓冲区本地)选项。

选择1 如果这个附加关键字不是单个文件的专用关键字,而是适用于范围广泛的文件,我会定义一个自定义文件类型(例如,
mybash
),并在
~/.vim/syntax/mybash.vim
中添加该附加关键字:

" mybash is a kind of shell syntax
runtime! syntax/sh.vim syntax/sh/*.vim

" Add keyword.
syntax keyword mybashKeyword verbose
要使用该自定义语法,您可以扩充默认的文件类型检测规则,或者在modeline中包含
ft=mybash

选择2 如果这只是一个或几个文件的小调整,我会使用本地vimrc插件添加关键字


vim.org上有几个这样的插件;我可以推荐,它甚至允许特定于本地文件类型的配置。

Vim模型线用于设置各种Vim
选项(请参见
:help modeline
:help options.txt
)。由于语法高亮显示是一个命令而不是一个选项,因此不能通过modeline指定它。但是,您可以为特定的文件名、文件类型、目录等设置语法高亮显示。只需使用自动命令(请参见
:help au
)即可指定要匹配的文件模式和要执行的命令。

此关键字对于单个文件是专用的。似乎我可以使用
设置exrc
,然后在当前目录中添加一个
.vimrc/.exrc/.gvimrc
,以替换本地imrc;
.exrc
将是localrc插件的轻量级替代品;另见。