Eu preciso de uma maneira de usar a linha atual que os usuários digitaram como variável para uma função de shell.
meu código atual, que pode ser chamado por ctrl + r
zle -N search
bindkey "^R" search
search () {
read str;
fc -ln -30 | grep $(printf "%q\n" "$str");
}
ou simplesmente, para chamá-lo como uma função
search () {
fc -ln -30 | grep $(printf "%q\n" "$1");
}
atualizado: pseudo código de destino, para chamar como uma função chamada por ctrl + r que não precisa de mais prompt de entrada
zle -N search
bindkey "^R" search
search ()
echo ""; #for better formatting because ctrl+R is not enter so the BUFFER(current line) gets corrupted and looks messy and the current input is not correctly shown
fc -ln -30 | grep $(printf "%q\n" "$BUFFER"); #edited to be the solution where $BUFFER is the current terminal line
}
Tags zsh shell terminal user-input zle