Procurando co-mantenedores : Não tenho muito tempo para manter este projeto atualmente. Se alguém quiser entrar e se tornar um co-mantenedor, ficaria muito grato!
McFly substitui sua pesquisa de histórico de shell ctrl-r
padrão por um mecanismo de pesquisa inteligente que leva em consideração seu diretório de trabalho e o contexto dos comandos executados recentemente. As sugestões do McFly são priorizadas em tempo real com uma pequena rede neural.
DR: um ctrl-r
atualizado onde os resultados do histórico fazem sentido para o que você está trabalhando no momento.
ctrl-r
para exibir uma pesquisa reversa do histórico em tela cheia, priorizada com uma pequena rede neural.%
para corresponder a qualquer número de caracteres durante a pesquisa. A principal característica do McFly é a priorização inteligente de comandos alimentada por uma pequena rede neural que funciona em tempo real. O objetivo é que o comando que você deseja executar seja sempre uma das principais sugestões.
Ao sugerir um comando, o McFly leva em consideração:
Instale mcfly
:
brew install mcfly
Adicione o seguinte ao final do seu arquivo ~/.bashrc
, ~/.zshrc
ou ~/.config/fish/config.fish
:
Bash:
eval " $( mcfly init bash ) "
Zsh:
eval " $( mcfly init zsh ) "
Peixe:
mcfly init fish | source
Correr . ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
ou reinicie seu emulador de terminal.
mcfly
: brew uninstall mcfly
~/.bashrc
/ ~/.zshrc
/ ~/.config/fish/config.fish
.Atualize a árvore de portas
sudo port selfupdate
Instale mcfly
:
sudo port install mcfly
Adicione o seguinte ao final do seu arquivo ~/.bashrc
, ~/.zshrc
ou ~/.config/fish/config.fish
, conforme apropriado:
Bash:
eval " $( mcfly init bash ) "
Zsh:
eval " $( mcfly init zsh ) "
Peixe:
mcfly init fish | source
Correr . ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
ou reinicie seu emulador de terminal.
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
(ou, se o usuário atual não tiver permissão para editar /usr/local/bin, use sudo sh -s
.)
Adicione o seguinte ao final do seu arquivo ~/.bashrc
, ~/.zshrc
ou ~/.config/fish/config.fish
, respectivamente:
Bash:
eval " $( mcfly init bash ) "
Zsh:
eval " $( mcfly init zsh ) "
Peixe:
mcfly init fish | source
Correr . ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
ou reinicie seu emulador de terminal.
Baixe a versão mais recente do GitHub.
Instale em um local no seu $PATH
. (Por exemplo, você pode criar um diretório em ~/bin
, copiar mcfly
para este local e adicionar export PATH="$PATH:$HOME/bin"
ao seu .bashrc
/ .zshrc
ou executar set -Ua fish_user_paths "$HOME/bin"
para peixes.)
Adicione o seguinte ao final do seu ~/.bashrc
, ~/.zshrc
ou ~/.config/fish/config.fish
, respectivamente:
Bash:
eval " $( mcfly init bash ) "
Zsh:
eval " $( mcfly init zsh ) "
Peixe:
mcfly init fish | source
Correr . ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
ou reinicie seu emulador de terminal.
Instale Rust 1.40 ou posterior
Execute git clone https://github.com/cantino/mcfly
e cd mcfly
Execute cargo install --path .
Certifique-se de que ~/.cargo/bin
esteja em seu $PATH
.
Adicione o seguinte ao final de seu ~/.bashrc
, ~/.zshrc
, ~/.config/fish/config.fish
ou powershell $PROFILE
, respectivamente:
Bash:
eval " $( mcfly init bash ) "
Zsh:
eval " $( mcfly init zsh ) "
Peixe:
mcfly init fish | source
Núcleo Powershell (pwsh)
Invoke-Expression - Command $ (mcfly init powershell | out-string )
Correr . ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
/ . $PROFILE
ou reinicie seu emulador de terminal.
Adicione o código abaixo ao seu zshrc.
zinit ice lucid wait " 0a " from " gh-r " as " program " atload ' eval "$(mcfly init zsh)" '
zinit light cantino/mcfly
Ele fará o download do Mcfly e instalará para você.
$(mcfly init zsh)
será executado após prompt
Para evitar que a interface do McFly atrapalhe seu histórico de rolagem no iTerm2, certifique-se de que esta opção esteja desmarcada:
McFly pode despejar o histórico de comandos em stdout .
Por exemplo:
mcfly dump --since ' 2023-01-01 ' --before ' 2023-09-12 09:15:30 '
irá despejar o comando executado entre 2023-01-01 00:00:00.0 a 2023-09-12 09:15:30 ( exclusivo ) como json . Você também pode especificar csv como formato de despejo via --format csv
.
Cada item nos comandos despejados possui os seguintes campos:
cmd
: O comando de execução.when_run
: a hora em que o comando foi executado em seu fuso horário local.Você pode despejar todo o histórico de comandos sem nenhum argumento:
mcfly dump
McFly analisa carimbos de data/hora por meio de chrono-systemd-time
, uma implementação não estrita de systemd.time, com as seguintes exceções:
Os usuários do McFly simplesmente precisam entender que a especificação do fuso horário no carimbo de data e hora não é permitida . McFly sempre usará seu fuso horário local .
Para obter mais detalhes, consulte a documentação chrono-systemd-time
.
Dump suporta comandos de filtragem com regex. A sintaxe regex segue a regex da caixa.
Por exemplo:
mcfly dump -r ' ^cargo run '
irá despejar todos os prefixos de comando com cargo run
.
Você pode usar -r/--regex
e opções de tempo ao mesmo tempo.
Por exemplo:
mcfly dump -r ' ^cargo run ' --since ' 2023-09-12 09:15:30 '
irá descartar todos os prefixos de comando com cargo run
executada desde 12/09/2023 09:15:30 .
Várias configurações podem ser definidas por meio de variáveis de ambiente. Para definir uma configuração, você deve adicionar os seguintes trechos ao seu ~/.bashrc
/ ~/.zshrc
/ ~/.config/fish/config.fish
.
Para trocar o esquema de cores para uso em um terminal light, defina a variável de ambiente MCFLY_LIGHT
.
bash/zsh:
export MCFLY_LIGHT=TRUE
peixe:
set -gx MCFLY_LIGHT TRUE
shell do poder:
$ env: MCFLY_LIGHT = " TRUE "
Dica: no macOS você pode usar o seguinte trecho para que o esquema de cores seja configurado com base nas configurações de todo o sistema:
bash/zsh:
if [[ " $( defaults read -g AppleInterfaceStyle 2 & > /dev/null ) " != " Dark " ]] ; then
export MCFLY_LIGHT=TRUE
fi
Por padrão, o Mcfly usa um esquema de teclas inspirado emacs
. Se você quiser mudar para o esquema de chaves inspirado vim
, defina a variável de ambiente MCFLY_KEY_SCHEME
.
bash/zsh:
export MCFLY_KEY_SCHEME=vim
peixe:
set -gx MCFLY_KEY_SCHEME vim
shell do poder:
$ env: MCFLY_KEY_SCHEME = " vim "
Para ativar a pesquisa difusa, defina MCFLY_FUZZY
como um número inteiro. 0 está desativado; números mais altos pesam em partidas mais curtas. Valores na faixa de 2 a 5 obtiveram bons resultados até agora; experimente alguns e relate o que funciona melhor para você!
bash/zsh:
export MCFLY_FUZZY=2
peixe:
set -gx MCFLY_FUZZY 2
shell do poder:
$ env: MCFLY_FUZZY = 2
Para alterar o número máximo de resultados mostrados, defina MCFLY_RESULTS
(padrão: 10).
bash/zsh:
export MCFLY_RESULTS=50
peixe:
set -gx MCFLY_RESULTS 50
shell do poder:
$ env: MCFLY_RESULTS = 50
Para excluir sem confirmação, defina MCFLY_DELETE_WITHOUT_CONFIRM
como verdadeiro.
bash/zsh:
export MCFLY_DELETE_WITHOUT_CONFIRM=true
peixe:
set -gx MCFLY_DELETE_WITHOUT_CONFIRM true
shell do poder:
$ env: MCFLY_DELETE_WITHOUT_CONFIRM = " true "
Para alterar a visualização da interface, defina MCFLY_INTERFACE_VIEW
(padrão: TOP
). Opções disponíveis: TOP
e BOTTOM
bash/zsh:
export MCFLY_INTERFACE_VIEW=BOTTOM
peixe:
set -gx MCFLY_INTERFACE_VIEW BOTTOM
shell do poder:
$ env: MCFLY_INTERFACE_VIEW = " BOTTOM "
Para desativar a interface do menu, defina a variável de ambiente MCFLY_DISABLE_MENU
.
bash/zsh:
export MCFLY_DISABLE_MENU=TRUE
peixe:
set -gx MCFLY_DISABLE_MENU TRUE
shell do poder:
$ env: MCFLY_DISABLE_MENU = true
Para alterar a classificação dos resultados mostrados, defina MCFLY_RESULTS_SORT
(padrão: RANK). Valores possíveis RANK
e LAST_RUN
bash/zsh:
export MCFLY_RESULTS_SORT=LAST_RUN
peixe:
set -gx MCFLY_RESULTS_SORT LAST_RUN
shell do poder:
$ env: MCFLY_RESULTS_SORT = " LAST_RUN "
Para alterar o prompt, defina MCFLY_PROMPT
(padrão: $
).
bash/zsh:
export MCFLY_PROMPT= " ❯ "
peixe:
set -gx MCFLY_PROMPT " ❯ "
shell do poder:
$ env: MCFLY_PROMPT = " > "
Observe que apenas prompts de um único caractere são permitidos. definir MCFLY_PROMPT
como "<str>"
irá redefini-lo para o prompt padrão.
McFly armazena seu banco de dados SQLite no local padrão do sistema operacional. No OS X, está em ~/Library/Application Support/McFly
, no Linux está em $XDG_DATA_DIR/mcfly/history.db
(o padrão seria ~/.local/share/mcfly/history.db
) e no Windows , é %LOCALAPPDATA%McFlydatahistory.db
. Para suporte legado, se ~/.mcfly/
existir, ele será usado.
Se você tiver um banco de dados de histórico muito grande e notar que o McFly inicia lentamente, você pode definir MCFLY_HISTORY_LIMIT
para algo como 10000 para limitar quantos registros são considerados durante a pesquisa. Neste exemplo, o McFly pesquisaria apenas as últimas 10.000 entradas.
A partir da versão 6.2 do kernel Linux, alguns sistemas desabilitaram o TIOCSTI (que o McFly usou anteriormente para escrever o comando selecionado). McFly contorna esse problema usando dois atalhos de teclado "fictícios", cujo padrão é ctrl-x 1
e ctrl-x 2
. Se você estiver usando qualquer um deles para outra finalidade, poderá definir MCFLY_BASH_SEARCH_KEYBINDING
e MCFLY_BASH_ACCEPT_LINE_KEYBINDING
, respectivamente, para algo que não está usando. Se preferir usar o comportamento legado do TIOCSTI, você pode habilitá-lo definindo a variável sysctl
dev.tty.legacy_tiocsti
como 1
em seu sistema e configurando a variável bash MCFLY_BASH_USE_TIOCSTI
como 1
.
Atualmente, o McFly não analisa ou usa HISTTIMEFORMAT
.
Contribuições e correções de bugs são incentivadas! No entanto, não podemos fundir PRs que aumentem significativamente a complexidade além do que já é necessário para manter o projeto. Se você estiver em dúvida, fique à vontade para abrir um problema e perguntar.
cargo test
Cargo.toml
e altere a versão.cargo clippy
e cargo fmt
.cargo build
) e testar ( cargo test
)git add -p
git ci -m 'Bumping to vx.x.x'
git tag vx.xx
git push origin head --tags
cargo publish
Velho:
pkg/brew/mcfly.rb
e atualize a versão e SHAs. ( shasum -a 256 ...
)../homebrew-mcfly/pkg/brew/mcfly.rb
também.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