寻求共同维护者:这些天我没有太多时间来维护这个项目。如果有人愿意加入并成为共同维护者,我们将不胜感激!
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