是否有任何方法可以使shell历史记录仅特定于某个vim实例。例如,在vim shell(:sh
)和另一个终端
Vim (:sh) | Terminal
------------------------------------------------
1 pdflatex foo.tex |
2 | echo hello
3 | echo world
终端和Vim的命令历史记录是
1 pdflatex foo.tex
2 echo hello
3 echo world
有什么方法可以让vim的命令历史记录
1 pdflatex foo.tex
,终端
1 echo hello
2 echo world
我问,因为我只想按向上箭头执行pdflatex foo.tex
,我也不想通过其他所有命令。此外,如果这个vim特定历史记录可以保存在vim会话文件中,那就太好了。
答案 0 :(得分:2)
默认情况下,Bash会将其历史记录存储在~/.bash_history
中。这可以使用HISTFILE
环境变量进行更改。因此,如果您想在vim中启动bash时使用单独的历史记录文件,则必须为HISTFILE
设置不同的值。您可以通过为从vim中运行时使用的bash创建一个特殊的配置文件来完成此操作。所以首先使用这一行创建一个文件~/.vimbashrc
export HISTFILE=~/.vim_bash_history
这将告诉bash使用~/vim_bash_history
作为您的历史记录文件。如果您想要从vim启动的shell的任何其他特定设置,您还可以添加更多。然后在.vimrc
添加行
set shell=/bin/bash\ --init-file\ ~/.vimbashrc
vim中的shell设置告诉它在使用:!
命令和:shell
命令时要执行的命令。 --init-file
标志告诉bash加载指定的配置文件(它将在加载普通.bashrc
后加载)。所以现在当你运行命令:sh
时,它将使用这个配置文件运行bash,这将把它设置为使用不同的历史文件。