【问题标题】:What makes Ctrl+Q work in zsh是什么让 Ctrl+Q 在 zsh 中工作
【发布时间】:2013-05-24 03:57:40
【问题描述】:

我是一个 zsh 用户,从一个简单的 oh-my-zsh 配置开始,现在我尝试通过将我关心的部分从 oh-my-zsh 导入我自己的 .zshrc 来学习 zsh,然后完全删除 oh-my-zsh。

当我现在终于冷火鸡并删除了 oh-my-zsh 时,我注意到我最常用的快捷方式之一 Ctrl+Q 已停止工作。我对此进行了调查,发现根据this source,该命令被称为push-line

我不知道如何开始使用该 ZLE 功能。我什至不确定如何检查 zle 是否正在运行。我尝试了几个小时试图搜索 oh-my-zsh 存储库,但没有找到激活 push-line 的命令。

我需要做什么才能使 Ctrl+Q 工作? oh-my-zsh 是做什么的,我需要放入我自己的zshrc

【问题讨论】:

  • Ctrl-Q 通常是 tty start 字符(与 Ctrl-S stop 相反)。如果您想将它们用于其他目的,您可能必须禁用带有stty stop '^-' start '^-' 的那些。
  • 谢谢@WumpusQ.Wumbley。你不明白我是多么欣赏这个!如果你做到这一点并回答我会投票+接受你。 (否则我会)

标签: zsh


【解决方案1】:

虽然我从未使用过push-line 功能,但不知道它的作用,甚至不敢尝试找出“oh my zsh”是什么意思,任何使用 Ctrl+Q 可能需要从 tty START 函数中解除绑定。

STOP(冻结输出到终端)通常是 Ctrl+S 并且 START(解冻)通常是 Ctrl+Q 。要删除这些特殊字符,

stty start '^-' stop '^-'

【讨论】:

  • 您在为我解决这个问题时展示了出色的抽象技巧。作为回报,我想邀请您试用push-line 功能。我发现它非常有用,每天可以为我节省很多次!谢谢!
  • 你可以用stty stop undefstty start undef取消设置
【解决方案2】:

一个也可以

unsetopt flow_control

见:http://www.cs.elte.hu/zsh-manual/zsh_16.html

【讨论】:

  • zsh 似乎适用于此,但对我来说,vim 无法识别 绑定。 stty 方法效果很好。
  • 谢谢。 unsetopt 也适用于~/.zshrcstty 解决方案不是这种情况(产生错误stty: stdin isn't a terminal)。
  • 如果有人感兴趣,这是oh-my-zsh uses的方法。
  • 此方法仅在您的 shell 处于 emacs 模式时才有效。如果你的 shell 处于 vi 模式,它就不起作用,因为 vi 模式将 ^Q 绑定到 vi-quoted-insert。您需要额外运行bindkey '^Q' push-line 才能使其在vi 模式下工作。
猜你喜欢
  • 2018-03-17
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
相关资源
最近更新 更多