![Vim:根据文件目录运行命令](https://linux22.com/image/193622/Vim%EF%BC%9A%E6%A0%B9%E6%8D%AE%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4.png)
在 my 中init.vim
,我只想在当前文件位于某个层次结构下时才运行某些命令。伪代码:
if current_file_directory == ~/some/path/here
autocmd <whatever>
set <whatever>
endif
但if
我发现的所有例子都太基础,无法推断。
澄清一下,既不:pwd
也不getcwd()
应用,因为它们返回调用 neovim 时所在的目录。我关心文件所在的目录。按照上面的代码,如果我正在/tmp
编辑文件~/some/path/here/more/deep/still.txt
,但是命令应该触发不是如果我正在~/some/path/here
编辑文件/tmp/example.txt
。
答案1
基于@muru 的回答并进一步测试,最终代码为:
if expand('%:h') =~ 'some/path/here'
autocmd <whatever>
set <whatever>
endif
expand('%:h')
给出文件的目录路径,不带主目录。=~
是部分匹配所必需的。