【问题标题】:Is it possible to add keyword in a vim modeline是否可以在 vim 模式行中添加关键字
【发布时间】:2014-02-12 05:03:17
【问题描述】:

例如,我的文件如下所示:

#! /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

是否可以在模式行中使用 syn 还是有其他替代方法?

【问题讨论】:

    标签: bash shell vim modeline


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你不能直接这样做;只能在模式行中设置(本地缓冲区)选项。

      选项 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
      

      要使用该自定义语法,您可以增加默认的文件类型检测规则,或者在模式行中包含ft=mybash

      选项 2

      如果这只是对一个或几个文件的小调整,我会使用 local vimrc 插件来添加关键字。

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

      【讨论】:

      • 此关键字对单个文件是特殊的。似乎我可以使用 set exrc 然后将 .vimrc/.exrc/.gvimrc 添加到当前目录以替换 local imrc
      • 没错; .exrc 将是 localrc 插件的轻量级替代品;另见this answer
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多