在联网文件系统上,Vim会自动禁用所包含文件中的扫描以进行自动完成

时间:2014-04-25 10:33:40

标签: bash vim

以下bash脚本会在pwd挂载当前sshfs时检查:

if (! mountpoint -q $PWD ); then
  # not mounted
else
  # mounted
fi

我希望Vim在当前新打开的缓冲区上执行相同操作,如果当前目录是联网文件系统(意味着它已挂载),那么Vim应该执行set complete-=i命令。仅在可能的情况下进行当前拆分。

1 个答案:

答案 0 :(得分:1)

检查当前缓冲区的目录是否已挂载:

:call system('mountpoint -q ' . shellescape(expand('%:h')))
:let isMountpoint = (v:shell_error == 0)

要将其挂钩到缓冲区读取中,请通过:autocmd BufRead * ...

调用此方法

'complete'选项确实是缓冲区本地的,所以使用:setlocal complete-=i,你也可以实现这一点。

现在,您只需要组合各个部分:

:autocmd BufRead * call system('mountpoint -q ' . shellescape(expand('%:h'))) | if v:shell_error == 0 | setlocal complete-=i | endif