2012-01-08 60 views
2

有什麼方法可以讓shell歷史記錄僅針對特定的vim實例。例如,觀察兩個VIM殼(:sh),事件的這些序列和其他終端如何執行vim特定的shell歷史記錄

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會話文件中,那將會很好。

+1

什麼是「命令歷史vim」? – wRAR 2012-01-08 09:45:41

+0

@wRAR抱歉,我的意思是通過':sh'從vim內部調用shell。 – puk 2012-01-08 11:05:55

+0

您使用的是什麼shell? – 2012-01-08 11:21:41

回答

2

默認情況下,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 

使用:!命令和:shell命令時,Vim的shell設置告訴它什麼命令來執行。 --init-file標誌告訴bash加載指定的配置文件(它將在加載正常的.bashrc後加載)。所以,現在當你運行命令:sh它會運行bash這個配置文件,它將它設置爲使用不同的歷史文件。

相關問題