您可以设置vim用于交换文件的目录列表(默认为它可以找到的第一个目录):
set directory=~/tmp,~/var/tmp,/var/tmp,/tmp
我想知道vim为其交换文件选择了哪个目录,所以我可以在那里添加一些临时数据。
解析&directory
并循环显示值似乎是浪费,当vim应该已经知道了。
答案 0 :(得分:3)
:swapname
命令将告诉您哪个交换文件用于当前缓冲区。您需要使用:redir => varname
来捕获输出并将其存储在变量中。
答案 1 :(得分:0)
我认为“used”目录不会被vim保存在某个地方,比如变量或其他东西。从缓冲区到缓冲区可能有所不同。 (从文件到文件)。
e.g。
您拥有非root用户。说kent
,他的目录设置是:
set directory=.,~/tmp,/var/tmp,/tmp
现在kent在他的vim中打开/etc/host.conf
并进行编辑。第一个.(dot)
表示当前目录。显然kent无法将文件写入/etc
,因此请选择第二个~/tmp
,但肯特在其家中没有tmp
,因此接下来使用/var/tmp
。
如果肯特在他的HOME下打开文件,或者在/tmp
下打开文件,则会使用.(dot)
。请注意,不同文件的dot
不同。
肯特可以在缓冲区中打开很多文件,所以很难说,哪个目录会用于交换文件。
所以swapfile -dir没有固定到目录。你应该根据缓冲区/文件来检查它。
答案 2 :(得分:0)
如果你经常这样做,我建议写一个函数:
function! SwapDirectoryForCurrentFile()
redir => filename
silent! swapname
redir end
return fnamemodify(filename, ":h")
endfunction