zshのディレクトリごとの履歴


10

私はここzshしばらくの間楽しく使用しており、次の履歴設定に非常に満足しています。

# Write to history immediately
setopt inc_append_history
# History shared among terminals
setopt share_history
# Save extended info in history
setopt extended_history
# Ignore duplicates
setopt hist_ignoredups

しかし、特定のディレクトリ内で特定のコマンドを使用する必要があることがよくあります。たとえば、~/my_projectmake target1 && ./run1がいるときは通常呼び出しますが、私がいるとき~/second_projectは通常必要make target2 && cat foobar | ./run2です。

つまり、ディレクトリは異なりますが、コマンドは似ています。

したがって、私は通常cd ~/my_project、入力してmakeから、必要なものが見つかるまで履歴を逆方向に検索します。しかし、私がで作業していたsecond_project場合、履歴を検索すると、不要なコマンドがいくつか見つかります。

だから、私の質問:履歴で検索すると、現在のディレクトリで呼び出されたコマンドが最初に表示されるように、zshのプラグイン/設定/何かが存在しますか?

理想的には、他のすべての一致する履歴コマンドがそれらの後に表示され、オプションで優先要素の最大数を指定します。

私は自分でこのようなものを書こうとしますが、カスタムzshプラグインの作成方法、履歴の処理方法などはまだわかりません。

回答:


6

あなたが探しているものを正確に実行すると主張するプラグインがあり、ディレクトリ履歴プラグインごとに適切に名前が付けられています

https://github.com/jimhester/oh-my-zsh/commit/baa187e4b903f39422a84b580e6e617ec3738e09

「ディレクトリごとの履歴-現在のディレクトリごととグローバルの両方で以前のコマンド履歴を追跡し、それらをその場で切り替えることができ、ctrl-gにバインドされます。」彼らのwikiは言う。

私は(まだ)自分でテストしませんでしたが、コメントによると、動作するはずです。


1
よかった、ありがとう!よろしければ、受け入れる前に試してみます:)
AkiRoss

1
私が何かを見落とすまで、プラグインは私が必要とするものと正確に同じではありません。つまり、ディレクトリごとに、およびグローバル履歴はctrl-g(私が尋ねたように優先度ではなく)を使用して相互に切り替えられます。それにもかかわらず、私はそれが非常に有用であり、私の質問への良い答えだと思っています。ですから、ありがとう:)
AkiRoss

おそらくZSHの変更が原因ですが、現在のバージョンのこのプラグインはZSHの履歴の編集を正しく処理していないようです。
オーウェン

0

私は、Jim Hesterのプラグインが行うことの多くを行う小さなプラグインを作成しましたが、そのプラグインのGitHubリポジトリにリストされている問題の多くを修正する別のアプローチを使用しています。

https://github.com/ericfreese/zsh-cwd-history

HISTFILEコマンドを実行したディレクトリごとに個別に保存し、ディレクトリを変更したときにchpwdを切り替えるフックを追加HISTFILEします。

また、キープレスにバインドしてHISTFILE、元の「グローバル」HISTFILEHISTFILE現在の作業ディレクトリのを切り替えるzleウィジェットも提供します。

だから、私の質問:履歴で検索すると、現在のディレクトリで呼び出されたコマンドが最初に表示されるように、zshのプラグイン/設定/何かが存在しますか?

zsh-cwd-historyプラグインは現在これをサポートしていませんが、すぐにサポートを追加したいと思っています。


0

私はまったく同じ問題を抱えており、それを解決するZSHプラグインを作成しました:https : //github.com/tymm/zsh-directory-history

プラグインを使用する場合、グローバル履歴とディレクトリ履歴を手動で切り替える必要はありません。

理想的には、他のすべての一致する履歴コマンドがそれらの後に表示され、オプションで優先要素の最大数を指定します。

これは、私のプラグインを使用してすぐに機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.