如何防止合成为每个vim实例创建一个目录?

时间:2014-03-20 13:11:11

标签: vim syntastic

当使用带有vim的syntastic插件时,每次打开一个新的vim实例时,我都会看到一个新的/tmp/vXXXXXXX目录。当syntastic插件被禁用时,不会创建这样的目录。

当我运行inotify时,我发现每次保存文件时都会在该目录中创建一个数字文件。是否有可能使syntastic(或vim)按需创建临时目录?如果失败了,我可以让它使用单个目录吗?例如,/tmp/vim-syntastic/vXXXXXXX/

2 个答案:

答案 0 :(得分:1)

如果您查看合成帮助文件,您将看到合成器使用'tail'文件来存储给定make程序的输出。您可以通过将以下内容添加到vimrc来覆盖给定文件类型和子检查程序的默认尾部:

let g:syntastic_<filetype>_<subchecker>_tail = "> /tmp/vim-syntastic/your-file-here"

例如,如果您希望mri输出到/tmp/vim-syntastic/ruby-mri,您可以写:

let g:syntastic_ruby_mri_tail = "> /tmp/vim-syntastic/ruby-mri"

有关详细信息,请参阅:help syntastic-config-makeprgHere's a direct link on git。据我所知,遗憾的是,没有内置的方法来设置所有合成输出的默认目录。

编辑:Lekenstein找到了另一个解决方案,他在链接的Github问题中发布了这个解决方案。

let $TMPDIR = '/tmp/vim-' . $USER
silent! call mkdir($TMPDIR, '', 0700)

这将为所有与vim相关的临时文件创建一个特殊目录。这意味着它还会影响与syntime无关的临时文件。

答案 1 :(得分:1)

According to the developer,syntastic不会自己创建临时目录,由vim处理。再看一下,我发现vim使用$TMPDIR来设置临时目录。如果目录是不可写的,那么它将被忽略。

因此,作为解决方案,以下行将临时目录设置为/tmp/vim-USERNAME,然后创建它(忽略目录存在时通常会发生的错误):

" Keep all vim-related temp files in a single directory
let $TMPDIR = '/tmp/vim-' . $USER
silent! call mkdir($TMPDIR, '', 0700)

现在,我不再拥有很多/tmp/vXXXXXX/个目录了。相反,它们出现在/tmp/vim-peter/vXXXXXX/中,这很棒。