如何告诉VIM将viminfo文件存储到其他地方?

如何告诉VIM将viminfo文件存储到其他地方?,vim,Vim,是否可以告诉vim将其viminfo文件保存到其他地方? 例如,在.vim文件夹中,尝试将设置viminfo+=n~/.vim/viminfo添加到~/.vimrc文件中。从:帮助“viminfo”: n viminfo文件的名称。名称必须紧跟其后 “n”。一定是最后一个!如果“-i”参数是 在启动Vim时给定,该文件名将覆盖该文件名 这里给出了“viminfo”。环境变量已展开 打开文件时,而不是设置选项时。 这在Windows 7中适用。我有类似的问题,但没有对主文件夹的写入权限(因此无法

是否可以告诉vim将其viminfo文件保存到其他地方?
例如,在.vim文件夹中,尝试将
设置viminfo+=n~/.vim/viminfo
添加到
~/.vimrc
文件中。从
:帮助“viminfo”

n viminfo文件的名称。名称必须紧跟其后
“n”。一定是最后一个!如果“-i”参数是
在启动Vim时给定,该文件名将覆盖该文件名
这里给出了“viminfo”。环境变量已展开
打开文件时,而不是设置选项时。

这在Windows 7中适用。

我有类似的问题,但没有对主文件夹的写入权限(因此无法创建
~/.vimrc

我通过(通过管理员)修改
C:\Program Files\VIM
中的_vimrc解决了这个问题,包括以下行:

let $HOME = $USERPROFILE
我把它放在文件的开头,效果很好。以防万一有人遇到这个问题,但没有解决。

TL;DR

这似乎是
vim
中的一个bug,其中
set-nocompatible
没有并且没有遵循

作为一种解决方法,可以:

  • 确保只在
    vimrc
    顶部设置一次nocompatible(或等效的
    设置nocp

  • 如果已设置,则不要再次设置:

    if &compatible | set nocompatible | endif " Avoid side effects if `nocp` already set
    
  • 解释和错误说明

    来自(empahsis矿):

    这是一种特殊的选项,因为当它被设置或重置时, 其他选项也会因副作用而更改小心:设置或 重置此选项可能会产生许多意想不到的效果:映射 如果以另一种方式进行解释,“撤消”的行为会有所不同,等等 在vimrc文件中设置此选项,您可能应该将其放在 非常好的开始

    请注意,
    &viminfo
    未在副作用中列出,但是以下几行清楚地显示了
    &viminfo
    的副作用:

    set nocompatible
    set viminfo+=nWatch-my-viminfo-file-location-be-ignored
    echom &viminfo
    set nocompatible " do side effects even though nocomptible is already set
    echom 'After 2nd "set nocompatible":'
    echom &viminfo
    
    输出:


    .vimrc中设置的顺序影响:set viminfo的使用。viminfo的设置应在nocompatible设置之后。在对我的.vimrc重新排序之后,上述将viminfo文件放在.vim目录中的解决方案对我来说很有效。

    我知道这已经有一段时间了,但我只是为了将来的读者提一下这一点

    在尝试更改vimrc中viminfo文件的位置时,我遇到了相同的问题。最后,设置
    viminfofile
    选项的值对我起作用了

    将以下内容添加到我的vimrc中:

    set viminfofile=D:\vim\viminfo
    

    它在装有vim 8.2的windows上对我有效,但它不起作用?我建议的选项还是具体值?请随意为它提供任何对您的平台有意义的合理路径。它不像中那样工作,在我将它添加到我的vimrc文件中后,viminfo仍然保存在我的主文件夹下的目录中。。。除非我每次打开vim时都手动设置,否则这会起作用,但如果我有它的话就不行了vimrc@BeyondSora,@sarnold重新阅读此处引用的帮助:«名称必须紧跟在“n”之后»。清除答案中的分号。@ZyX,非常感谢!我刚刚用一个没有写访问权限的目录进行了测试,当它不起作用时,我很高兴得到一个错误。唉。经验教训:)是的,我试过设置viminfo+='1000,n~/.vim/viminfo,结果成功了。在Windows 10和vim 8.0.x上对我有效。它甚至可以与一个变量一起工作,例如:
    set viminfo='1000,n$VIM/viminfo
    。1000的作用是什么?
    '100,<50,s10,h,nWatch-my-viminfo-file-location-be-ignored
    After 2nd "set nocompatible":
    '100,<50,s10,h
    
    set viminfofile=D:\vim\viminfo