peco 명령 기록에 날짜를 표시하고 날짜를 붙여 넣지 않음
개요
・mac/zsh
· history (명령 실행 이력)에 날짜를 포함하여 저장
· peco를 사용하여 ctrl + r에서 명령 내역을 인용합니다.
· 날짜에서도 검색하고 싶습니다.
・이력을 선택할 때 날짜가 붙어 있으면 곤란하다
history에 날짜가 기록되지 않은 사람
다음을 .zshrc에 추가하고 source ~/.zshrc
precmd='history -a; history -c; history -r' # 履歴のリアルタイム反映
setopt Extended_History # 日付を保存する
setopt append_history # 履歴を既存のhistoryに追加していく
setopt EXTENDED_HISTORY # 開始と終了を記録
날짜에서 검색하고 싶습니다.
우선, 아래와 같이 설정하면 history 자체에 날짜가 들어 있어도 peco의 검색 화면에 날짜가 표시되지 않습니다.
(날짜로 검색할 수 없음)
참고 : peco를 사용하여 단말기 조작을 폭속화
function peco-history-selection() {
BUFFER=`history -n 1 | tac | awk '!a[$0]++' | peco`
CURSOR=$#BUFFER
zle reset-prompt
}
zle -N peco-history-selection
bindkey '^R' peco-history-selection
「언제의 커멘드인가」도 알고 싶고 또한 짜내고 싶기 때문에, 「-i」의 옵션을 추가
BUFFER=`history -n 1 | tac | awk '!a[$0]++' | peco`
↓
BUFFER=`history -i -n 1 | tac | awk '!a[$0]++' | peco`
겉보기에 보이는 것처럼 보이지만 이것을 그대로 선택하면 날짜도 명령으로 붙여 넣어집니다.
해결책
아래로 바꾸면 ↑와 같은 표시로 붙여 넣을 때 날짜만 제외할 수 있습니다.BUFFER=
부분으로 출력된 내용으로부터, history의 번호나 일자의 단락의 스페이스를 세어, 이후의 캐릭터 라인에 가공하고 있습니다.
※ awk '!a[$0]++'
는 표시로부터 중복을 삭제하는 것이므로, 불필요하면 삭제 가능
function peco-history-selection() {
local selected_log=`history -i -n 1 | tac | awk '!a[$0]++' | peco`
if [ -n "$selected_log" ]; then
BUFFER=`echo $selected_log | cut -d ' ' -f 4-`
CURSOR=$#BUFFER
zle reset-prompt
fi
}
zle -N peco-history-selection
bindkey '^R' peco-history-selection
결과
날짜에서 명령을 검색하여 붙여넣을 수 있습니다.
Reference
이 문제에 관하여(peco 명령 기록에 날짜를 표시하고 날짜를 붙여 넣지 않음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Aranami/items/bce9c44ebd32fa816568
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
precmd='history -a; history -c; history -r' # 履歴のリアルタイム反映
setopt Extended_History # 日付を保存する
setopt append_history # 履歴を既存のhistoryに追加していく
setopt EXTENDED_HISTORY # 開始と終了を記録
function peco-history-selection() {
BUFFER=`history -n 1 | tac | awk '!a[$0]++' | peco`
CURSOR=$#BUFFER
zle reset-prompt
}
zle -N peco-history-selection
bindkey '^R' peco-history-selection
BUFFER=`history -n 1 | tac | awk '!a[$0]++' | peco`
↓
BUFFER=`history -i -n 1 | tac | awk '!a[$0]++' | peco`
function peco-history-selection() {
local selected_log=`history -i -n 1 | tac | awk '!a[$0]++' | peco`
if [ -n "$selected_log" ]; then
BUFFER=`echo $selected_log | cut -d ' ' -f 4-`
CURSOR=$#BUFFER
zle reset-prompt
fi
}
zle -N peco-history-selection
bindkey '^R' peco-history-selection
Reference
이 문제에 관하여(peco 명령 기록에 날짜를 표시하고 날짜를 붙여 넣지 않음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Aranami/items/bce9c44ebd32fa816568텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)