autocommand BufEnter,TextChanged,InsertLeave *.sh Neomake
我正在尝试在没有扩展名的Shell脚本中实现上述命令的效果。
autocommand BufEnter,TextChanged,InsertLeave *.sh Neomake
我正在尝试在没有扩展名的Shell脚本中实现上述命令的效果。
sh
或 bash
)时,为该缓冲区创建 buffer-local autocommands。
例如:
autocmd FileType sh,bash autocmd BufEnter,TextChanged,InsertLeave <buffer> Neomake
~/.vim/ftplugin/bash.vim
的文件中(假设您的shell脚本的'filetype'
设置为bash
):autocmd BufEnter,TextChanged,InsertLeave <buffer> Neomake
:help autocommand
autocmd-patterns
。:help autocmd-patterns
这里的模式通常用于文件名中:
* 匹配任意字符序列;不寻常:包括路径分隔符
? 匹配任何单个字符
? 匹配“?”
. 匹配“.”
~ 匹配“~”
, 分隔模式
, 匹配“,”
{ } 类似于 |pattern| 中的 ( )
, 在 { } 内部:类似于 |pattern| 中的 |
} 字面量 }
{ 字面量 {
\{n,m} 类似于 |pattern| 中的 {n,m}
\ 特殊含义,类似于 |pattern| 中的 |
[ch] 匹配 'c' 或 'h'
[^ch] 匹配除 'c' 和 'h' 之外的任何字符
...
可以使用 |pattern| 项,但由于上述翻译的原因,它们可能无法按预期工作。
因此,如果我们想匹配不包含 .<some-suffix>
的内容,我们可以尝试以下方法:
autocommand BufEnter,TextChanged,InsertLeave *[^.]\\\{4\} Neomake
*
是否匹配空字符串)的任何文件名,并且不具有\..{0,3}
后缀(例如.txt
或类似后缀)。如果您有更长的后缀,您需要增加数字,这反过来会增加它匹配的无后缀文件名的最小长度。这是一个丑陋的hack,但我认为没有更好的方法。