2
我試圖匹配直接位於桌面上的所有文件。但autocmd模式*/Desktop/*
也與桌面的任何子目錄中的文件相匹配。什麼模式可以做我需要的東西?僅匹配特定目錄中的文件(不在子目錄中)的Vim autocmd模式
我試圖匹配直接位於桌面上的所有文件。但autocmd模式*/Desktop/*
也與桌面的任何子目錄中的文件相匹配。什麼模式可以做我需要的東西?僅匹配特定目錄中的文件(不在子目錄中)的Vim autocmd模式
一種方法是使用合適的正則表達式,但如果你的文件名有/
這列可能會失敗,但你可以改善它:
au BufRead * if expand('<amatch>') =~ "/Desktop/[^/]*$" | set tw=90 | endif
另一種方法是使用兩個命令,一個需要恢復的其他:
au BufRead */Desktop/* set tw=90
au BufRead */Desktop/*/* set tw=31
在第一種情況下,您應該使用'expand('')'代替expand('%')'。否則,不能保證至少有一個斜槓('''/'總是用作路徑分隔符,'%'它使用系統路徑分隔符,可能是''''或':')。複製模式(與':au'參數中的'*/Desktop/*'匹配比執行':au'代碼要快得多,儘管幾乎總是不會注意到其中的差異)。 –
ZyX
不錯,它的作品。我很驚訝沒有一個簡單的方法來使用autocmd模式做到這一點。看起來像一個相當常見的用例。 –