Ctrl + 왼쪽 / 오른쪽 화살표 키 문제


25

마지막 시스템 업데이트 후 ctrl + 왼쪽 / 오른쪽 화살표 zsh 터미널 명령 은 아무 작업도 수행하지 않습니다. 또한 Ctrl + u는 일반적으로 명령이 커서에서 줄의 시작 부분까지 지우고 전체 줄을 지 웁니다. 누군가가 이러한 문제를 해결하는 방법을 알고 있습니까? 모두 감사합니다.


수용 가능한 답변이 있습니까? 나는 Goncalo의 대답이 훌륭하다고 생각합니다.
Léo Léopold Hertz 준영

답변:


44

FWIW, 이것은 zsh의 기본값을 사용하여 내 환경 (rhel5.x)에서 작동했습니다.

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word

5
^[^[[D그리고 ^[^[[C, 각각 OSX를위한
존 z를

1
Goncalo의 제안은 Debian 8.5에서도 작동합니다. 이 코드가 .zshrc기본적으로 내장되어 있지 않은 이유가 궁금 합니다.
Léo Léopold Hertz 준영

Ubuntu Artful의 매력처럼 작동합니다. 감사합니다!
Konrad Garus

누군가가 $terminfo이스케이프 시퀀스 대신에 사용하고 싶을 때 : 열쇠 $terminfo[kLFT5]$terminfo[kRIT5]나를 위해 일했다
Griddo

14

Ctrl + U는 줄 끝에 커서가 있기 때문에 가장 가능성이 높습니다. 둘째, 어떤 최신 버전의 젠투를 "마지막 시스템 업데이트"라고합니까?

그리고 Ctrl + 왼쪽 / 오른쪽으로 무엇을 원하십니까?

  • zsh 구성에 추가하십시오.

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

  • 그리고 내가 찾은 오래된 스크랩에서 (도움이 될 수 있음) :

bindkey ";5C" forward-word
bindkey ";5D" backward-word

  • 또는 링크를 보시면 도움이 될 것입니까?

참고 : 구성이 작동하지만 가정 된 키가 원하는 것을 수행하지 않는 경우 아마도 키 정의가 귀하와 내 것과 다를 수 있기 때문에 아마도 다음을 수행하십시오. cat > /dev/null 출력하려는 ​​키를 누르고 그에 따라 조정하십시오.


1
"Ctrl + U는 줄 끝에 커서가 있기 때문일 것입니다."물론 커서가 가운데에있을 때를 의미합니다. "Ctrl + 왼쪽 / 오른쪽을 어떻게 수행 하시겠습니까?" 일반적으로 Ctrl + 왼쪽 화살표 : 왼쪽으로가는 단어 건너 뛰기 ...
riskio

그리고 어떤 쉘 / 터미널을 사용하고 있습니까? Emacs 또는 일반적으로 사용하는 터미널과 / bin / bash를 사용 하시겠습니까? 당신은 화면을 통해 실행합니까?
Torxed December

1
질문이 있습니다 ..
riskio

1
@Masi 확실하지 않다. 나는 그에게 2 년 전에 대답했고 우리의 대답은 거의 동일하다. 나는 단지 그것을하는 두 가지 다른 방법을 보여줬다.
Torxed

1
@Masi 내가 아는 것은 그 당시 (2010-2012 년을 기억하십시오. 오래 전)이 두 가지 (그리고 그 조합)는 많은 다른 시스템에서 저에게 효과적이었습니다. 나는 유닉스와 리눅스에 있었고 롤링 릴리즈 OS 인 젠투에 있었다. 그리고 여전히 많은 사례에서 이것의 흔적이 남아 있습니다. 저장소 와 같은 . 자, 다시 말하지만, 나는 왜 그런지 확실하지 않지만 적어도 두 대의 컴퓨터에서 작동했기 때문에 공유 할 것이라고 생각했습니다. 그리고 그의 오늘이 더 명확하다는 것을 확신합니다. 나는 그가 모든 투표를받는 것을 신경 쓰지 않습니다. 이것은 레거시 게시물입니다.
Torxed

5

작동하는 것은 배포판 (Gentoo, Debian, RHEL 등) 또는 쉘 (ZSH, KSH, BASH)에 직접적으로 의존 하지 않습니다 - terminal emulator사용되는 설정과 그 설정 에 따라 다릅니다 : konsole, terminator, urxvt, lx-terminal 다른 표준 쉘 구성 (fx. .zshrc)을 사용하고 해당 배포판의 쉘 구성을 가진 다른 쉘을 사용하는 경우 이미 배포판을 처리 할 수 ​​있습니다.

다음은 터미널 에뮬레이터 별 솔루션입니다.

urxvt / rxvt-unicode (및 기타) :

bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word

터미네이터, 곤솔 및 xterm (및 기타) :

bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word

보다 일반적인 방법으로 터미널을 시작하려면 CTRL-V를 누른 다음 이스케이프 코드를 원하는 키 조합 (이름)을 누릅니다.이 경우 키 조합은 CTRL- 왼쪽 화살표와 CTRL- 오른쪽 화살표입니다. 두 따옴표 사이의 키 조합.


1
CTRL-V 제안을 시도 했습니까? 터미널에서 키 입력을 다르게 해석 할 수 있으므로 키를 다른 "기호"에 바인딩해야합니까?
miyalys

1
답변을 업데이트했습니다. terminal emulator사용되는 방법에 따라 여러 가지 솔루션이 있습니다 . 배포판이나 쉘은 중요하지 않습니다. 한 터미널 에뮬레이터에서 작동하는 것이 다른 터미널 에뮬레이터에서 작동하지 않기 때문에 아마도 .zshrc에없는 이유 일 것입니다. 그러나 아마도 zshrc fx이면 해결할 수 있습니다. $ TERM 환경 변수를 읽고 결과에 따라 다른 바인드 키 설정을 적용하십시오.
miyalys

2

해결되었습니다.

사용 된 터미널 : Konsole .

해결 : 터미널 (또는 메뉴 표시 줄의 설정) 을 마우스 오른쪽 버튼으로 클릭 -> 현재 프로파일 변경-> 키보드 매핑-> 기본값으로 변경 (xfree4)


실제로 zsh와 관련이 없지만 확실하게 수정은 수정입니다.
Torxed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.