터미널 I에서 소문자 e를 입력 할 수 없습니다


14

터미널 창을 열고 따옴표없이 문자 "e"를 입력하면 경고음이 울리고 문자를 입력하지 않습니다. 다른 모든 편지는 터미널에서 잘 작동합니다. 대문자 E도 작동합니다. 소문자 e 만 그렇지 않습니다.

내 컴퓨터의 다른 모든 응용 프로그램에서 소문자 e는 문제없이 작동하므로 키보드 문제가 아닙니다.

이것은 지난 주에 시작되었습니다. 나는 직장에서 터미널을 많이 사용하며 이것이 결코 문제가되지 않았습니다. 다시 부팅했습니다 (수정하지 않았습니다). 터미널을 재설정했습니다 (수정하지 않았습니다).

이것이 시작된 정확한 날짜를 모르기 때문에 소프트웨어를 변경하거나 설치했는지 확실하지 않습니다. 최근에 설치 한 것을 제거하려고합니다.

참고로 타사 iTerm2를 사용하려고 시도했지만 동일한 작업을 수행합니다.

또한-e가 낮은 것을 붙여 넣으면 똑같은 일을합니다-가져 가지 않습니다. 내가 생각할 터미널 bash 구성 문제 일 것입니다.

실제로 다음과 같은 의미를 복사 한 다음 터미널에 붙여 넣었습니다. 무엇이 나타 납니까? sns 와 두 번의 경고음이 들립니다.

또한 확실하지 않은 경우-MBP의 내장 키보드 및 외부 키보드에서 발생합니다. 이 문제와 붙여 넣기 문제를 바탕으로 이것이 실제 키보드 문제라고 생각하지 않습니다.

사양 : 2015 MacBook Pro, 최신 OS X


1
csh 또는 tcsh와 같은 다른 쉘로 이동해도 동작이 지속됩니까?
Kent

2
이상하다 ... applescript스포트라이트로 검색하여 열어 보고 입력 한 delay 10다음 return 키를 누르고 tell application "System Events" to keystroke "e"정확히 쓴대로 쓴다. 재생을 누르면 10 초간 기다린 다음 e를 누릅니다. 해당 시간이 만료되기 전에 터미널로 이동하여 테스트하십시오. 그래도 작동하지 않으면 컴퓨터에 심각한 내부 문제가있는 것보다 그렇습니다.
ALX

1
cat filnam.txt파일에 filnam.txtASCII 텍스트가 포함 된 파일이 있으면 어떻게됩니까 e?
techraf


이것은 쉘이나 터미널에서 실행중인 모든 프로그램에만 있습니까?
agentroadkill

답변:


7

그것을 디버깅합시다.

  1. 껍질을 바꾸고 다시 시도하십시오. 터미널에서 :
    • $(which zsh)
  2. 모든 행 주석 .bash_profile, .bashrc등 새로운 터미널 탭 / 창을 엽니 다. 이것이 문제를 해결하면, 쉘 환경으로로드되는 무언가가 e과학이 설명 할 수없는 이유로 편지 를 소비하고 있습니다.
  3. cat문자가 포함 된 파일을 사용해 e보아도 표시되는지 확인하십시오 : (Credit to @techraf)
    • 터미널이 아닌 텍스트 편집기를 엽니 다
    • es로 텍스트를 입력 하고 파일 ( foo.txt?)을 저장하십시오.
    • 터미널 cat에서 파일 :
      • cd /path/to/folder; cat foo.txt
    • 경우 e의 다음 터미널이 처리 할 수 렌더링, 그렇지 않은 경우,이 슈퍼 이상한입니다.
  4. applescript를 사용해보십시오. (@ALX에 기여)

    • 애플 스크립트 편집기 열기
    • 다음 내용으로 Applescript 파일을 작성하십시오.

      delay 10
      tell application "System Events" to keystroke "e"
    • 스크립트 파일을 실행 한 후 터미널 창으로 빠르게 이동하십시오. 몇 초 안에 실제로 e키를 누르면 터미널에 표시됩니다. 이것은 입력 / 장치 드라이버 문제가있을 수 있음을 나타냅니다 (그러나 그것이 무엇인지 알 수는 없지만)

나는 거짓말을하지 않을 것이다. 나는이 문제에 완전히 매료되어 있으며 그 원인이 무엇인지 배우기를 기다릴 수 없다. 다른 응용 프로그램에서 작동하기 때문에 하드웨어가 아닙니다. 즉, 소프트웨어이므로 누가 문자 e를 코드로 삼킬 지 상상할 수 없습니다 .


1
C 쉘 (예 : tcsh)은 bash 시작 파일을 읽거나 해석 할 수 없습니다. 예를 들어 perl에서 python을 입력하고 거기에 입력하십시오
user151019

1
네, 실제로이 문제에 매혹되었습니다
Manchineel

"누가 문자 e를 코드로 삼킬 지 상상할 수 없다"이 남자는 무언가를 알고 있을지도 모른다 ... upload.wikimedia.org/wikipedia/en/5/5e/Cisforcookie.jpg
Allan

4

방금 동일한 문제가 발생한 후이 스레드를 발견했습니다.

.inputrc

나는 2 선했다 .inputrc, 부주의 무지의 순간에 추가를 시작으로 e하고s (유효 bash는 설정,하지만 유효의 readline 설정되는). readline 사용자 정의를위한 키 바인딩 별명으로 해석 된 것으로 보입니다.

에서 줄을 제거하고 .inputrc확인하여 문제를 해결했습니다.

관련 알림에 대한 user208052 @ 덕분에 확인합니다 .inputrc.

쉘의 Readline 설정

bind명령을 사용하면 Readline 구성을보고 수정할 수 있습니다. (참조는 help bind. help입니다 man쉘 내부 명령에 대해).

보기 bind -p( |less파일을 줄이거 나 파일로 리디렉션 할 수 있음 > binds.txt) 그것은 "목록 입력으로 재사용 될 수있는 형태와 기능에 바인딩 [S] ' .

"c": self-insertASCII 범위의 모든 문자 와 같은 항목이 있으므로 고정 구성은 self-insert다른 Readline 기능으로 대체 될 수 있습니다.

보석이 있습니다. 그것을 보았을 때 C-=( \e=) 기본 구성에서 가능한 완성을 인쇄 한다고 가르쳐주었습니다 . 쉘에 대한 Readline의 전체 현재 구성을 보여줍니다 ... 매우 유용하고 강력합니다. 탐험하기에 좋습니다.

엔드 투 엔드 테스트

  1. e 공장
  2. 에 잘못된 줄 삽입 .inputrc, 새 쉘 열기

    et completion-map-case on
    set completion-ignore-case on
  3. e 분명히 no-op입니다

  4. bind -p( | grep -i '"E"') 쇼
    • "E": self-insert,
    • 하지만 "e": self-insert
    • 반면 "A": self-insert"a": self-insert존재한다.

2

조금 녹슬었지만 터미널에서 붙여 넣기는 GUI 프로그램에서 붙여 넣는 것과 다르게 작동합니다. 각 문자는 클립 보드에서 앱 버퍼로의 memcopy가 아닌 별도의 키 입력으로 전송됩니다. 따라서 "e"를 다시 매핑하면 붙여 넣기에서도 다시 매핑됩니다.

다음 위치를 확인하십시오.

System Preferences > Keyboard > Shortcuts

~/Library/KeyBindings/KeyBindings.dict

$ defaults read com.apple.Automator NSUserKeyEquivalents


정확히 무엇을 확인 하시겠습니까?
nohillside

e키가 재 매핑 되었는지 여부
zencraft

1
OP가 그러한 것들에 너무 경험이 없다고 가정하면 : 정확히 무엇을 찾아야합니까? 이러한 매핑의 예가 도움이 될 수 있습니다.
nohillside

1
키보드 바로 가기의 경우 키 다시 매핑을 찾으십시오. 왼쪽에 앱 목록이 있고 오른쪽에 바로 가기 목록이 있습니다. 터미널이 앱 목록에 없는지 확인하십시오. 다른 두 개는 비어 있어야합니다. KeyBindings.dict가 존재하거나 defaults 명령이 무언가를 리턴하면 추가 분석을 위해 여기에 게시하십시오.
zencraft

1

당신이 시도 할 수있는 다른 것은 새 창이 열릴 때 터미널이 텍스트 편집기 (emacs, vi 등)를 열도록 설정하는 것입니다. 예를 들어 "쉘"의 터미널 환경 설정에서 다음 과 같은 명령실행할 수 있습니다 /usr/bin/emacs. e환경 설정 창에 들어갈 수 없다면 지금까지 제안 된 것보다 이상한 것이 진행되고 있습니다 ...

새로운 터미널 창이 열리면 emacs 시작되고, 당신은 eetc 를 누르려고 시도 할 수 있습니다 . 어떤 일이 일어날 지 모르겠지만, 위의 @Pierce와 같이, 나는 무슨 일이 일어나고 있는지 궁금합니다.


0

stty 설정을 확인하고 실수로 'e'가 백 스페이스 또는 이와 유사한 것으로 설정되지 않았는지 확인하십시오. 거기에 있었어요. Stty 무언가 \ e 할 것 .bash *를 비활성화 / 주석 처리하는 것이 좋습니다.


0

나는 오타가 발생하여 같은 문제가 발생했습니다 /etc/inputrc.

et output-meta on

대신에

set output-meta on

0

이상하게도 MacBook Air에서 macOS 10.13.6을 실행했습니다. 한 사용자는 괜찮습니다. bash를 실행하는 관리자 사용자 터미널은 소문자 'a'를 입력하지 않습니다. 입력하지 않고 붙여 넣지 않는 등. zsh를 실행하면 좋습니다. 다른 사용자도 괜찮습니다. 나는 이것이 이전에 일어난 것으로 생각하고 /Users/admin/.inputrc 파일과 .bash_profile을 삭제하여 수정했습니다. 나는 그들을 다시 추가했고 작동합니다. 이상하게도이 파일에는 중요한 것이 없습니다. .inputrc는 "set completion-ignore-case On"이고, .bash_profile에는 몇 개의 명령 행 별명이 있습니다. 솔직히 다른 일이 있었지만 지금은 효과가 있습니다.

이 문제로 인해 이러한 파일을 삭제했다가 다시 추가해야한다는 것을 기억합니다. 글쎄, 이러한 파일은 적어도 문제를 유발하거나 재설정 할 수 있습니다.


-1

.inputrc 파일을 삭제하면 루트 디렉토리에 있습니다. (숨겨진 파일입니다).

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