Vim:名称中没有扩展名的特定文件类型的自动命令?

Vim:名称中没有扩展名的特定文件类型的自动命令?,vim,Vim,我正在尝试实现上面的命令对shellscripts的效果,没有扩展 autocommand BufEnter,TextChanged,InsertLeave *.sh Neomake 显示一组选项,包括autocmd模式 :help autocommand 他说: 该模式被解释为主要用于文件名: *匹配任何字符序列;异常:包括路径 分离器 ? 匹配任何单个字符 ? 匹配一个“?” . 与“.”匹配。 ~匹配一个“~” ,分隔模式 ,匹配一个“,” |模式中的{}like()| ,在

我正在尝试实现上面的命令对shellscripts的效果,没有扩展

autocommand BufEnter,TextChanged,InsertLeave *.sh Neomake
显示一组选项,包括
autocmd模式

:help autocommand
他说:

该模式被解释为主要用于文件名:
*匹配任何字符序列;异常:包括路径 分离器
? 匹配任何单个字符
? 匹配一个“?”
. 与“.”匹配。
~匹配一个“~”
,分隔模式
,匹配一个“,”
|模式中的{}like()|
,在{}内:像|在|模式中|
}文字}
{文字{
\{n,m}类似{n,m}的|模式|
\特殊含义,如|模式|
[ch]匹配“c”或“h”
[^ch]匹配除“c”和“h”之外的任何字符

可以使用|模式|项,但它们可能无法按预期工作, 因为以上所做的翻译

因此,如果我们想匹配不包含
的内容,我们可以使用类似

:help autocmd-patterns
这将匹配任何长度至少为4位(可能为5位,取决于
*
是否匹配空字符串)且没有
\..{0,3}
后缀的文件名(例如
.txt
等)。如果您的后缀较长,则必须增加您的数字,这反过来会增加它将匹配的非后缀文件名的最小长度。这是一个丑陋的黑客行为,但我认为没有更好的方法

显示一组选项,包括
autocmd模式

:help autocommand
他说:

该模式被解释为主要用于文件名:
*匹配任意字符序列;异常:包括路径 分离器
?匹配任何单个字符
?匹配一个“?”
.与“.”匹配。
~匹配一个“~”
,分隔模式
,匹配一个“,”
|模式中的{}like()|
,在{}内:像|在|模式中|
}文字}
{文字{
\{n,m}类似{n,m}的|模式|
\特殊含义,如|模式|
[ch]匹配“c”或“h”
[^ch]匹配除“c”和“h”之外的任何字符

可以使用|模式|项,但它们可能无法按预期工作, 因为以上所做的翻译

因此,如果我们想匹配不包含
的内容,我们可以使用类似

:help autocmd-patterns
这将匹配任何长度至少为4位(可能为5位,取决于
*
是否匹配空字符串)且没有
\..{0,3}
后缀的文件名(例如
.txt
等)。如果后缀较长,则必须增加数字,这反过来会增加它将匹配的非后缀文件名的最小长度。这是一个难看的攻击,但我认为没有更好的方法。

当缓冲区的文件类型设置为某个Shell文件类型时,可以为其创建缓冲区(例如
sh
bash

例如:

autocommand BufEnter,TextChanged,InsertLeave *[^.]\\\{4\} Neomake
当缓冲区的文件类型设置为Shell文件类型之一(例如
sh
bash
)时,可以为其创建缓冲区

例如:

autocommand BufEnter,TextChanged,InsertLeave *[^.]\\\{4\} Neomake

我不知道你可以像那样链接AUT命令!谢谢你的代码片段。效果很好。我不知道你可以像那样链接AUT命令!谢谢你的代码片段。效果很好。