내에서 활성화 하여 zsh에서 수정 ( 이 문제로 인해 자동 수정이라고 특별히 말하지 는 않음 )을 활성화 setopt correct
했습니다 .zshrc
.
이제 dtae
터미널에 입력 하면 다음과 같은 결과가 나타납니다.
dtae
zsh: correct 'dtae' to 'date' [nyae]? y
Tue Mar 31 11:39:31 CEST 2015
이 시점에서 zsh가 내 결정을 기억하고 싶습니다. 다음에 입력 dtae
할 때는 자동으로 date
[1]로 수정해야합니다 . 그러나 이것은 일어나지 않으며 zsh는 다시 수행해야 할 작업을 묻습니다.
dtae
zsh: correct 'dtae' to 'date' [nyae]?
[1] 물론, 실제 dtae
명령이나 별칭 이 존재하지 않는 한 .
최신 정보:
zsh의 "올바른"기능을 호출하여 자동으로 작성된 별명을 포함하는 사용자 정의 파일을 작성 하도록 zsh 소스 코드 (file utils.c
, function spckword
)를 수정했습니다.
기발한:
if (x == 'y' || x == ' ' || x == '\t')
{
*s = dupstring(best);
if (hist)
hwrep(best);
}
수정 :
if (x == 'y' || x == ' ' || x == '\t')
{
char *aliaspath = getenv("HOME");
strcat(aliaspath, "/.zsh_correct_aliases");
FILE *out = fopen(aliaspath, "ab+");
fprintf(out, "alias %s=\'", *s);
*s = dupstring(best);
fprintf(out, "%s\'\n", *s);
fclose(out);
if (hist)
hwrep(best);
}
를 실행 dtae
하면 다음 줄이 파일에 추가됩니다 ~/.zsh_correct_aliases
.
alias dtae='date'
그러나 새로 수정 된 ~/.zsh_correct_aliases
파일을 적절하게 소싱하는 방법을 모르겠습니다 .
@ StéphaneChazelas 1) 하나의 파일로 저장하는 것이 가장 좋습니다. 2) 그것은 플러스 일 것이지만 반드시 필요한 것은 아닙니다. 3)
—
shrx
dtae
존재할 때까지 제거 된 후 dtae
더 이상 정의되지 않은 경우 복원됩니다 .
command_not_found_handler
런타임 대신 구문 분석 시간 과 같이 전용 zsh 후크 함수를 호출 한 다음 zsh 코드에서 논리를 구현하는 것이 더 합리적 입니다.
나는 이것이 좋은 습관이라고 생각하지 않습니다 ... 나는 올바르게 입력하는 방법을 배우는 것이 훨씬 효율적이라고 생각합니다.
—
Peschke
나는이 특정 용도에 대해 적어도 궁금합니다. 코드가 .zshrc의 끝에 별칭을 추가하거나 어쨌든 .zsh_correct_aliases를 .zshrc에 넣는 것처럼 어떻습니까? 보안을 위해 필요에 따라 더 나은 어떤 해시, 무명 / 변수와 그 Obscursing, 또는
—
atchmi 올라프
dtae
스폰이 발생하거나 일시적으로 비활성화 된 경우 기억 된 수정 사항을 제거 하시겠습니까?