Nessa dica eu mostro como dar uma configurada mais avançada no
Parte da dica citada acima vai servir de base, então vale uma lida lá antes de tentar essa aqui. Primeiro comece instalado os pacotes:
Após isso, faça backup do seu ~/.bashrc:
Agora abra o seu
Não esqueça que o zoxide precisa "aprender" o seu histórico caso você tenha instalado o recurso agora:
O funcionamento é o mesmo mostrado na dica citada acima. Lembrando que o zoxide é um "cd melhorado com busca" onde você digita parte da pasta que você já entrou e ele mostra uma lista; se a pasta for completa, já entra direto desde que já tenha sido acessada anteriormente. Se digitar só "zi" sem as aspas você cai direto na pesquisa e conforme vai digitando as opções vão diminuindo conforme ficar mais completo o nome de onde você quer ir.
Agora o fzf é um "procurador de histórico" e procura por tudo que você já tenha digitado em termos de comando. No terminal, apertando CTRL+R você vai para uma listagem onde conforme vai digitando a listagem vai diminuindo; chegando onde quer, enter.
Dá até pra combinar palavras:
Agora uma espécie de suggestions, onde você digita parte de um comando inicial e usando as teclas de setas pra cima e pra baixo mostra as opções complementares de comandos já efetuados. Por exemplo, se você digitar sem as aspas "sudo apt-mark" e usar as setas de direção TODAS as entradas de comandos já digitadas e presentes no histórico (~/.bash_history) que tenham a opção de início "sudo apt-mark" aparecerão conforme o uso das setas. Crie o arquivo ~./inputrc:
Coloque dentro:
Salve e feche o arquivo, reinicie a sessão e pronto. Esse recurso não "antecipa" o comando mas é melhor do que ficar procurando com as teclas de setas; e ainda temos o fzf e zoxide que fornece indiretamente essa opção.
O ~/.inputrc é interessante ter pois ele dá cores ao uso do TAB para complementar o comando e para deixar tudo mais completo, no seu ~/.bashrc coloque isso aqui DEPOIS do esac do Interativo:
Vai ficar assim:
bash e no zsh mas tem usuários que podem ter alguns problemas com o zsh (eu mesmo já tive), então resolvi fazer essa dica para implementar funções mais avançadas aos moldes que vemos no zsh.Parte da dica citada acima vai servir de base, então vale uma lida lá antes de tentar essa aqui. Primeiro comece instalado os pacotes:
sudo apt install zoxide zfz bash-completion
Após isso, faça backup do seu ~/.bashrc:
cp ~/.bashrc ~/.bashrc-bkp
Agora abra o seu
~/.bashrc atual, apague o conteúdo e coloque esse aqui (depois de editado, dê um source ~./bashrc):# ~/.bashrc
# =========================
# INTERATIVO
# =========================
case $- in
*i*) ;;
*) return;;
esac
# =========================
# HISTÓRICO
# =========================
HISTCONTROL=ignoreboth
HISTSIZE=10000
HISTFILESIZE=20000
shopt -s histappend
shopt -s checkwinsize
# =========================
# PROMPT
# =========================
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
esac
# =========================
# CORES LS
# =========================
if [ -x /usr/bin/dircolors ]; then
eval "$(dircolors -b)"
alias ls='ls --color=auto'
fi
# =========================
# ALIASES EXTERNOS
# =========================
[ -f ~/.bash_aliases ] && . ~/.bash_aliases
# =========================
# ZOXIDE
# =========================
eval "$(zoxide init bash)"
# =========================
# FZF
# =========================
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border --info=inline"
[ -f /usr/share/doc/fzf/examples/key-bindings.bash ] && \
source /usr/share/doc/fzf/examples/key-bindings.bash
zi() {
local dir
dir=$(zoxide query -l | fzf --height 40% --layout=reverse --border --preview 'ls -la {}') && cd "$dir"
}
# =========================
# FZF - HISTÓRICO EXATO
# =========================
fzf-history-widget-exact() {
local selected
selected=$(history | tac | sed 's/^[ ]*[0-9]*[ ]*//' | \
FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS --exact" fzf)
if [ -n "$selected" ]; then
READLINE_LINE="$selected"
READLINE_POINT=${#READLINE_LINE}
fi
}
# escolha o atalho (recomendado Alt+F)
bind -x '"\ef": fzf-history-widget-exact'Não esqueça que o zoxide precisa "aprender" o seu histórico caso você tenha instalado o recurso agora:
cat ~/.bash_history \
| sed 's/^: [0-9]*:[0-9]*;//' \
| grep -E '^cd ' \
| sed 's/^cd //' \
| while read -r dir; do
dir="${dir/#\~/$HOME}"
[ -d "$dir" ] && zoxide add "$dir"
doneO funcionamento é o mesmo mostrado na dica citada acima. Lembrando que o zoxide é um "cd melhorado com busca" onde você digita parte da pasta que você já entrou e ele mostra uma lista; se a pasta for completa, já entra direto desde que já tenha sido acessada anteriormente. Se digitar só "zi" sem as aspas você cai direto na pesquisa e conforme vai digitando as opções vão diminuindo conforme ficar mais completo o nome de onde você quer ir.
Agora o fzf é um "procurador de histórico" e procura por tudo que você já tenha digitado em termos de comando. No terminal, apertando CTRL+R você vai para uma listagem onde conforme vai digitando a listagem vai diminuindo; chegando onde quer, enter.
Dá até pra combinar palavras:
Agora uma espécie de suggestions, onde você digita parte de um comando inicial e usando as teclas de setas pra cima e pra baixo mostra as opções complementares de comandos já efetuados. Por exemplo, se você digitar sem as aspas "sudo apt-mark" e usar as setas de direção TODAS as entradas de comandos já digitadas e presentes no histórico (~/.bash_history) que tenham a opção de início "sudo apt-mark" aparecerão conforme o uso das setas. Crie o arquivo ~./inputrc:
nano ~/.inputrc
Coloque dentro:
$include /etc/inputrc # command history search "\e[A": history-search-backward "\e[B": history-search-forward "\e[C": forward-char "\e[D": backward-char # extended auto-completation with tab set show-all-if-ambiguous on set completion-ignore-case on # colors set colored-completion-prefix on set colored-stats on # misc set blink-matching-paren on set mark-symlinked-directories on
Salve e feche o arquivo, reinicie a sessão e pronto. Esse recurso não "antecipa" o comando mas é melhor do que ficar procurando com as teclas de setas; e ainda temos o fzf e zoxide que fornece indiretamente essa opção.
O ~/.inputrc é interessante ter pois ele dá cores ao uso do TAB para complementar o comando e para deixar tudo mais completo, no seu ~/.bashrc coloque isso aqui DEPOIS do esac do Interativo:
# enable bash completion in interactive shells if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi
Vai ficar assim:
Terminal bash quase "profissa"...
Nenhum comentário:
Postar um comentário