我的所有配置都存储在我的 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) 绑定 ctrl+h、ctrl+j、ctrl+k、ctrl+l 在 vim 和 tmux 的窗格之间导航。当我按下手机键盘上的 Enter 键时,它会导航到 tmux (Cj) 中的下一个较低窗格。当我从任何设备上执行 ctrl+m 操作时,我都会得到我正在寻找的回车符。当我不使用自己的 tmux.conf 时,其中 Cj 未绑定,则 Enter 键可以在我的手机上使用 JuiceSSH 工作。
我想要做的是更改 .bashrc 中的终端配置或修复此问题,以便无论我的终端为输入键发送什么内容,它都可以与 tmux 一起使用。
答案1
如果手机确实发出 cj,那么不行,唯一的解决方案是更改 tmux-navigator 中的绑定。我认为 ssh是纯粹基于字节。 (你也可以发送unix信号,例如ctrl+c /中断,但仅此而已)。它之所以能够工作,是因为您的手机在会话打开时告诉 ssh 服务器它正在使用 cj 作为换行符。
答案2
我想你想要:
stty -icrnl
...虽然这对我来说似乎有点奇怪。据我了解,苹果系统默认使用\r
eturn 行结束符,但在我的所有 Linux 系统上都有默认值stty sane
终端将执行完全相反的操作并进行翻译我输入C联姻r回报n呃我伊内斯。你的 Android 设备和我的 Linux 系统共享一个系统内核 - 这是处理终端的线路纪律该stty
设置会影响。不过,要\r
在按下 eturn 时发送一个return \r
,你可以告诉它停止它。
答案3
谢谢你们的回答,伙计们!
看来我的问题已经解决了,即使我在问这个问题。 JuiceSSH 刚刚发布了一个更新,修复了 Enter 键问题。
https://juicessh.com/changelog
7 月 25 日的 JuiceSSH 更新“使用最新版本的 Google 键盘时修复 Nano 中的输入键”似乎是我的问题的解决方案。我在今天早上提出问题后但在今天下午阅读回复之前发现了更新。
所以,@mikeserv,你是对的,这看起来有点奇怪。我试图通过以奇怪的方式绑定按键来解决手机应用程序中的错误。但这不再是必要的,因为手机现在发送正确的字符。