在 vim 中使用 syntastic 插件时,/tmp/vXXXXXXX
每次打开一个新的 vim 实例时,我都会看到一个新目录。当 syntastic 插件被禁用时,不会创建这样的目录。
当我运行 inotify 时,我发现每次保存文件时都会在该目录中创建一个数字文件。是否可以根据需要使 syntastic(或 vim)创建一个临时目录?失败了,我可以让它使用单个目录吗?例如,/tmp/vim-syntastic/vXXXXXXX/
?
如果您查看 syntastic 帮助文件,您会看到 syntastic 使用“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-makeprg
更多信息,请参阅。这是 git 的直接链接。据我所知,不幸的是,没有内置方法可以为所有合成输出设置默认目录。
编辑:Lekenstein 找到了另一个解决方案,他在链接的 Github 问题中发布了该解决方案。
let $TMPDIR = '/tmp/vim-' . $USER
silent! call mkdir($TMPDIR, '', 0700)
这将为所有与 vim 相关的临时文件创建一个特殊目录。这意味着它也会影响与语法无关的临时文件。
根据开发人员的说法,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/
其中很棒。