Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅匹配特定目录(而不是子目录)中的文件的Vim autocmd模式_Vim - Fatal编程技术网

仅匹配特定目录(而不是子目录)中的文件的Vim autocmd模式

仅匹配特定目录(而不是子目录)中的文件的Vim autocmd模式,vim,Vim,我正在尝试匹配直接位于桌面上的所有文件。但是autocmd模式*/Desktop/*也匹配桌面的任何子目录中的文件。什么模式可以满足我的需要?一种方法是使用合适的正则表达式,但如果文件名中有/s,则此模式可能会失败,但您可以对其进行改进: au BufRead * if expand('<amatch>') =~ "/Desktop/[^/]*$" | set tw=90 | endif 在第一种情况下,您应该使用expand(“”)代替expand(“%”)。否则,不能保证至少有

我正在尝试匹配直接位于桌面上的所有文件。但是autocmd模式
*/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