Vim:根据文件目录运行命令

Vim:根据文件目录运行命令

在 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')给出文件的目录路径,不带主目录。
  • =~是部分匹配所必需的。

答案2

您可以使用expand()在文件名 ( %)上各种修饰符:p:h, ETC。):

:e ~/some/path/here/more/deep/still.txt
:echo expand("%:ph")
/home/muru/some/path/here/more/deep/still.txt

您可以将其与您想要的路径进行比较。

相关内容