터미널에서 홈 키가 작동하지 않습니다


13

그놈 터미널 2.7.3 및 zsh 4.3.9 (x86_64-unknown-linux-gnu)를 사용하고 있습니다.

HomeEnd작동하지 않습니다. 아무 것도 일어나지 않고 아무 것도 누르지 않습니다. 그러나 shift + Home(쉘 출력의 시작으로 스크롤합니다.)을 누르면 다른 GUI 프로그램에서도 작동합니다. 나는 googled하고 다음을 시도했다. 변경 없음 :(

  885  bindkey "\e[1~" beginning-of-line
  886  bindkey "\e[H" beginning-of-line
  887  bindkey "\e1~" beginning-of-line
  888  bindkey "\eH" beginning-of-line
  889  bindkey "\e[0H" beginning-of-line

PS는 : 내가 마지막 탭에서 오전 누르면 Ctrl + pagedown내가 얻을 ;5~화면에 출력. 그게 실마리가 있습니까?


당신은 가지고 있습니까 .inputrc홈 디렉토리를? 새로 만든 사용자에게이 문제가 발생합니까? 항상 이런 일이 있었습니까 아니면 하루에 시작 되었습니까?
bahamat

아니요 .inputrc. 없습니다 . 새 사용자를 만들 권한이 없습니다. 항상 그런 식이었습니다. I'am은 함께 생활 ctrl +a하고 ctrl+e.
balki

1
나는이 경우 제안하지 않습니다 ctrl+a& ctrl+e;-)
bahamat

답변:


3

나는 지금 페도라에 있지만 Archlinux의 wiki를 주의 깊게 읽어 보길 권한다 . Home과 End 키가 작동하지 않는다 .

내가 고 쳤던 것 :

  1. Ctrl-V Home을 누르면 Home 키의 이스케이프 된 시퀀스가 ​​인쇄됩니다. 그것은 것입니다 하지 \e[4~ 하고 \e[1~내가보고 될 예정으로 /etc/inputrc. 그것은했다 [H[F

  2. 터미널 정보 추출 infocmp $TERM >terminfo.src

  3. 같은 편집이 파일을 열기 vim terminfo.src위한 모습, khome그리고 kend그것이 무엇인가에 할당,하자의 말 khome=\E[1~kend=\E[4~이 경우 작동하지된다. 를 제거하고 1 단계에서 발견 된 순서로 교체, 그래서 나를 위해, 그것이 편집 한 후 : khome=\E[Hkend=\E[F.

  4. 당신이 그것을 안전 확인 재생하려면 [F[H(또는 그냥 사용 어떤 순서) 다른 일이나 사물에 할당되지 않은 엉망이 될 것이다!

  5. 실행 디렉토리 tic terminfo.src를 만듭니다 ~/.terminfo.

  6. 의 위에 .zshrc기타 모든 명령 전에 넣어 :export TERMINFO=~/.terminfo

새 터미널 창을 열면 괜찮을 것입니다. 집과 끝은 지금 작동해야합니다.

추신 : bindkey 방법은 이론적으로 작동하고 더 쉬워야하지만 쉽지 않았습니다.


6

기능 및 커서 키로 전송 된 이스케이프 시퀀스는 이스케이프 문자와 인쇄 가능한 문자로 구성됩니다. 를 눌러 Ctrl+ V다음 Home. 이스케이프 시퀀스를 문자 그대로 삽입합니다. 그런 다음에 bindkey지침을 추가 하십시오 ~/.zshrc.

이 명령은 (주 될 가능성이있다 O, 없다 0)

bindkey '\e[OH' beginning-of-line
bindkey '\e[OF' end-of-line

Ctrl을 누른 다음 Home을 누르면 아무 것도 인쇄되지 않습니다. 아무 반응이 없습니다. 0에서 O로 변경을 시도했습니다.
balki

@balki Ctrl이 아닌 Ctrl + V입니다. 방금 답변에 서식 문제가 있음을 깨달았습니다.
Gilles 'SO- 악마 그만해'

감사! :) 지금은 익숙해 ctrl + actrl +e및 VI 모드
balki

5

나는을 치고 CTRL-v가자, Home또는 End키를 눌러 시퀀스 ^[[H^[[Ffor HomeEnd각각 가져와야한다는 것을 알았습니다 . .zshrc파일에 다음 줄을 추가하면 문제가 해결되었습니다.

bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line

2

이 줄을 추가 /etc/zshrc하고 다음을 수행하십시오 source /etc/zshrc( here )

bindkey '\e[1~'   beginning-of-line  # Linux console
bindkey '\e[H'    beginning-of-line  # xterm
bindkey '\eOH'    beginning-of-line  # gnome-terminal
bindkey '\e[2~'   overwrite-mode     # Linux console, xterm, gnome-terminal
bindkey '\e[3~'   delete-char        # Linux console, xterm, gnome-terminal
bindkey '\e[4~'   end-of-line        # Linux console
bindkey '\e[F'    end-of-line        # xterm
bindkey '\eOF'    end-of-line        # gnome-terminal

2

이 답변은 내 문제를 정말 잘 설명하고 수정했습니다.

/programming//a/686458/5472892

TL; DR : 기본에서 퍼티 터미널 유형을 변경 xterm하는 linux.

누군가가 그것을 사용할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.