仅匹配特定目录(而不是子目录)中的文件的Vim autocmd模式
我正在尝试匹配直接位于桌面上的所有文件。但是autocmd模式仅匹配特定目录(而不是子目录)中的文件的Vim autocmd模式,vim,Vim,我正在尝试匹配直接位于桌面上的所有文件。但是autocmd模式*/Desktop/*也匹配桌面的任何子目录中的文件。什么模式可以满足我的需要?一种方法是使用合适的正则表达式,但如果文件名中有/s,则此模式可能会失败,但您可以对其进行改进: au BufRead * if expand('<amatch>') =~ "/Desktop/[^/]*$" | set tw=90 | endif 在第一种情况下,您应该使用expand(“”)代替expand(“%”)。否则,不能保证至少有
*/Desktop/*
也匹配桌面的任何子目录中的文件。什么模式可以满足我的需要?一种方法是使用合适的正则表达式,但如果文件名中有/
s,则此模式可能会失败,但您可以对其进行改进:
au BufRead * if expand('<amatch>') =~ "/Desktop/[^/]*$" | set tw=90 | endif
在第一种情况下,您应该使用
expand(“”)
代替expand(“%”)
。否则,不能保证至少有一个斜杠(使用
/
时,始终将其用作路径分隔符,使用%
时,它使用系统路径分隔符,可以是\
或:
)。复制模式也是有意义的(与*/Desktop/*
中的:au
参数进行匹配要比执行:au
代码快得多;尽管您几乎总是不会注意到差异)。很好,它可以工作。不过,我很惊讶没有一种简单的方法可以用autocmd模式实现这一点。似乎是一个相当常见的用例。
au BufRead */Desktop/* set tw=90
au BufRead */Desktop/*/* set tw=31