検索履歴を難読化するために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