如何让Vim份不同的文件有不同的历史记录?
How to Make Vim Different Documents Have Different Historical Records?
我使用:history /
获取搜索记录,当我切换到另一个文件时,得到的搜索记录叠加在不同的files.How上,使不同的文件有不同的历史记录
Vim 的命令行历史记录是全局的。 技术原因是历史记录存储在 :help viminfo-file
中的平面列表中.同样从逻辑上讲,将某些命令(如 :bufdo
)分配给单个缓冲区是没有意义的。
因此,您无法设置一个简单的选项来使搜索历史记录在缓冲区的本地。不过,如果有足够的决心,您可以为此实现一个插件。我看到两种可能的方法:
- 你通过
:help :rviminfo
and :wviminfo
将每个缓冲区的一个 viminfo 文件(存储历史)多路复用到全局历史中。使用 :autocmd
s 相对容易,您可以继续使用默认(全局):history
和相关命令。但是许多其他设置(标记、跳转、以前的文件等)都存储在 viminfo 中,并且这些设置也将有效地本地化(除非您以某种方式只是换掉搜索历史部分)。
- 您挂接到搜索命令并定期将全局搜索历史(通过
:help histget()
)同步到缓冲区本地存储中,然后提供您自己的搜索调用命令,例如通过创建一个显示本地搜索的暂存缓冲区,就像内置的 q/
一样。这可能会带来更好的可用性,但重新创建您自己的历史命令需要付出更多的努力。
我使用:history /
获取搜索记录,当我切换到另一个文件时,得到的搜索记录叠加在不同的files.How上,使不同的文件有不同的历史记录
Vim 的命令行历史记录是全局的。 技术原因是历史记录存储在 :help viminfo-file
中的平面列表中.同样从逻辑上讲,将某些命令(如 :bufdo
)分配给单个缓冲区是没有意义的。
因此,您无法设置一个简单的选项来使搜索历史记录在缓冲区的本地。不过,如果有足够的决心,您可以为此实现一个插件。我看到两种可能的方法:
- 你通过
:help :rviminfo
and:wviminfo
将每个缓冲区的一个 viminfo 文件(存储历史)多路复用到全局历史中。使用:autocmd
s 相对容易,您可以继续使用默认(全局):history
和相关命令。但是许多其他设置(标记、跳转、以前的文件等)都存储在 viminfo 中,并且这些设置也将有效地本地化(除非您以某种方式只是换掉搜索历史部分)。 - 您挂接到搜索命令并定期将全局搜索历史(通过
:help histget()
)同步到缓冲区本地存储中,然后提供您自己的搜索调用命令,例如通过创建一个显示本地搜索的暂存缓冲区,就像内置的q/
一样。这可能会带来更好的可用性,但重新创建您自己的历史命令需要付出更多的努力。