尋求共同維護者:這些天我沒有太多時間來維護這個專案。如果有人願意加入並成為共同維護者,我們將不勝感激!
McFly 使用智慧搜尋引擎取代預設的ctrl-r
shell 歷史搜索,該搜尋引擎會考慮您的工作目錄和最近執行的命令的上下文。 McFly 的建議透過小型神經網路即時進行優先排序。
TL;DR:升級後的ctrl-r
,其中歷史結果對您現在正在做的事情有意義。
ctrl-r
以調出全螢幕反向歷史搜索,優先使用小型神經網路。%
來匹配任意數量的字元。 McFly 的主要功能是由即時運行的小型神經網路提供支援的智慧命令優先順序。我們的目標是讓您想要運行的命令始終成為最重要的建議之一。
在建議命令時,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"
用於魚。)
分別將以下內容加入~/.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
它將下載 mfly 並為您安裝。
$(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 透過chrono-systemd-time
解析時間戳,這是 systemd.time 的非嚴格實現,但有以下例外:
McFly 使用者只需要了解不允許在時間戳中指定時區。 McFly 將始終使用您當地的時區。
有關更多詳細信息,請參閱chrono-systemd-time
文件。
Dump支援使用正規表示式過濾指令。正規表示式語法遵循 crate 正規表示式。
例如:
mcfly dump -r ' ^cargo run '
將轉儲所有指令前綴與cargo run
。
您可以同時使用-r/--regex
和時間選項。
例如:
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
。
bash/zsh:
export MCFLY_LIGHT=TRUE
魚:
set -gx MCFLY_LIGHT TRUE
電源外殼:
$ env: MCFLY_LIGHT = " TRUE "
提示:在 macOS 上,您可以使用以下程式碼片段根據系統範圍的設定配置配色方案:
bash/zsh:
if [[ " $( defaults read -g AppleInterfaceStyle 2 & > /dev/null ) " != " Dark " ]] ; then
export MCFLY_LIGHT=TRUE
fi
預設情況下,Mcfly 使用受emacs
啟發的按鍵方案。如果您想切換到vim
啟發的按鍵方案,請設定環境變數MCFLY_KEY_SCHEME
。
bash/zsh:
export MCFLY_KEY_SCHEME=vim
魚:
set -gx MCFLY_KEY_SCHEME vim
電源外殼:
$ env: MCFLY_KEY_SCHEME = " vim "
若要啟用模糊搜索,請將MCFLY_FUZZY
設為整數。 0 為關閉;數字越大,比賽越短。到目前為止,2-5 範圍內的值可以獲得良好的結果;嘗試一些並報告最適合您的!
bash/zsh:
export MCFLY_FUZZY=2
魚:
set -gx MCFLY_FUZZY 2
電源外殼:
$ env: MCFLY_FUZZY = 2
若要變更顯示的最大結果數,請設定MCFLY_RESULTS
(預設值:10)。
bash/zsh:
export MCFLY_RESULTS=50
魚:
set -gx MCFLY_RESULTS 50
電源外殼:
$ env: MCFLY_RESULTS = 50
若要刪除而不確認,請將MCFLY_DELETE_WITHOUT_CONFIRM
設為 true。
bash/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
bash/zsh:
export MCFLY_INTERFACE_VIEW=BOTTOM
魚:
set -gx MCFLY_INTERFACE_VIEW BOTTOM
電源外殼:
$ env: MCFLY_INTERFACE_VIEW = " BOTTOM "
若要停用選單介面,請設定環境變數MCFLY_DISABLE_MENU
。
bash/zsh:
export MCFLY_DISABLE_MENU=TRUE
魚:
set -gx MCFLY_DISABLE_MENU TRUE
電源外殼:
$ env: MCFLY_DISABLE_MENU = true
若要變更顯示結果的排序,請設定MCFLY_RESULTS_SORT
(預設值:RANK)。可能的值RANK
和LAST_RUN
bash/zsh:
export MCFLY_RESULTS_SORT=LAST_RUN
魚:
set -gx MCFLY_RESULTS_SORT LAST_RUN
電源外殼:
$ env: MCFLY_RESULTS_SORT = " LAST_RUN "
若要變更提示,請設定MCFLY_PROMPT
(預設值: $
)。
bash/zsh:
export MCFLY_PROMPT= " ❯ "
魚:
set -gx MCFLY_PROMPT " ❯ "
電源外殼:
$ env: MCFLY_PROMPT = " > "
請注意,僅允許使用單字元提示。將MCFLY_PROMPT
設為"<str>"
會將其重設為預設提示符。
McFly 將其 SQLite 資料庫儲存在作業系統的標準位置。在 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 透過使用兩個「虛擬」鍵綁定來解決此問題,預設為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