adb shell:不能使用ESCAPE键

时间:2015-01-05 19:11:33

标签: android shell cygwin adb vi

我希望在运行vi时使用adb shell。开始" vi"简单。但是,我发现 ESC 键似乎没有通过它,所以我无法退出插入模式。

更广泛地说,我似乎无法向adb shell发送ESC字符。我已经彻底扫描了网络,并且找不到任何有类似问题的人(更不用说答案了)。

我在三星S4上运行VRUFNK1。在PC端,我正在运行" adb shell" Windows下的Cygwin命令。

思想???


更新:这里有一些可能的线索。

  1. adb shell似乎不是问题所在。我可以在运行
    的文件中捕获ESC od -cb > file,所以ESC似乎正在进入在adb shell下运行的程序。
  2. 所有命令都在我的" adb shell"中得到回应(好像设置了-v,但它不是。)
  3. 我注意到输入似乎没有从我的cygwin shell发送到adb shell,原始模式" - 也就是说,我输入的任何文本都会在本地缓冲,直到我返回回车 - 然后整个行被发送。我不确定为什么会使ESC失效,但当然vi并不期望以这种方式接收输入,也许这表明我的环境中出现了异常情况。
  4. 与#1类似,bash(Bash X)似乎收到它,虽然从bash回复是非常奇怪的。我可以使用ESC进入"编辑模式"在我的bash shell(Bash X)中滚动浏览我的历史记录(我已经运行set -o vi),但体验非常奇怪。当我按下ESC,k时,屏幕上没有任何变化,但我在命令历史记录中的位置上升了一个梯级(应该如此);随后按下''导致一个''被回显到屏幕(而不是我的历史列表中的相关命令)。当我最终点击回车时,执行我的历史记录列表中的正确命令(!)。


    更新2:进展......
    我尝试在" adb shell中设置stty值"和我的cygwin bash shell中的那个一样,并没有任何效果。

    我也试过这个:Avoiding escape timeout issues in vim但它没有帮助。

    • 我试过这个(通过使用:so <filename>从文件中读取)。
    • 不幸的是,这些命令并未被&#34; vi&#34;识别出来。 (它们实际上是&#34; vim&#34;命令)。

    部分解决方案: 在&#34; vi&#34;之后,在 ESC 之后立即键入<cr>工作 - 接受ESC,我可以退出编辑器。这很尴尬,编辑窗口仍然无法使用(好像TERM被设置为错误的值),但这是进步。

    另外,当我进入ssh时,工作正常。这个shell由telnet服务器启动;与终端仿真器类似的情况直接在设备上。 Ssh有自己的服务器,然后分离shell。对于&#34; adb shell&#34;,shell由/sbin/adbd分叉 - 据我所知,这个环境简直就是不寻常的。这对我来说是一个巨大的进步 - 至少现在我有办法使用我的PC在设备上进行全屏编辑(而不是直接在S4的小屏幕上进行编辑)。感谢Jack Palevich的建议。

    我现在只能想到两件事:

    1. 尝试针对某人的设备运行adb shell(但设备必须运行root,以便我可以运行Busybox&#34; vi&#34;)(顺便说一下,&#34的版本) 34; vi&#34;不是问题 - 它从ssh运行良好。)
    2. 作为其他人来跑&#34; vi&#34; in&#34; adb shell&#34;在我的设备上,从他们的主机(最好是成功运行&#34; adb shell&#34;以及之前某处的vi。
    3. 我开始认为它根本不起作用。


      更新3:XDA开发者的信息
      我在XDA开发者论坛上找到了一些相关的帖子。似乎人们长期以来一直存在问题(至少从2010年开始)。我没有找到任何解决方案。

      XDA Link 1
      XDA Link 2
      XDA Link 3

      还有一个段落列出了与我的经验相符的各种感知/建议的adb shell错误:

      Proposed ADB Shell Bugs

2 个答案:

答案 0 :(得分:1)

你是对的 - 它根本不能在Windows或Cygwin shell下运行。我发现使其工作的最简单方法是使用PuTTYTray

检查链接线程中的my answer以获取说明和其他详细信息。

答案 1 :(得分:0)

另一种解决方案:使用Windows PowerShell代替cygwin。像'o','esc'和':wq'这样的命令在这里运行得很好。