bash에서 Home / End / PgUp / PgDn이 제대로 작동하도록 PuTTY를 구성하는 방법은 무엇입니까?


123

Home, End, PageUp, PageDown 키 ~는 커서 /보기를 이동하는 대신 내 bash 세션에서 a 를 입력합니다 . 왜 이런 일이 발생하며 어떤 설정을 변경해야합니까?

GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60

질문은 원래 읽었습니다.

PuTTY에서 쉘 (bash)에서 "Home"키를 누르면 왜 "~"가 입력됩니까? 또는 입력 한 명령의 시작 부분으로 커서를 어떻게 이동합니까?

(이유는 ~가 디렉토리이기 때문에 그 이유가 있다고 생각 했지만 대답은 그렇지 않습니다.)

답변:


150

연결> 데이터 탭 아래의 터미널 유형 문자열을 기본“xterm”에서“linux”로 변경하십시오. 그것은 나를 위해 일했다.

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


2
감사! 이 방법 ( superuser.com/a/103097/45410 )을 사용하여 Ctrl Left / Right 작동하도록 설정 한 후에이 문제가 발생했습니다 .
Edwin Yip

4
강조 : Terminal -> Keyboard"기능 키 및 키패드"가 아님 .
Elazar

2
작동하지만 마우스 지원 비활성화와 같은 다른 문제가 발생합니다. 그래서, 그것은 나를 위해 수용 가능한 해결책이 아닙니다
Anton

이 솔루션은 또한 OS X에 연결할 때 퍼티 내부의 움라우트를 가능하게합니다!
lorem monkey

42

PuTTY의 터미널 유형을 올바르게 설정하지 않았거나 서버에 올바른 terminfo 정의가 설치되어 있지 않기 때문입니다.

데비안 기반 시스템에서 ncurses-term 패키지 (버전 5.7 + 20081213-1)에는 putty , putty-256colorputty-vt100 터미널 유형에 대한 terminfo 정의 파일이 포함되어 있습니다. 이 패키지를 설치 한 경우 Putty의 세션 구성 (연결-> 데이터)에서 기본 "xterm"대신 "Terminal-type string"을 "putty"로 설정할 수 있습니다.

Stephen Irons는 또한 "linux"를 다른 터미널 유형으로 언급합니다. 나는 이것이 이전 경험으로는 맞다고 생각하지만 최근에는 테스트하지 않았습니다.

내 시스템에서는 PageUp / PageDown이 콘솔 창을 스크롤하지 않지만 Home 및 End가 올바르게 작동합니다. (그들은 aptitude 와 같은 ncurses 애플리케이션에서 올바르게 작동 하며 Shift-PgUp / Shift-PgDn은 콘솔 창을 스크롤합니다.)


예, 사용 TERM=putty또는 TERM=putty-256color불행하게도 그 순간에, 후자는 오른쪽 (0-7의 밝은 버전으로되어 있습니다) 색상 8-15 작동하지 않는 것하지만, 현명한입니다. 다른 "솔루션"은 때때로 관련된 터미널 사이의 차이를 무시하고 그들의 정당한 입장에서 찌그러 질 가능성이 높습니다.
SamB

yum install ncurses-term다음에 로그인 할 때 퍼티가있는 CentOS 7에서 나를 위해 정렬했습니다. 감사합니다.
방황 좀비

1
터미널 유형은 putty작동하지만 xterm과 같은 마우스 지원을 중단합니다 (예 : Midnight Commander)
Anton

'ncurses-term'을 설치하면 데비안 테스트에서 효과적이었습니다.
hochl

이 중 어느 것도 나를 위해 일하지 않으며, 나는 centos에 연결하는 퍼티를 사용하고 있으며 루트가 아니기 때문에 yum install ncurses-term을 실행할 수 없습니다.
Herman Toothrot

20

키 또는 키 조합을 누를 때 PuTTY가 터미널로 전송 한 코드를 확인하려면 a를 발행 한 Ctrl+V다음 원하는 키를 눌러야합니다.

예를 들어 내 상자에서 Home 키를 누르면 터미널에 다음 문자열이 생성됩니다.

^[[1~

이는 PuTTY가 이스케이프 문자 ^ [ 다음에 문자열 [1 ~)을 전송한다는 의미입니다 .

폴더에 ~/.inputrc파일을 만들 $HOME거나 /etc/inputrc시스템에 따라 파일을 만들 수 있습니다 . 그런 다음 PuTTY 코드와 Bash에 의해 트리거하려는 일치하는 Bash 조치로이 파일을 채우십시오.

참고 : 모든 ^ [ 문자를 동등한 \ e 문자열로 바꾸십시오.

이 예에서는 키 코드와 행 시작 동작 (기본적 Ctrl+A으로 Bash에 바인딩 됨 ) 이있는 행을 추가합니다 .

"\e[1~": beginning-of-line

참고로, inputrc 파일의 내용은 다음과 같습니다.

set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
"\e[1~": beginning-of-line     # Home key
"\e[4~": end-of-line           # End key
"\e[5~": beginning-of-history  # PageUp key
"\e[6~": end-of-history        # PageDown key
"\e[3~": delete-char           # Delete key
"\e[2~": quoted-insert         # Insert key
"\eOD": backward-word          # Ctrl + Left Arrow key
"\eOC": forward-word           # Ctrl + Right Arrow key

@Cimbali에서 : 이 참조 페이지에서 사용 가능한 더 많은 바인드 가능한 명령 (이전 히스토리 : 히스토리 목록을 통해`위로 이동 ') .


예 ! 드디어 ! 퍼티의 터미널 유형 문자열은 백 워드와 포워드에서 아무 작업도 수행하지 않았습니다. 대단해!
Cimbali

1
때문 만 허용 솔루션 TERM=linux또는 TERM=puttyxterm을 같은 마우스 지원을 중단. 감사!
Anton

14

Crtl + A는 당신을 선의 시작으로 안내합니다

Bash 키보드 단축키 목록은 다음과 같습니다.


13
훌륭합니다. 그러나 Home / End는 제 두뇌에 고정되어 있습니다. 파란 달에 한 번만 서버를 관리하기 때문에 하드 배선을 배울 가능성이 적습니다.
RomanSt

9

실제로 보내는 것은 ^[[1~다음으로 구성된 터미널 이스케이프 시퀀스입니다.

  • ^ [-탈출
  • [-왼쪽 대괄호
  • 1-하나
  • ~-물결표

Ctrl+를 V누른 다음 을 눌러 확인할 수 있습니다 Home.

Home 및 End 키에 대한 PuTTY 키보드 설정을 rxvt (이스케이프 시퀀스를 만들 ^[[H거나 사용중인 $ TERM을 변경 (또는 편집 ~/.inputrc)) 로 변경하여 문제를 해결할 수 있습니다 .

그런데 눌렀을 때 Home물결표와 홈 디렉토리를 나타내는 물결표 사이에는 아무런 관계가 없습니다 . 예를 들어, 내 설정에서 Page-Down생산 ^[[6~제대로 해석되지 않은 경우도 물결을 인쇄 할 것이다.


감사! rxvt는 Home 키를 수정했습니다. End 키는 이제 딩을 생성합니다. PgUp / Down은 실제로 type ~이며 PuTTY 키보드 설정은 작동하지 않습니다. 내 배쉬가 엉망입니까, 아니면 "정상"입니까?
RomanSt

입력 할 때 무엇을 얻 echo $TERM습니까?
Dennis Williamson

xterm(15 자 제한
argh

3
파일에 "\eOw": end-of-line대문자 O를 추가해 볼 수 있습니다 ~/.inputrc.
Dennis Williamson

엔드 키 고정; 나는 아이디어를 얻는다. 이 같은 해킹이 필요하지 않았 으면 좋겠다 ...
RomanSt

2

이러한 옵션 중 어느 것도 나를 위해 일하지 않았습니다. 오래된 AIX 시스템을 실행하고 있습니다. 내 프로필에 다음 별칭을 추가해야했습니다.

alias __A=$(print '\0020') # ^P = up = previous command
alias __B=$(print '\0016') # ^N = down = next command
alias __C=$(print '\0006') # ^F = right = forward a character
alias __D=$(print '\0002') # ^B = left = back a character

나를 위해 작동하지 않습니다, bummer
Herman Toothrot

1

다른 방법으로는 작동하지 못했습니다. 그러나 쉘이 Bash 인 한 작동하는이 AutoHotkey 스크립트를 만들었습니다.

#IfWinActive ahk_class PuTTY
PgUp::Send +{PgUp}
PgDn::Send +{PgDn}
Home::Send ^a   ; beginning of line
End::Send ^e    ; end of line
+^Del::Send ^k  ; delete whole line after cursor
+End::Send ^k   ; delete whole line after cursor
+Home::Send ^u  ; delete whole line before cursor
^Del::Send !d   ; delete word after cursor
^BS::Send ^w    ; delete word before cursor
^Left::Send !b  ; jump word left
^Right::Send !f ; jump word right
#IfWinActive

이 bash 핫키가 모두 다른 프로그램에서 작동하는 것은 아니므 로주의해서 사용하십시오 .


:이 찾고 있어요 주된 이유가이 것 엉망 screen, 그것은 .... 이스케이프 문자로 사용하기 때문에 기본 설정으로 Ctrl 키-A를 나누기
게르트 반 덴 베르그
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.