터미널을 사용할 때 홈 및 종료 키를 매핑 할 수 있습니까?


73

MacBook Pro 의 homeend키는 fn + 왼쪽 화살표 또는 fn + 오른쪽 화살표로 에뮬레이션 할 수 있습니다. 또는 fn 대신 Command (Apple) 키를 사용하여 특정 설정을 변경 한 경우.

이 중 어느 것도 터미널에서 작동하지 않습니다.

나는 종종 줄의 시작이나 끝으로 가야하고 단어로 앞뒤로 점프하고 싶습니다.

터미널에서 줄을 어떻게 뛰어 넘을 수 있습니까?

답변:


64

사용 control+를 a가정하고 control+ e터미널 END 위해.

또한 esc+ f를 사용 하여 다음 단어 의 시작으로 이동 하고 esc+ b를 사용하여 현재 단어 의 시작으로 이동하십시오 . (현재와 다음에주의해야합니다)


2
완전한! 단어별로 뛰어 다니는 것은 어떻습니까? (Windows에서 Ctrl- 왼쪽 및 Ctrl- 오른쪽)
at01

@ at01 내 답변을 업데이트했습니다.
Am1rr3zA

40
누가 터미널의 열쇠를 디자인 했습니까?!?!
at01

4
단어의 시작 부분으로 이동하려면 Option + 왼쪽 화살표와 Option + 오른쪽 화살표를 사용하는 것이
좋습니다

2
Ctrl + a와 Ctrl + e는 나를 위해 일했지만 많은 사람들이 제안한 것처럼 키 입력을 다시 매핑하지 않고 @AlphaFighter의 Shift + Home 및 Shift + End의 대안을 선호합니다 (Shift + Fn + 왼쪽 화살표 및 Shift + Fn MacBook Pro 키보드의 + 오른쪽 화살표)를 사용하여 줄의 시작과 끝을 표시하십시오.
존 릭스

67

줄의 시작 또는 끝을 얻는 방법에 대한 답변을 얻기 위해 기본적으로 터미널은 다음 키를 매핑합니다.

  • shift + home → 줄 시작, 일반 터미널의 "home"키와 동일
  • shift + end → 라인 끝, 일반 터미널의 "end"키와 동일

집과 끝이 "정상적인"방식으로 일하기를 원하고 (교대 필요 없음) [터미널 메뉴] → 기본 설정 → 프로파일 탭 (또는 일부 OS X 버전의 설정) → 키보드 하위 탭으로 이동하십시오.

그런 다음이 키를 다음 "문자열을 쉘로 보내기"로 수정 / 추가하십시오.

  • 집: \033[H
  • 종료: \033[F

당신이 얻을 수있는 \033당신이 그것을 추가해야하는 경우, 편집 대화 입력 내에서 Esc 키를 쳐서 부분.

그런 다음 집과 끝은 다시 정상처럼 작동합니다.

또한 터미널에서 "alt + ←"및 "alt + →"는 기본적으로 왼쪽에있는 단어와 오른쪽에있는 또 다른 편리한 콤보로 매핑됩니다.

이후 버전의 Mac OS X에서 홈 / 종료 키를 누를 때 터미널 화면이 위 또는 아래로 이동 하면 원하는 결과를 얻기 위해 홈 키를 설정 \033[1~하고 종료 키를 설정해야 할 수 있습니다 \033[4~(시프트 필요 없음) .

커뮤니티 위키이므로 유용한 답변을 수정하려면이 답변을 자유롭게 수정하십시오.


5
\ 033 [H와 \ 033 [F는 집과 끝을 위해 작동하지 않았다; 그러나 001과 005는 그랬다. ctrl-A 및 ctrl-E를 눌러 편집 대화 상자에서이 코드를 입력 할 수 있습니다. zsh를 사용하고 있는데 이것이 차이가 있는지 확실하지 않습니다.
JW.

shift + home / end가 일을했다
isaias-b

1
잠시 동안 이것을 알아 내려고 노력하여 나를 구했습니다!
Paul Grey

실제 터미널 응용 프로그램에 로컬로있을 때 유용합니다. 그러나 macOS 시스템에 ssh되면 더 이상 작동하지 않는 것 같습니다. 이 문제를 해결하는 방법?!
Ahi Tuna

2
@AhiTuna SSH는 터미널 에뮬레이터에 대한 연결이 아니라 터미널 세션에 대한 연결입니다. 입력 옵션은 항상 사용중인 터미널 에뮬레이터에 의해 정의됩니다.
Bachsau

39

readline과 bash를 사용하여 도움을 찾고있는 것 같습니다 .

Ctrla 줄의 시작 부분으로 이동하십시오.
Ctrle 줄의 끝으로 이동하십시오.
Escf 단어를 앞으로 이동하십시오.
Escb 한 단어 뒤로 이동하십시오.
Ctrll 화면을 지우고 맨 위에 현재 줄을 다시 인쇄하십시오.

Ctrlk 현재 커서 위치에서 줄 끝까지 텍스트를 종료하십시오.
Escd 커서에서 현재 단어의 끝까지 또는 단어 사이에있는 경우 다음 단어의 끝까지 죽입니다.
EscDel 커서에서 이전 단어의 시작 또는 단어 사이에있는 경우 이전 단어의 시작으로 죽입니다.
Ctrlw 커서에서 이전 공백으로 죽입니다. EscDelCtrla 단어 경계가 다르기 때문에 이것은 다릅니다.

Ctrld 커서 아래의 문자를 삭제하십시오.
Ctrl_ 마지막으로 작업을 취소하십시오. 빈 줄로 되돌릴 수 있습니다.

그리고 여기에 텍스트를 다시 줄에 넣는 방법이 있습니다. Yanking은 가장 최근에 살해 된 텍스트를 킬 버퍼에서 복사하는 것을 의미합니다.

Ctrly 가장 최근에 죽인 텍스트를 커서의 버퍼로 다시 가져옵니다.
Escy 킬링을 돌리고 새로운 상단을 잡아 당깁니다. 이전 명령이 Ctrly또는 인 경우에만이 작업을 수행 할 수 있습니다 Escy.


이것은 매우 귀중합니다-감사합니다-이 파일이 어딘가에 인쇄 가능한 파일로 제공되기를 바랍니다!
matt b

나는 그것이 "최적화"된 것이 아니라는 것을 알고있다. 파일-> 인쇄?
Jason Salaz 2016 년

와우, 이것들은 리눅스의 용어에 비해 매우 어색합니다.
btk

Bash 맨 페이지를 사용해보십시오. (나는 그것을 스스로하는 방법을 모른다.)
SilverWolf

6

화살표 키를 선호하는 사람들은 fnShift+ Left Arrow를 누르면 명령 행으로 이동합니다. 마찬가지로 fnShift+ Right Arrow는 끝까지 당신을 데려 갈 것입니다.


5

option+ leftoption+ 를 사용하여 한 번에 한 단어 씩 이동할 수 있습니다 right.

home및의 사용 과 관련하여 end터미널의 기본 바인딩은 다음과 같습니다.

  • shift+ home→ 줄의 시작으로 이동
  • shift+ end→ 줄 끝으로 이동
  • home → 스크롤 백 버퍼의 맨 위로 스크롤
  • end → 스크롤 백 버퍼의 맨 아래로 스크롤

많은 다른 터미널 응용 프로그램 (여러 플랫폼에서)에서 수정 및 수정되지 않은 쌍은 반전됩니다 (즉, 알몸 home이며 end현재 줄을 뛰어 넘기 위해 사용되며 수정 된 버전 ( shift또는 다른 것에 의해) 또는 스크롤 백 버퍼를 탐색하는 데 사용됨) ). 다음을 수행하여 원하는 방식으로 터미널의 바인딩을 반대로 작동시킬 수 있습니다.

터미널 메뉴 → 기본 설정 → 설정 / 프로필 탭 → 키보드 하위 탭으로 이동하십시오.

그런 다음 키 동작 쌍을 다음과 같이 수정하십시오.

  • ↖︎ : 문자 보내기 : \ 033 [H
  • ⇧↖︎ : 맨 위로 스크롤
  • ↘︎ : 문자 보내기 : \ 033 [F
  • ⇧↘︎ : 아래로 스크롤

참고 : 이스케이프 키를 누르면 \ 033이 편집 대화 상자에서 보낼 텍스트 상자에 입력됩니다.

이 동안, 당신은 유사의 바인딩을 교환 할 수 있습니다 수정 및 수정되지 않은 page uppage down일관된 일을 계속 : 네비게이션 키를 눌러과 shift터미널 자체 (문서 같은 스크롤 백 버퍼를 탐색합니다)에 명령을 나타냅니다 하나를 누른 상태에서하지 않고 실행중인 어떤을 통해 키를 눌러 전송 내에서 (예를 들어 그 bash, less, nano, screen, 등). 이를위한 키-액션 쌍은 다음과 같습니다.

  • ⇞ : 문자 보내기 : \ 033 [5 ~
  • Page : 페이지 위로 스크롤
  • ⇟ : 문자 보내기 : \ 033 [6 ~
  • Page : 아래로 스크롤


3

원하는 기능으로 매핑 homeend키를 사용하면 문제를 쉽게 해결할 수 있습니다.

많은 답변이 게시되었지만을 사용하는 경우 다음과 같이 zsh설정할 home수 있습니다.

\001

다음으로 설정 end하십시오.

\005

환경 설정-프로필-키보드 를 클릭하여 .


나뿐만 아니라이 시도했지만 그것은 정력에 홈과 끝을 나누기 :( 당신은 알프레도 Cardigliano이 어떤 제안에 매핑 할 수 있습니다 : 키 : ↖ 작업 : \ 033OH 키 : ↗ 작업 : \ 033OF
curlingdude

이것은 나를 위해 완벽하게 작동했습니다! 나는 나노 만 사용하므로 여기에는 문제가 없습니다.
스털링 본

1

이것이 vim에서도 작동하게하는 가장 효과적인 방법입니다. 터미널-> 환경 설정-> 프로파일-> 키보드로 이동하여 다음을 추가하십시오.

키 : ↖ 동작 : \ 033OH

키 : ↗ 동작 : \ 033OF


1

이 문제에 대한 대안 솔루션을 제공하고 싶습니다. vi 사용자 인 경우 유용합니다. 터미널의 Vim 키 바인딩은 터미널을 vim 스타일로 사용하는 방법을 제공합니다. set -o vi터미널에 입력 하여이 작업을 수행 할 수 있으며 .bash_profile원하는 경우 자유롭게 입력하십시오 . 그 후, 터미널은 사실상 vim 편집기입니다. esc키를 사용 하여 명령 모드로 들어가서 vim 방식으로 걸어 다닐 수 있습니다. 예를 들어, 0당신은 처음에 $도착하고 당신을 끝까지 가져옵니다. 당신은 또한 사용할 수 있습니다 IA시작과 끝으로 이동하고 바로 편집 모드로 이동합니다. w그리고 b당신이 한 단어에 의해 앞뒤로 이동할 수 있습니다. 를 눌러 시각 모드로 들어 가려고하면v, vim 편집기가 제공되며이 편집기에서 나가면 텍스트가 터미널에서 실행됩니다.

이 vim 키 바인딩은 다른 답변에서 배운 모든 핫키를 무효화합니다.


0

다음은 원하는대로 인쇄 가능한 형식의 목록입니다 :)

http://pastebin.com/uCqwn7qs

또한 설명에서 "버그"를 수정했습니다. 다음은 원래 지침에서 읽을 수있는 내용입니다.

ESC-d 커서에서 이전 단어의 시작 또는 단어 사이에있는 경우 이전 단어의 시작으로 죽입니다.

두 부분 문장 모두 똑같은 것을 나타 내기 때문에 잘라 내기 및 붙여 넣기 실수와 같은 냄새가납니다. 일반 논리에서 말하면 전반부는 실제로 "커서에서 현재 단어의 시작까지"를 읽어야합니다.


0

... 말로 뛰어 다니는 것은 어떻습니까? (Windows에서는 ctrl-left 및 ctrl-right)

# in ~/.inputrc
"\033[5C": forward-word
"\033[5D": backward-word
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.