Windows 10 Linux bash 쉘 Ctrl + 스페이스가 Emacs에 표시되지 않습니다


12

Windows 10에서는 Linux Bash 용 하위 시스템을 설치했습니다. 그러나 Emacs Ctrl+의 단축키에 문제가있어 space마크 포인트를 설정하지 않습니다.

내가 시도했지만 도움이되지 않은 것 :

  • Windows 콘솔의 속성 메뉴에서 "Ctrl 키 바로 가기 사용"을 선택 해제하려고했습니다

  • 나는 다른 터미널 ConEmu를 성공적으로 사용하려고했습니다.

나는 이것이 ctrl + space와 비슷한 문제가있는 우분투와 관련이 있는지 궁금하고 Windows linux bash는 우분투 저장소를 사용하고 있습니다.

답변:


3

이 글을 쓰는 시점 (2016 년 9 월 1 일) 당시 Bash 터미널을 통해 Ctrl-Space를 전달한다는 점에서 해결책 은 없습니다. 그러나 많은 사용자에게 충분한 해결 방법이 있습니다. PuTTY를 사용하여 연결하십시오. Ctrl-Space를 강제로 처리하는 SSH. tty 모드에서는 Ctrl-Space를 Ctrl- @과 구별 할 수 없습니다. 왜냐하면 동일한 문자 코드이기 때문에 기본적으로 Emacs가 set-mark-command그런 식 으로 처리하도록 설정되어 있기 때문에 문제가되지 않습니다 .

  1. 로 OpenSSH 서버를 설치하십시오 sudo apt-get install openssh-server. 이미 설치되어 있으면 ( sudo apt-get remove openssh-server) 제거한 후 다시 설치하여 구성 파일을 재설정하십시오.
  2. 다음과 같이 / etc / ssh / sshd_config 파일 (sudo 포함)을 편집하십시오 .

    • 주석 처리되지 않은 회선 설정이 있으면 주석 처리하십시오 PermitRootLogin. 줄을 추가하십시오 PermitRootLogin no.
    • AllowUsers USERNAMEUSERNAME을 Linux 사용자 이름으로 바꾸는 행을 추가하십시오 (무엇인지 모르는 경우 whoamiBash 프롬프트에서 명령 을 실행하십시오 ).
    • SSH 키를 사용하여 비밀번호없는 인증을 설정하는 것이 이상적입니다. 그러나이를 수행하는 방법은이 질문의 범위를 벗어납니다 (많은 안내서가 있습니다. 웹에서 "passwordless ssh-keygen"을 검색하십시오). 그 동안 행을 추가하거나 주석 해제하십시오 PasswordAuthentication yes.
    • 설정 UsePrivilegeSeparation no; 아마도 파일에 다음과 같은 줄이 있습니다 UsePrivilegeSeparation yes. 단지 변경 yesno하고 저장 하기 / etc / SSH / sshd_config에 파일.

    여기에 문제가 있으면 1 단계를 반복하여 파일을 복원 할 수 있습니다.

  3. 명령을 사용하여 SSH 서버를 시작하십시오 sudo service ssh --full-restart.
  4. PuTTY ( 여기에서 다운로드 )를 사용 localhost하여 호스트 이름 필드에 로그인 하십시오 . Linux 사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다.
  5. 를 실행하십시오 emacs. Ctrl-space는 원하는대로 마크를 설정합니다.

위의 단계 만으로 시스템이 다른 호스트의 SSH 연결을 수락 할 수있는 것은 아닙니다 . 그렇게하려면 인바운드 TCP 포트 22를 허용하도록 Windows 방화벽 규칙을 변경해야합니다.

다른 대답으로 , "퍼티는 지역 터미널이 아닙니다." localhost이 방법으로 사용할 수 있는지 알지 못했는지 , 로컬 터미널보다 오버 헤드가 커서 PuTTY를 해제 했는지 확실하지 않습니다 . 후자의 경우 걱정하지 않아도 대화 형 SSH 세션은 매우 가벼운 부하입니다. ( X 윈도우 시스템을 실행하는 것보다 부하가 훨씬 적으므로 GUI Emacs 또는 xterm을 실행할 수 있습니다!)

이 방법을 일반 터미널에 비해 실행하는 유일한 단점은 클립 보드의 내용을 매우 빠르게 입력 한 것처럼 붙여 넣기 이벤트가 문자별로 전송되므로 전기 쌍, 삽입, 스 니펫 확장 등이 발생할 수 있다는 것입니다. 불. 붙여 넣기가 완료 될 때까지 진행중인 붙여 넣기를 감지하고 키 코드를 비활성화하는 논리가 있으므로 붙여 넣기로 키 코드 명령 이 실행 되지 않아야합니다 .

그리고 표준 Bash 터미널에 비해 적어도 하나의 큰 장점도 있습니다. 마우스 이벤트는 Pumacty에서 Emacs가 응답 할 수있는 형태로 지원되므로, 아이러니하게도, PuTTY에서 마우스로 포인트를 이동할 수 있습니다. 로컬 터미널과 t.


5

나는 ConEmu를 사용합니다. 우아한 방법은 없지만 매크로를 사용하여 해결할 수 있습니다.

  1. "설정"을여십시오 (위의 아이콘을 클릭하십시오 ).
  2. "키 및 매크로"를 클릭하십시오.
  3. 오른쪽에서 "Macro 01".. "Macro 32"옵션이 표시 될 때까지 아래로 스크롤하여 사용 가능한 옵션 (중요하지 않음)을 선택하십시오.
    하자 걸릴 01 매크로 이 예를 들어.
  4. 첫 번째 드롭 다운 메뉴에서 "공간"을 선택하십시오.
  5. 두 번째 드롭 다운 메뉴에서 "Ctrl"을 선택하십시오. 나머지 2 개의 드롭 다운 메뉴는 그대로 둡니다.
  6. GUI 매크로 필드에 아래에 붙여 넣습니다 .

    keys("\e");keys("x");keys("s");keys("e");keys("t");keys("-");keys("m");keys("a");keys("r");keys("k");keys("-");keys("c");keys("o");keys("m");keys("m");keys("a");keys("n");keys("d");keys("\n")
  7. 위의 기본적으로 M-x select-mark-command문자열을 emacs로 보냅니다 . 이제 "설정 저장"을 클릭하십시오.


결국 다음과 같이 보일 것입니다 :

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


매력처럼 작동합니다. 환상적인!
chriskelly

2

showkey -awindows / ubuntu-bash 콘솔에서 실행할 때 ctrl + space는 단지 일반 공간을 보내는 것을 보여줍니다.

그리고 그것은 다른 리눅스 머신에 대한 ssh 세션과 동일한 문제입니다 .Ctrl + space는 일반 공간으로 전송됩니다.

퍼티는이를 잘 처리 할 수 ​​있지만 퍼티는 로컬 터미널이 아니라는 점을 제외하고는 다른 Windows 기반 터미널 (conemu, consolez, MobaXTerm)과 동일한 동작입니다.

Windows 터미널에는 일부 시퀀스에 대한 매핑이 없다고 생각합니다. 같은 문제는 ctrl + 1 ctrl + 2 등과 같은 다른 조합에서도 마찬가지입니다. 여기에는 예를 들어 퍼티처럼 자체 키보드 매핑을 처리 할 수있는 터미널이 필요합니다.

이 문제는 Windows bash 터미널의 향후 릴리스에서 수정되어야한다고 생각합니다.


더 나쁜 것은 ctrl- @을 전달하지 않는 것 같습니다. 이는 설정 표시의 다른 바인딩입니다. 누군가가 실제 바인딩에 있으면 Mx set-mark-command를 사용할 수 있습니다. 아마도 지금해야 할 일은 키 바인딩을 다른 것에 바인딩하는 것입니다.
Jim Hunziker

@JimHunziker set-mark-command아마도 이맥스에서 ( 가외로) 가장 자주 사용되는 명령 인 것을 감안할 때 self-insert-command, 손가락을 재교육하는 것은 정말 가파른 질문입니다.
Trey

@Trey는 Windows에서 xming을 실행하는 것이 마음에 들지 않는다면 또 다른 답변을 추가했습니다
Pawel Dubiel

@PawelDubiel 방금 추가 한 내 답변보기. (나중에 독자를 돕기 위해 필요한 것보다 자세한 지시를하였습니다.) 어떤 이유로 PuTTY를 기각했지만 그 이유가 무엇인지 말하지 않았습니다. 이것은 xming + X 터미널보다 시스템에 훨씬 적은 부하를주는 옵션입니다.
Trey

2

:이 프로젝트는 당신이 다른 터미널로 MinTTY을 사용할 수 있습니다 https://github.com/mintty/wsltty . PuTTY에서 파생되었지만 SSH가 필요하지 않습니다. 그리고 PuTTY와 마찬가지로 Ctrl-space를 잘 처리합니다.


1

이 문제는 이제 Windows 10 빌드 14965 에서 해결되었습니다 . 검사:

[Environment]::OSVersion

그렇지 않은 경우 업데이트를 설치하십시오!


답변에 더 자세한 내용을 추가하십시오. 답변이 쓸모없는 시점에서 링크가 작동하지 않을 수 있습니다.
djsmiley2k TMW

0

Windows 용 X 서버를 설치할 수 있으므로 해킹이 있습니다

Windows 용 첫 xming 설치 1 개

2 xming 시작

3 Windows bash 설치에서

sudo apt-get install rxvt-unicode-256color

4 열고 cmd.exe실행

bash.exe -c "urxvtd -q -o -f; bash" 

이제 우리는 bash 콘솔에 있고

(DISPLAY=:0 urxvtc &)

5 이제 Xming에 새로운 터미널이 표시됩니다. 그리고 터미널 모드에서 emacs를 실행할 수 있습니다.

emacs -nw

그리고 모든 바인딩은 이제 잘 작동합니다

관련 토론은 https://github.com/Microsoft/BashOnWindows/issues/531에 있습니다.


이것이 PuTTY를 사용하는 데 왜 탁월한 해결책입니까? GUI 모드에서 Emacs를 실행하려고한다면 이해할 것입니다. 그러나 -nwPuTTY와 마찬가지로 터미널에서 실행하게됩니다. 내 빠른 테스트, 그것은 sshd와 PuTTY를 실행하는 것보다 거의 500MB의 메모리 비용이들 것이며 CPU 비용도 비슷하게 높아질 것입니다.
Trey

@trey 500MB 확실합니까? 내 시스템에 정확히 5MB입니다
Pawel Dubiel

아, 내가 유닛을 잘못 읽었 어. 네 말이 맞아. 그러나 비슷한 sshd + PuTTY 숫자는 다른 숫자의 약 25 %입니다. ;-)
Trey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.