이에 대한 구체적인 역사적 이유가 있습니까?
배경 — (이미 질문을 이해 한 경우이 부분을 건너 뛸 수 있습니다.)
중급 / 고급 vi
사용자에게 알 수 있듯이 y
"yank"명령은 다음 이동 명령으로 지정된 텍스트를 얀크 (복사)합니다. * 따라서 ye
단어의 끝으로 y0
ks, 커서 위치에서 줄의 시작으로 ks, y_
전체 현재 줄을 y$
잡아 당기고 커서 위치에서 현재 줄 끝까지 잡아 당깁니다.
d
(삭제) 명령 및 c
(변경) 명령이 두 운동의 모든뿐만 아니라 사용할 수 있습니다.
dd
d_
전체 줄 의 동의어이며 현재 줄 전체를 삭제합니다. 마찬가지로, 현재 줄 cc
의 동의어이며 현재 줄 c_
을 변경 합니다 (즉, 모든 텍스트를 삭제하고 줄의 시작 부분에 삽입 모드로 전환합니다). **
"yank"명령은이 규칙을 따릅니다. yy
처럼 전체 현재 줄을 잡아 당길 것 y_
입니다.
또 다른 동의어 집합이 있습니다. D
동의어이며 d$
커서 위치에서 줄 끝까지 삭제됩니다. C
은 동의어이며 c$
텍스트를 커서 위치에서 줄 끝으로 변경하여 삽입 모드로 전환하여 새 텍스트를 입력합니다.
그러나 Y
이며 또 다른 동의어 yy
나 y_
하고 꺼낼 것이다 전체 라인을 당신이 기대하는 것처럼 줄의 끝으로뿐만 아니라 커서에서, C
및 D
패턴.
Vim vi
의 Vim 도움말에서 언급했듯이 Vim에서는 다음 과 같이 이전 버전과의 호환성을 유지하기 위해이 방법을 유지했습니다 :help Y
.
"Y"가 커서에서 줄 끝까지 (보다 논리적이지만 Vi와 호환되지 않음) 작동하도록하려면 ": map Y y $"를 사용하십시오.
그래서 이것은에서 이월됩니다 vi
. 벌금.
그러나 왜 명령이 처음에 그렇게 설계 되었습니까? 거기에 어떤 논리가 있었습니까?
* 구체적으로 텍스트를 레지스터 0에 배치하고 이름이없는 레지스터를 레지스터 0을 가리 킵니다.
** 내 질문과 관련이 없지만 또는의 S
또 다른 동의어입니다 .cc
c_