연결에 사용된 터미널에 관계없이 개행 문자와 캐리지 리턴 문자를 어떻게 다시 매핑합니까?

연결에 사용된 터미널에 관계없이 개행 문자와 캐리지 리턴 문자를 어떻게 다시 매핑합니까?

내 모든 구성은 내 github 계정(https://github.com/mnebuerquo/dotfiles) 그래야 저장소를 복제하고 설치 스크립트를 실행할 수 있으며 집은 모든 도구를 사용하도록 구성됩니다. 집에서 내가 설정한 서버에 dotfiles 저장소를 설치하므로 편리하고 일반 vim 및 tmux 컨트롤로 다시 전환할 필요가 없습니다.

방금 Nexus 6에서 JuiceSSH를 사용하기 시작했으며 전화에서 내 tmux 세션에 연결할 수 있기를 원합니다.

tmux를 사용할 때 문제가 발생합니다. JuiceSSH의 터미널 동작은 예를 들어 Ubuntu의 Gnome 터미널과 다릅니다. Juice는 ctrl+j를 보내는 반면 다른 용어는 ctrl+m을 보내는 것 같습니다.

지금까지는 tmux를 제외하고는 문제가 되지 않았습니다. 저는 vim+tmux 네비게이터(https://github.com/christoomey/vim-tmux-navigator) vi​m과 tmux의 창 사이를 이동하려면 ctrl+h, ctrl+j, ctrl+k, ctrl+l을 바인딩하세요. 휴대폰 키보드의 Enter 키를 누르면 tmux(Cj)의 다음 하위 창으로 이동합니다. 어떤 장치에서든 Ctrl+M을 누르면 내가 찾고 있는 캐리지 리턴이 표시됩니다. Cj가 바인딩 해제된 내 자신의 tmux.conf를 사용하지 않을 때 Enter 키는 JuiceSSH를 사용하여 내 전화기에서 작동합니다.

내가 원하는 것은 .bashrc에서 터미널 구성을 변경하거나 이를 수정하여 내 터미널이 Enter 키에 대해 무엇을 보내든 tmux와 작동하도록 하는 것입니다.

답변1

전화기가 cj를 방출한다면 아니요, 유일한 해결책은 tmux-navigator에서 바인딩을 변경하는 것입니다. 내 생각엔 SSH인 것 같아순전히 바이트 기반입니다. (ctrl+c /interrupt와 같은 유닉스 신호를 보낼 수도 있지만 그게 전부입니다.) 세션이 열릴 때 휴대폰이 SSH 서버에 cj를 개행 문자로 사용하고 있음을 알리기 때문에 작동합니다.

RFC 4254 - SSH(Secure Shell) 연결 프로토콜

답변2

내 생각엔 당신이 원하는 것:

stty -icrnl

...이건 좀 이상한 것 같지만요. 내가 이해한 바에 따르면 Apple 시스템은 \r기본적으로 eturn 줄 종결자를 사용하지만 이것이 내 모든 Linux 시스템의 기본값입니다.stty sane터미널은 정반대의 작업을 수행하고 번역합니다.입력하다결혼아르 자형반품N이네스. Android 장치와 Linux 시스템은 시스템 커널을 공유합니다. 이것이 터미널을 처리하는 것입니다.라인 규율stty설정은 영향을 미칩니다. 그러나 \rreturn을 눌렀을 때 return을 보내 \r려면 중지하도록 지시할 수 있습니다.

답변3

답변해주셔서 감사합니다!

이렇게 질문을 드려도 문제가 해결된 것 같습니다. JuiceSSH는 Enter 키 문제를 해결하는 업데이트를 출시했습니다.

https://juicessh.com/changelog

7월 25일 JuiceSSH 업데이트 "최신 버전의 Google 키보드 사용 시 Nano에서 Enter 키 수정"이 제 문제에 대한 해결책인 것 같습니다. 오늘 아침에 질문을 한 후, 오늘 오후에 답변을 읽기 전에 업데이트에 대해 알게 되었습니다.

@mikeserv, 당신 말이 맞아요. 이건 좀 이상한 것 같아요. 이상한 방식으로 키를 바인딩하여 모바일 앱의 버그를 해결하려고 합니다. 그러나 이제 전화기가 올바른 문자를 전송하므로 더 이상 필요하지 않습니다.

관련 정보