zsh의 각 디렉토리 기록

zsh의 각 디렉토리 기록

zsh나는 한동안 행복하게 사용해 왔으며 다음과 같은 내역 설정에 매우 만족합니다.

# Write to history immediately
setopt inc_append_history
# History shared among terminals
setopt share_history
# Save extended info in history
setopt extended_history
# Ignore duplicates
setopt hist_ignoredups

하지만 일부 특정 디렉터리에서 특정 명령을 사용해야 하는 경우가 종종 있습니다. 예를 들어, 내가 들어갈 때는 ~/my_project보통 에 전화 make target1 && ./run1하지만, 내가 들어갈 때는 ~/second_project보통 가 필요하다 make target2 && cat foobar | ./run2.

즉, 디렉토리는 다르지만 명령은 유사합니다.

그래서 저는 보통 cd ~/my_project무언가를 입력한 make다음 필요한 것을 찾을 때까지 기록을 거꾸로 검색합니다. 하지만 우연히 작업을 하게 되면 second_project기록을 검색하는 동안 필요하지 않은 명령을 발견하게 됩니다.

그래서 내 질문: 기록에서 검색할 때 현재 디렉터리에서 호출된 명령이 먼저 표시되도록 zsh에 대한 플러그인/설정/무언가가 있습니까?

이상적으로는 일치하는 다른 모든 기록 명령이 이러한 명령 뒤에 나타나며 선택적으로 우선 순위 요소의 최대 수를 지정합니다.

나도 이와 같은 것을 작성하려고 노력하지만, 사용자 정의 zsh 플러그인을 작성하는 방법, 기록을 처리하는 방법 등을 여전히 모릅니다.

답변1

필요한 작업을 정확하게 수행한다고 주장하는 플러그인이 있으며 이름이 적절합니다.디렉토리별 기록 플러그인:

https://github.com/jimhester/oh-my-zsh/commit/baa187e4b903f39422a84b580e6e617ec3738e09

"디렉터리별 기록 - ctrl-g를 사용하여 각 디렉토리 간을 동적으로 전환하는 기능을 사용하여 각 현재 디렉토리에 대한 이전 명령 기록을 전역적으로 추적합니다."그들의 위키는 말합니다.

직접 테스트하지는 않았지만 의견에 따르면 작동할 것입니다.

답변2

oh-my-zsh의 현재 버전에는 이 플러그인이 함께 제공됩니다. per-directory-history플러그인 목록에 추가하세요 .zshrc:

plugins=(... per-directory-history)

답변3

나는 똑같은 문제가 있었고 그것을 해결하기 위해 ZSH 플러그인을 작성했습니다. https://github.com/tymm/zsh-directory-history

내 플러그인을 사용할 때 전역 기록과 디렉터리 기록 간에 수동으로 전환할 필요가 없습니다.

이상적으로는 일치하는 다른 모든 기록 명령이 이러한 명령 뒤에 나타나며 선택적으로 우선 순위 요소의 최대 수를 지정합니다.

이것은 내 플러그인에서도 기본적으로 작동합니다.

답변4

방금 Jim Hester 플러그인의 기능을 대부분 수행하지만 다른 접근 방식을 사용하여 플러그인의 GitHub 저장소에 나열된 많은 문제를 해결하는 작은 플러그인을 작성했습니다.

https://github.com/ericfreese/zsh-cwd-history

HISTFILEchpwd명령을 실행하는 각 디렉토리에 대해 별도의 디렉토리를 저장하고 디렉토리를 변경할 때 s 사이를 전환하기 위한 후크를 추가합니다 .HISTFILE

HISTFILE또한 원래의 "전역" 디렉토리 HISTFILEHISTFILE현재 작업 디렉토리 사이를 전환 하는 키 입력에 바인딩할 수 있는 zle 위젯을 제공합니다 .

그래서 내 질문: 기록에서 검색할 때 현재 디렉터리에서 호출된 명령이 먼저 표시되도록 zsh에 대한 플러그인/설정/무언가가 있습니까?

zsh-cwd-history 플러그인은 현재 이 기능을 지원하지 않지만 곧 이에 대한 지원을 추가할 수 있기를 바랍니다.

관련 정보