vim이 커서 키에 hjkl을 사용하는 이유는 무엇입니까?


56

비디오 게임에서 움직일 때 hjkl와 같이 삼각형의 키 대신 같은 줄 의 키 를 사용하는 이유는 무엇 wasd입니까?

왜, 오른손으로 동등한 같은 ijklpl;'?


3
vi의 Wikipedia 페이지를 확인하십시오 . 키 바인딩을 설명하는 고대 유닉스 머신 키보드 의 그림이 들어 있습니다 .
Christian Brabandt

3
vim기술 진보를 따라 잡지 않기 때문에 : 3
Alexander

3
한 손의 네 손가락을 hjkl 키에 편안하게 놓고 손가락을 앞뒤로 움직이지 않고 커서를 네 방향으로 모두 이동할 수 있습니다. 실제로 생각해 보면 인체 해부학과 일치하는 유일한 커서 키 레이아웃이 4 행입니다. 문제는 실제로 다른 사람들이 어떻게 잘못을 저지르는 지 관리하는 것입니다.

4
실제로 색인을 색인에 넣는 것이 h아니라 색인에 넣는 것이 좋습니다 j( j키 에 "니플"이있는 이유 ). 그 이유는 당신이 b훨씬 더 많이 사용 h하고 ;접근하기가 많은 프로그래밍 언어에서 편리하기 때문입니다 (그리고 시프트를 사용하면 :Vim에서 훨씬 편리합니다).
nobe4

2
BTW,이 주제는 유닉스 SE
Dmitry Grigoryev

답변:


75

에서 http://www.catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys/ :

Bill Joy가 vi 텍스트 편집기를 만들었을 때 hjkl 키에 화살표가있는 ADM-3A 터미널을 사용했습니다. 당연히 그는 같은 열쇠를 재사용했고 나머지는 역사입니다!

여기에 이미지 설명을 입력하십시오


27
이것은 여전히 ​​모든 키보드에 있어야합니다! :)
albttx

16
이제 당신은 이맥스를 만든 사람이 어떤 종류의 터미널을 가지고 있는지 궁금합니다.
leeand00

11
@ leeand00 : Symbolics LISP 기계 공간 생도 키보드 . 이 기사는 키보드 디자인이 Emacs 디자인에 어떤 영향을 미치는지에 대해 명시 적으로 설명하고, 유비쿼터스 Escape 키를 사용하여 Vi 디자인과 비교하고, Escape가 ADM-3A 터미널 키보드에 매우 편리하게 위치한다는 사실 . Space Cadet Keyboard에는 매우 편리하게 위치한 Control, Meta, Super 및 Hyper 키가 있으며 8000 자 이상의 문자를 입력 할 수있는 3 개의 다른 Shift 키가 있습니다.
Jörg W Mittag

11
이 답변은 같은 정확하지만, 일종의 그것을 대답보다는 질문을 이동 : "왜 ADM-3A 키보드 선택 했 hjkl같은 더 논리적 모양을하고 있지 ijkl?"
Martin Tournoij

2
@Carpetsmoker : 80 년대 후반까지 키보드 화살표 위치 논리를 발명하지 않았습니다. upload.wikimedia.org/wikipedia/commons/3/30/…
Jacob Krall

21

Nobe4의 답변 은 훌륭하며 왜 우리가 hjkl잘 사용하는지 설명합니다 . 그러나 전체 키보드를 보는 것이 정말 흥미 롭습니다. vim에 관한 많은 이상한 것들이 키보드가 설계된 전체 키보드를 볼 때 더 의미가 있습니다. 예를 들어, 왜 그렇게 esc이상하고 불편한 장소에있을 때 vi가 열쇠에 크게 의존 하는가? 이는 이유:

여기에 이미지 설명을 입력하십시오

보시다시피, esc탭은 대부분의 키보드에 있습니다. ctrl키가 약간 어색하지만이 키보드의 매우 편안한 위치 (일반적으로 캡 잠금 장치가있는 위치)에있는 다른 키입니다.


나요 vi<Leader>매핑을? 나는 그것이 나중에 발명되었다고 생각했다.
Martin Tournoij

@ Carpetsmoker 그렇게 생각하지만 실제로는 확실하지 않습니다. Vim 's :help <leader>에는 서명 {not in Vi}텍스트 가 없으며 vi에는 :map(그렇지 않지만 :noremap) 있다고 표시 되어 있으므로 vi에 리더가 있다고 확신합니다. 그렇지 않은 경우에도 vi 키보드의 역사가 vim의 디자인 에 적어도 어느 정도 영향을 미칠 것이라고 생각합니다 .
DJMcMayhem

대부분의 결과가 vim에 관한 결과이기 때문에 Google을 통해 vi에 대한 정보를 찾기가 어렵습니다.
DJMcMayhem

@DJMcMayhem pubs.opengroup.org/onlinepubs/009696699/utilities/vi.htmlroguelife.org/~fujita/COOKIES/HISTORY/1BSD/exrefm.pdf 는 vi에 대한 좋은 참고 자료입니다 (각각 POSIX 및 역사적). 또한 nvi, elvis, vile 또는 ex-vi (ex-vi는 역사적 vi의 후손 임)를 다운로드하여 해당 기능 또는 설명서를 볼 수 있습니다. <leader>vi 에는 기능 이 없습니다 .
Random832

또한 Vim은 원래 Amiga (일반적인 [ISO 또는 Large Enter] 위치의 백 슬래시) 용으로 개발되었으며 Atari ST (Steel 오른쪽)의 백 슬래시 (오른쪽 하단 모서리의 백 슬래시)를 기반으로했지만 분명히 그렇지는 않았습니다. :map전혀 지원 )
Random832

17

이 화살표들이이 키들에 인쇄 된 이유는 로컬 커서 이동을 위해 제어 키와 함께 사용될 수 있기 때문입니다. Ctrl-H 및 Ctrl-J (백 스페이스 및 줄 바꿈)는 명백하며 오늘날에도 쉽게 기억할 수 있습니다. Ctrl-K는 "수직 탭"이지만 ANSI 이전의 터미널에서 역행 이송에 사용되기도합니다. 비파괴 커서 전달에 Ctrl-L을 사용하는 것은 아마도 키보드 위치에 따라 선택되었을 것입니다.

키보드 그림에서 다른 답변의 "HOME"이 ^/ ~키에 있음을 알 수도 있습니다. 물론 Ctrl- ^는 커서를 이동시킵니다 (모드에 따라 화면의 왼쪽 상단 또는 왼쪽 하단으로 전송).

이 제어 맵핑은 Wmit 터미널, Kermit 프로토콜에도 사용되었으며 일부 버전의 PC ANSI.SYS에서 지원되었습니다.

출처 :


^ H, ^ K – 오늘부터 ^ J가 아래로 내려 갔다는 것을 쉽게 기억할 것입니다. 업다운 할당을 확실하게 기억할 수 없었습니다.
miroxlav
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.