이는 설명을 요청하거나 문서를 요청하는 것입니다.
저는 KornShell93( ksh
Mac OS X 또는 ksh93
다른 곳) 사용자입니다. 나는 대화형 셸로서의 상대적 단순성과 스크립팅 기능 때문에 이 셸을 좋아하며, 코드가 더욱 자유로워진 2000년부터 이 셸을 사용해 왔습니다. 및 옵션이 vi
설정된 편집 모드 에서 사용하고 있습니다 .vi
viraw
ksh93
명령줄에 명령 입력을 시작한 다음 키를 눌러 Up-arrow명령줄 기록에서 일치하는 최신 명령줄을 가져올 수 있는 깔끔한 기능이 있습니다 . 이에 대한 문서와 편집 모드에서 바인딩하는 방법을 찾을 수 있습니다 . 문제 없습니다 [count][A
.vi
그러나 Up-arrow빈 프롬프트를 누르면 가장 최근에 실행된 명령이 먼저 제공되고 이전에 찾고 있던 명령 접두어를 통해 반복이 시작됩니다. 이것은 나를 끝없이 괴롭힌다.
예:
다음 세 가지 명령을 실행합니다.
$ ls -l
$ ls -ld test
$ ls -ld testdir
입력 ls
한 다음 Up-arrow세 번 누르면 역순으로 순환됩니다.
나중에 더 많은 명령이 실행되었지만 기록 검색도 호출도 없었습니다 ls
.
$ cc -o testrun mytest.c
$ man strncmp
지금 한 번 누르면 Up-arrow가 표시됩니다 man strncmp
. Up-arrow다시 누르면 명령 대신 ls -ld testdir
이전 명령이 표시됩니다.ls -ld test
cc -o testrun mytest.c
Up-arrow이전에 사용한 접두사를 검색하지 않고 미리 명령줄에 아무 것도 입력하지 않고도 최근 기록을 반복할 수 있도록 이 문제를 "수정"하는 방법에 대한 지침을 찾고 있습니다 . 위의 동작이 문서화된 위치에 대한 포인터라도 좋을 것입니다.
편집하다:
설명서 ksh93
에 따르면
[count]k
이전 명령을 가져옵니다. 입력할 때 마다k
이전 명령에 액세스됩니다.
/string
포함된 이전 명령에 대해 기록에서 뒤로 검색합니다string
. 또는 에 의해String
종료되었습니다 . 앞에 가 있으면 일치하는 줄은 다음으로 시작해야 합니다. null인 경우 이전 항목이 사용됩니다.RETURN
NEW LINE
string
^
string
string
string
[count][A
커서가 줄의 끝에 있으면 현재 줄의 내용을/
설정하는 것과 같습니다.string
그렇지 않으면 와 동일합니다k
.
이것은 실제로아니요내가 왜 그런지 설명해주세요첫 번째man strncmp
(누르듯이 k) 가져오고그 다음에ls -ld testdir
위의 예를 입력하세요 . 설명서에 적힌 내용을 고려해 볼 때, 나는 ls -ld testdir
첫 번째 프레스를 선호했을 것입니다 Up-arrow(그런데 더 짜증날 것입니다).
답변1
이는 문서화된 동작으로 밝혀졌습니다. ksh93 매뉴얼 페이지에서:
편집 명령을 검색합니다. 이 명령은 명령 기록에 액세스합니다.
[count]k
이전 명령을 가져옵니다. k를 입력할 때마다 이전 명령에 액세스합니다.
[count]-
k와 동일합니다.
[count][A
커서가 줄의 끝에 있으면/
with 와 동일합니다.끈현재 줄의 내용으로 설정합니다. 그렇지 않으면 와 동일합니다k
.
[count]j
다음 명령을 받으세요. 다음 전달 명령은 각 입력j
에서 액세스됩니다 .
/
끈 포함된 이전 명령에 대해 기록에서 뒤로 검색끈. 끈새 줄로 종료됩니다RETURN' or
. 만약에끈앞에 가^
있고 일치하는 줄은 다음으로 시작해야 합니다.끈. 만약에끈null인 경우 이전 문자열이 사용됩니다.
참고: 문자열을 입력한 후 위쪽 화살표를 사용하면 검색 문자열이고정된이전에 입력 한 대로 줄의 시작 부분으로 이동합니다 ^
.
예:
$ ls[Up-Arrow]
동등하다
$ [ESC]/^ls