검색 기록을 난독화하기 위해 zsh 위젯을 개발 중입니다.
skim-history() {
origquery=${BUFFER}
output=$(history -1 1 | sd '^[ ]*[0-9]*[ ]*' '' | sk --tac --no-sort --exact)
if [ $? -eq 0 ]; then
BUFFER=$output
else
BUFFER=$origquery
fi
CURSOR=$#BUFFER
}
zle -N skim-history
bindkey '^R' skim-history
존재하다 history -1 1 | sd '^[ ]*[0-9]*[ ]*' '' | sk --tac --no-sort --exact
,표준 편차처음부터 숫자만 제거하는 sed 대신 sed를 사용하세요.SKfzf를 대체합니다.
이 위젯은 여러 줄 명령을 제외하고 훌륭하게 작동합니다.
예를 들면 다음과 같습니다.
좋다:
\n
그래서 그것은 내가 원하는 것이 아닌 개행 문자를 대체합니다 .
.zsh_history
명령은 파일에서 다음과 같습니다.
: 1657176206:0;function brcd() {\
cd $(broot --only-folders --hidden --cmd "$1;:pp")\
}\
나는 찾았다! NUM 올바른 형식으로 기록을 가져옵니다.
내 위젯에 어떤 변경이 필요합니까? 이 문제를 어떻게 해결할 수 있나요?
답변1
여기 있어요. 해결책은 다음과 같습니다.
skim-history() {
num=$(fc -l 1 -1 | sk --tac --no-sort --exact | rg -o '^[ ]*([0-9]*)[ ]*' -r '$1')
if [ -n "$num" ]; then
zle vi-fetch-history -n $num
fi
}
zle -N skim-history
bindkey '^R' skim-history