有什么办法可以让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会话文件中,那就太好了。
Bash ~/.bash_history
默认将其历史记录存储在其中。可以使用HISTFILE
环境变量来更改。因此,如果要在vim中启动bash时使用单独的历史记录文件,则必须将设置为另一个值HISTFILE
。您可以通过创建一个特殊的配置文件以供bash在vim中运行时使用来实现。因此,首先制作一个~/.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加载指定的配置文件(它将在加载normal之后加载.bashrc
)。因此,现在,当您运行命令时:sh
,它将使用此配置文件运行bash,这会将其设置为使用其他历史记录文件。