이에 대한 구체적인 역사적 이유가 있습니까?
배경 — (이미 질문을 이해 한 경우이 부분을 건너 뛸 수 있습니다.)
중급 / 고급 vi사용자에게 알 수 있듯이 y"yank"명령은 다음 이동 명령으로 지정된 텍스트를 얀크 (복사)합니다. * 따라서 ye단어의 끝으로 y0ks, 커서 위치에서 줄의 시작으로 ks, y_전체 현재 줄을 y$잡아 당기고 커서 위치에서 현재 줄 끝까지 잡아 당깁니다.
d(삭제) 명령 및 c(변경) 명령이 두 운동의 모든뿐만 아니라 사용할 수 있습니다.
ddd_전체 줄 의 동의어이며 현재 줄 전체를 삭제합니다. 마찬가지로, 현재 줄 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또 다른 동의어입니다 .ccc_