'setopt HIST_FIND_NO_DUPS'를 사용하여 중복 기록 항목을 표시하지 않도록 Z 쉘을 구성하려고 합니다.
HIST_FIND_NO_DUPS
When searching for history entries in the line editor, do not display duplicates of a line previously found, even if the duplicates are not contiguous.
그러나 예상대로 작동하지 않습니다. 이 기록이 있을 때:
1 history
2 cd /bin
3 cd /bin
4 cd /bin
나는 UP('up-line-or-history'로 설정됨)을 두 번 누르면 프롬프트에 'history'가 표시될 것으로 예상합니다. 그러나 대신 'cd /bin'이 표시됩니다. UP을 네 번 누르면 'history' 명령으로 이동합니다. 이는 기본적으로 HIST_FIND_NO_DUPS가 설정되지 않은 기본 동작입니다.
처음부터 중복된 명령이 저장되는 것을 방지하는 다른 옵션(예: HIST_IGNORE_ALL_DUPS)을 사용할 수 있다는 것을 알고 있지만 이는 제가 원하는 동작이 아닙니다.
답변1
HIST_FIND_NO_DUPS
언제수색줄 편집기의 기록 항목에 대해 중복 항목이 연속되지 않더라도 이전에 찾은 줄의 중복 항목을 표시하지 않습니다.
나는 이것이 설계된 대로 작동하며 setopt HIST_FIND_NO_DUPS
위쪽 화살표를 누를 때 결과에 영향을 주어서는 안 된다고 생각합니다. 표시되는 검색 결과에 영향을 미치며 을 누릅니다 Ctrl-r
. 다음과 같은 기록이 있다고 가정합니다.
mvn clean package
mvn clean package
mvn clean package -DSkipTests
mvn clean package
이제 누르고 Ctrl-r
입력 하면 제안이 mvn
표시됩니다 mvn clean package
. 다시 누르면 Ctrl-r
가 나옵니다 mvn clean package -DSkipTests
. 에서는 중복이 허용되지 않으므로 세 번째를 눌러도 Ctrl-r
새로운 제안이 표시되지 않습니다 HIST_FIND_NO_DUPS
. 껍질이 없으면 다시 HIST_FIND_NO_DUPS
보여줄 것입니다 mvn clean package
.