共同メンテナを募集中: 最近、このプロジェクトをメンテする時間があまりありません。誰かが参加して共同メンテナになりたいと思ったら、それは感謝されます。
McFly は、デフォルトのctrl-r
シェル履歴検索を、作業ディレクトリと最近実行されたコマンドのコンテキストを考慮したインテリジェントな検索エンジンに置き換えます。 McFly の提案は、小規模なニューラル ネットワークを使用してリアルタイムで優先順位付けされます。
TL;DR: アップグレードされたctrl-r
では、履歴の結果が現在取り組んでいることに意味を持ちます。
ctrl-r
再バインドして、小規模なニューラル ネットワークで優先順位を付けた全画面の逆履歴検索を表示します。%
入力すると、任意の数の文字に一致します。 McFly の主な機能は、リアルタイムで実行される小規模なニューラル ネットワークを活用したスマートなコマンドの優先順位付けです。目標は、実行したいコマンドが常に上位の候補の 1 つになるようにすることです。
コマンドを提案するとき、McFly は次の点を考慮します。
mcfly
をインストールします。
brew install mcfly
~/.bashrc
、 ~/.zshrc
、または~/.config/fish/config.fish
ファイルの末尾に以下を追加します。
バッシュ:
eval " $( mcfly init bash ) "
ズシュ:
eval " $( mcfly init zsh ) "
魚:
mcfly init fish | source
走る. ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
またはターミナル エミュレータを再起動します。
mcfly
削除します。 brew uninstall mcfly
~/.bashrc
/ ~/.zshrc
/ ~/.config/fish/config.fish
に追加した行を削除します。ポートツリーを更新する
sudo port selfupdate
mcfly
をインストールします。
sudo port install mcfly
必要に応じて、 ~/.bashrc
、 ~/.zshrc
、または~/.config/fish/config.fish
ファイルの末尾に次の行を追加します。
バッシュ:
eval " $( mcfly init bash ) "
ズシュ:
eval " $( mcfly init zsh ) "
魚:
mcfly init fish | source
走る. ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
またはターミナル エミュレータを再起動します。
mcfly
削除します。 sudo port uninstall mcfly
~/.bashrc
/ ~/.zshrc
/ ~/.config/fish/config.fish
に追加した行を削除します。 curl -LSfs https://raw.githubusercontent.com/cantino/mcfly/master/ci/install.sh | sh -s -- --git cantino/mcfly
(または、現在のユーザーに /usr/local/bin を編集する権限がない場合は、 sudo sh -s
を使用します。)
~/.bashrc
、 ~/.zshrc
、または~/.config/fish/config.fish
ファイルの末尾にそれぞれ次の行を追加します。
バッシュ:
eval " $( mcfly init bash ) "
ズシュ:
eval " $( mcfly init zsh ) "
魚:
mcfly init fish | source
走る. ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
またはターミナル エミュレータを再起動します。
GitHub から最新リリースをダウンロードします。
$PATH
内の場所にインストールします。 (たとえば、 ~/bin
にディレクトリを作成し、 mcfly
この場所にコピーして、 export PATH="$PATH:$HOME/bin"
を.bashrc
/ .zshrc
に追加するか、 set -Ua fish_user_paths "$HOME/bin"
を実行します。 set -Ua fish_user_paths "$HOME/bin"
(魚用)
~/.bashrc
、 ~/.zshrc
、または~/.config/fish/config.fish
の末尾にそれぞれ次の行を追加します。
バッシュ:
eval " $( mcfly init bash ) "
ズシュ:
eval " $( mcfly init zsh ) "
魚:
mcfly init fish | source
走る. ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
またはターミナル エミュレータを再起動します。
Rust 1.40以降をインストールする
git clone https://github.com/cantino/mcfly
を実行し、 cd mcfly
実行します。
cargo install --path .
~/.cargo/bin
$PATH
にあることを確認してください。
~/.bashrc
、 ~/.zshrc
、 ~/.config/fish/config.fish
、または powershell $PROFILE
の末尾にそれぞれ次の行を追加します。
バッシュ:
eval " $( mcfly init bash ) "
ズシュ:
eval " $( mcfly init zsh ) "
魚:
mcfly init fish | source
Powershell コア (pwsh)
Invoke-Expression - Command $ (mcfly init powershell | out-string )
走る. ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
/ . $PROFILE
実行するか、端末エミュレータを再起動します。
以下のコードを zshrc に追加します。
zinit ice lucid wait " 0a " from " gh-r " as " program " atload ' eval "$(mcfly init zsh)" '
zinit light cantino/mcfly
mcfly をダウンロードしてインストールします。
$(mcfly init zsh)
プロンプトの後に実行されます
McFly の UI によって iTerm2 のスクロールバック履歴が台無しになるのを避けるには、このオプションがオフになっていることを確認してください。
McFly はコマンド履歴をstdoutにダンプできます。
例えば:
mcfly dump --since ' 2023-01-01 ' --before ' 2023-09-12 09:15:30 '
2023-01-01 00:00:00.0から2023-09-12 09:15:30 (排他的) の間に実行されたコマンドをjsonとしてダンプします。 --format csv
使用してcsv をダンプ形式として指定することもできます。
ダンプされたコマンドの各項目には次のフィールドがあります。
cmd
: 実行コマンド。when_run
: コマンドがローカル タイムゾーンで実行された時刻。引数なしですべてのコマンド履歴をダンプできます。
mcfly dump
McFly は、 systemd.time の非厳密な実装であるchrono-systemd-time
を介してタイムスタンプを解析しますが、次の例外があります。
McFly ユーザーは、タイムスタンプでのタイムゾーンの指定が許可されていないことを理解する必要があります。 McFly は常にローカル タイムゾーンを使用します。
詳細については、 chrono-systemd-time
ドキュメントを参照してください。
Dump は、正規表現を使用したコマンドのフィルタリングをサポートしています。正規表現構文は crate 正規表現に従います。
例えば:
mcfly dump -r ' ^cargo run '
はcargo run
を含むすべてのコマンド接頭辞をダンプします。
-r/--regex
と time オプションを同時に使用できます。
例えば:
mcfly dump -r ' ^cargo run ' --since ' 2023-09-12 09:15:30 '
2023-09-12 09:15:30以降に実行されたcargo run
を含むすべてのコマンド プレフィックスをダンプします。
環境変数を介して多くの設定を行うことができます。設定を行うには、次のスニペットを~/.bashrc
/ ~/.zshrc
/ ~/.config/fish/config.fish
に追加する必要があります。
ライト ターミナルで使用するためにカラー スキームを交換するには、環境変数MCFLY_LIGHT
を設定します。
バッシュ/zsh:
export MCFLY_LIGHT=TRUE
魚:
set -gx MCFLY_LIGHT TRUE
パワーシェル:
$ env: MCFLY_LIGHT = " TRUE "
ヒント: macOS では、システム全体の設定に基づいてカラースキームを構成する次のスニペットを使用できます。
バッシュ/zsh:
if [[ " $( defaults read -g AppleInterfaceStyle 2 & > /dev/null ) " != " Dark " ]] ; then
export MCFLY_LIGHT=TRUE
fi
デフォルトでは、Mcfly はemacs
にインスパイアされたキー スキームを使用します。 vim
インスピレーションを得たキー スキームに切り替えたい場合は、環境変数MCFLY_KEY_SCHEME
を設定します。
バッシュ/zsh:
export MCFLY_KEY_SCHEME=vim
魚:
set -gx MCFLY_KEY_SCHEME vim
パワーシェル:
$ env: MCFLY_KEY_SCHEME = " vim "
あいまい検索を有効にするには、 MCFLY_FUZZY
整数に設定します。 0はオフです。数値が大きいほど、短い一致に重点が置かれます。これまでのところ、2 ~ 5 の範囲の値で良好な結果が得られています。いくつか試してみて、最も効果的なものを報告してください。
バッシュ/zsh:
export MCFLY_FUZZY=2
魚:
set -gx MCFLY_FUZZY 2
パワーシェル:
$ env: MCFLY_FUZZY = 2
表示される結果の最大数を変更するには、 MCFLY_RESULTS
(デフォルト: 10) を設定します。
バッシュ/zsh:
export MCFLY_RESULTS=50
魚:
set -gx MCFLY_RESULTS 50
パワーシェル:
$ env: MCFLY_RESULTS = 50
確認なしで削除するには、 MCFLY_DELETE_WITHOUT_CONFIRM
true に設定します。
バッシュ/zsh:
export MCFLY_DELETE_WITHOUT_CONFIRM=true
魚:
set -gx MCFLY_DELETE_WITHOUT_CONFIRM true
パワーシェル:
$ env: MCFLY_DELETE_WITHOUT_CONFIRM = " true "
インターフェースビューを変更するには、 MCFLY_INTERFACE_VIEW
(デフォルト: TOP
) を設定します。利用可能なオプション: TOP
とBOTTOM
バッシュ/zsh:
export MCFLY_INTERFACE_VIEW=BOTTOM
魚:
set -gx MCFLY_INTERFACE_VIEW BOTTOM
パワーシェル:
$ env: MCFLY_INTERFACE_VIEW = " BOTTOM "
メニュー インターフェイスを無効にするには、環境変数MCFLY_DISABLE_MENU
を設定します。
バッシュ/zsh:
export MCFLY_DISABLE_MENU=TRUE
魚:
set -gx MCFLY_DISABLE_MENU TRUE
パワーシェル:
$ env: MCFLY_DISABLE_MENU = true
表示される結果の並べ替えを変更するには、 MCFLY_RESULTS_SORT
(デフォルト: RANK) を設定します。可能な値はRANK
とLAST_RUN
バッシュ/zsh:
export MCFLY_RESULTS_SORT=LAST_RUN
魚:
set -gx MCFLY_RESULTS_SORT LAST_RUN
パワーシェル:
$ env: MCFLY_RESULTS_SORT = " LAST_RUN "
プロンプトを変更するには、 MCFLY_PROMPT
(デフォルト: $
) を設定します。
バッシュ/zsh:
export MCFLY_PROMPT= " ❯ "
魚:
set -gx MCFLY_PROMPT " ❯ "
パワーシェル:
$ env: MCFLY_PROMPT = " > "
単一文字のプロンプトのみが許可されることに注意してください。 MCFLY_PROMPT
"<str>"
に設定すると、デフォルトのプロンプトにリセットされます。
McFly は、SQLite データベースを OS の標準の場所に保存します。 OS X では、これは~/Library/Application Support/McFly
にあり、Linux では、 $XDG_DATA_DIR/mcfly/history.db
(デフォルトは~/.local/share/mcfly/history.db
です)、Windows では、これにあります。 、それは%LOCALAPPDATA%McFlydatahistory.db
です。レガシー サポートの場合、 ~/.mcfly/
が存在する場合は、代わりにそれが使用されます。
非常に大規模な履歴データベースがあり、McFly の起動が遅いことに気付いた場合は、 MCFLY_HISTORY_LIMIT
10000 などに設定して、検索時に考慮されるレコードの数を制限できます。この例では、McFly は最新の 10,000 エントリのみを検索します。
Linux カーネル バージョン 6.2 以降、一部のシステムでは TIOCSTI (McFly が選択されたコマンドを記述するために以前に使用していたもの) が無効になっています。 McFly は、2 つの「ダミー」キーバインド (デフォルトはctrl-x 1
とctrl-x 2
を使用することでこの問題を回避します。これらのいずれかを別の目的で使用している場合は、 MCFLY_BASH_SEARCH_KEYBINDING
およびMCFLY_BASH_ACCEPT_LINE_KEYBINDING
それぞれ、使用していないものに設定できます。従来の TIOCSTI 動作を使用したい場合は、システム上でsysctl
変数dev.tty.legacy_tiocsti
を1
に設定し、 MCFLY_BASH_USE_TIOCSTI
bash 変数を1
に設定することで有効にできます。
McFly は現在、 HISTTIMEFORMAT
を解析または使用しません。
貢献とバグ修正を歓迎します。ただし、プロジェクトを維持するためにすでに必要とされるものを大幅に超えて複雑さを増すような PR をマージすることはできません。疑問がある場合は、お気軽に問題を開いて質問してください。
cargo test
Cargo.toml
編集してバージョンを上げます。cargo clippy
とcargo fmt
実行します。cargo build
) とテスト ( cargo test
)git add -p
git ci -m 'Bumping to vx.x.x'
git tag vx.xx
git push origin head --tags
cargo publish
古い:
pkg/brew/mcfly.rb
を編集し、バージョンと SHA を更新します。 ( shasum -a 256 ...
)../homebrew-mcfly/pkg/brew/mcfly.rb
も編集します。cp pkg/brew/mcfly.rb ../homebrew-mcfly/pkg/brew/mcfly.rb
diff ../homebrew-mcfly/pkg/brew/mcfly.rb ../mcfly/pkg/brew/mcfly.rb ; diff ../homebrew-mcfly/HomebrewFormula/mcfly.rb ../mcfly/HomebrewFormula/mcfly.rb
git add -p && git ci -m 'Update homebrew' && git push
cd ../homebrew-mcfly && git add -p && git ci -m 'Update homebrew' && git push && cd ../mcfly