如果完整文件名不包含模式,请运行自动命令

时间:2015-03-01 23:42:41

标签: vim

每次保存python文件时,我都有一个运行flake8的函数。但是,如果完整文件名(完整路径)包含/.git/,我不希望该函数运行。我怎样才能做到这一点?我尝试了以下但没有成功:

au BufWritePost */[^git]/*.py call s:MyFlake8()

2 个答案:

答案 0 :(得分:3)

我会在MyFlake8顶部进行提前检查,如果条件不满意则退出。

function! MyFlake8()
  if expand("%:p") =~ "/\\.git/"
    return
  endif

  echo "FLAKE8!"
endfunction
au BufWritePost *.py call s:MyFlake8()

答案 1 :(得分:2)

负文件globs很难实现,但你可以避免使用设置“忽略此”标记的正整数和另一个检查该标记的全局命令(按此顺序!)的问题:

au BufWritePost */.git/*.py let b:insideGit = 1
au BufWritePost *.py if ! exists('b:insideGit') | call s:MyFlake8() | endif