如何使Vim不同的文件有不同的历史记录?

如何使Vim不同的文件有不同的历史记录?,vim,history,vim-plugin,Vim,History,Vim Plugin,我使用:history/获取搜索记录,当我切换到另一个文件时,生成的搜索记录叠加在不同的文件上。如何使不同的文档具有不同的历史记录Vim的命令行历史记录是全局的。其技术原因是历史记录存储在数据库中的平面列表中。从逻辑上讲,将某些命令(如:bufdo)分配给单个缓冲区也没有意义 因此,没有一个简单的选项可以设置为使搜索历史成为缓冲区的本地记录。不过,只要有足够的决心,就可以实现一个插件。我认为有两种可能的办法: 您可以通过和将每个缓冲区的一个viminfo文件(存储历史记录)多路传输到全局历史记

我使用
:history/
获取搜索记录,当我切换到另一个文件时,生成的搜索记录叠加在不同的文件上。如何使不同的文档具有不同的历史记录

Vim的命令行历史记录是全局的。其技术原因是历史记录存储在数据库中的平面列表中。从逻辑上讲,将某些命令(如
:bufdo
)分配给单个缓冲区也没有意义

因此,没有一个简单的选项可以设置为使搜索历史成为缓冲区的本地记录。不过,只要有足够的决心,就可以实现一个插件。我认为有两种可能的办法:

  • 您可以通过和将每个缓冲区的一个viminfo文件(存储历史记录)多路传输到全局历史记录中。使用
    :autocmd
    s相对容易,您可以继续使用默认(全局)
    :history
    和相关命令。但是许多其他设置(标记、跳转、以前的文件等)都存储在viminfo中,并且这些设置也会被有效地本地化(除非您只是以某种方式调出搜索历史部分)
  • 您可以挂接搜索命令,并定期将全局搜索历史记录(via)同步到缓冲区本地存储中,然后提供自己的搜索调用命令,例如,创建一个显示本地搜索的临时缓冲区,就像内置的
    q/
    一样。这可能会带来更好的可用性,但重新创建您自己的历史记录命令需要付出更多的努力