2012-01-08 9 views
2

vimの特定のインスタンスに対してのみ、シェル履歴を特定する方法はありますか。たとえば、両方のvimのシェルでのイベントのこれらのシーケンス(:sh)を観察し、ターミナルやVimの両方のためのvim固有のシェル履歴を適用する方法

Vim (:sh)     | Terminal 
------------------------------------------------ 
1 pdflatex foo.tex   | 
2        | echo hello 
3        | echo world 

別の端末コマンド履歴コマンド履歴ので、どのような方法は

1 pdflatex foo.tex 
2 echo hello 
3 echo world 

ありさvimのため

1 pdflatex foo.tex 

で、ターミナルは

です210

pdflatex foo.texを実行するために上向きの矢印を押すだけでよいので、他のすべてのコマンドも実行する必要はありません。また、このvimの特定の履歴をvimセッションファイルに保存できるといいでしょう。

+1

「vimのコマンド履歴」とは何ですか? – wRAR

+0

@wRAR申し訳ありませんが、 ':sh'でvimの中からシェルを呼び出すことを意味しました – puk

+0

どのシェルを使用していますか? –

答えて

2

Bashはデフォルトで~/.bash_historyに履歴を保存します。これは環境変数HISTFILEで変更できます。したがって、vimでbashを起動するときに別の履歴ファイルを使用する場合は、別の値をHISTFILEに設定する必要があります。これを行うには、vim内から実行するときにbash用の特別な設定ファイルを作成します。だから、最初にあなたの履歴ファイルとして~/vim_bash_historyを使用するためにはbashを教えてくれる、それ

export HISTFILE=~/.vim_bash_history 

これで、この1行でファイル~/.vimbashrcを作ります。 vimから起動したシェルの他の特定の設定が必要な場合は、さらに追加することもできます。次に、あなたの.vimrc:!コマンドと:shellコマンドを使用するときにvimの中shell設定は、それを実行するためにどのようなコマンドを伝えるライン

set shell=/bin/bash\ --init-file\ ~/.vimbashrc 

を追加します。 --init-fileフラグは、指定された設定ファイルをロードするようにbashに指示します(通常の.bashrcをロードした後にロードされます)。これでコマンド:shを実行すると、この設定ファイルでbashが実行され、別の履歴ファイルを使用するように設定されます。

関連する問題