【问题标题】:Passing alt-tab to Emacs inside Screen inside Putty在 Putty 内的 Screen 内将 alt-tab 传递给 Emacs
【发布时间】:2017-11-24 06:45:03
【问题描述】:

我在办公室 Debian 机器上的 Screen 内运行终端模式 Emacs(使用 -nw 选项)。这样,我可以在任何地方使用 ssh 登录我的盒子,即使在连接缓慢或断断续续的情况下也可以工作。

当我使用 Putty 从 Windows 登录时,我错过了使用 Alt-Tab 组合键(在 Emacs 中称为 M-TAB)的可能性。我使用 Esc 和 Tab 两个键进行补偿,但这是两个按键,速度较慢。

我刚刚发现使用 Autohotkeys 我可以使 Ctrl-Tab 与 Alt-Tab 执行相同的操作:

LControl & Tab::AltTab

我可以用这条其他规则完全禁用 Alt-Tab:

!Tab::Return

但这不是我想要的。我需要在其他一些热键上复制 Alt-Tab 的功能(Ctrl-Tab 可以,并且第一条规则就是这样做的),另外我希望在我使用它时将 Alt-Tab 键传递给Putty(这会将它传递给Screen,这将传递它到 Emacs)。也就是说,Alt-Tab不应该被禁用,但它的特殊含义应该被删除。

这在 Windows 上可行吗?

【问题讨论】:

  • 我没用过这种设置,但从描述中猜想,当putty窗口处于活动状态时,你大概可以只发送Esc和Tab:#ifwindowActive putty \n !Tab::send {Esc}{Tab}
  • 谢谢你的想法,是的,它有效:) 只是,正确的关键字是 IfWinActive,我还没有弄清楚如何让它识别腻子窗口,所以我绑定了 Al-无条件制表符。
  • 有可能。我在 Linux 和 Windows 上都使用 Ctrl-Tab 在应用程序之间切换,所以我将 Alt-Tab 留给 Emacs。不幸的是,我的 Windows 笔记本电脑已经在我的办公室隔离了一个月,现在仍然如此,所以我无法报告我在 Autohotkey conf 文件中准确写的内容:(

标签: windows emacs autohotkey putty gnu-screen


【解决方案1】:

虽然我不完全理解您遇到的问题,但该框架应该为您提供一些可用于基于窗口的条件操作的东西。

!Tab::
{
WinGetTitle, Title, A
if (RegExMatch(Title, "PuTTY.*"))
{
    ; Do something if PuTTY is the active window.
}else{
    ; Do something else if PuTTY is NOT the active window.
}}

【讨论】:

    【解决方案2】:

    根据我从几个用户那里得到的答案,我得到了我已经使用了一段时间的最终解决方案。这是我放在桌面上的 Autohotkeys 脚本,每次我必须重新启动 Windows 时都双击它:

    文件“alt-tab 到 ctrl-tab.ahk”

    #NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
    ; #Warn  ; Enable warnings to assist with detecting common errors.
    SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
    SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
    
    LControl & Tab::AltTab
    ; !Tab::Return
    ; #IfWinActive, putty
    !Tab::send {Esc}{Tab}
    

    【讨论】:

    • 如果您不想在每次重启时手动重新运行脚本,请将脚本放入您的startup folder
    • 谢谢。但是,我故意避免这样做,因为我想明确启用该功能,并且我希望同一台笔记本电脑的可能不同用户不会感到意外
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    相关资源
    最近更新 更多