【问题标题】:Unable to make a backward TAB as Shift-TAB in Zsh无法在 Zsh 中将向后的 TAB 作为 Shift-TAB
【发布时间】:2009-05-02 21:37:31
【问题描述】:

问题:在 Zsh 中使用 TAB 向后导航,类似于在 Firefox 中的

Shift-TAB

Shift-TAB 应该做什么的示例

我在终端运行以下代码

ls <TAB>

我明白了

A B C D E F G H I J K H L M N...

当我按 TAB 时,我在 Zsh 中看到以下内容 alt text http://dl.getdropbox.com/u/175564/smallEx.png

我通过 TAB 导航到文件夹 J。然后,我发现我太频繁地按了一次 tab 键。

如何为 Zsh 制作一个向后的 TAB,类似于 Firefox 的 Shift-TAB?

【问题讨论】:

标签: tabs zsh


【解决方案1】:

试试这个:

bindkey '^[[Z' reverse-menu-complete

如果这不起作用,请尝试像这样运行执行 zsh(setopt MENU_COMPLETE):

zsh -Y

然后再试一次!

【讨论】:

  • @ypsu:谢谢你的回答!您的解决方案正是我想要的。
  • 你在哪里找到键盘命令'^[[Z' 这对我的小宝贝来说不太直观?
  • @martisj:“^[[Z”(阅读:转义,左括号,大写 z)是大多数终端写入 shell 的 shift-tab 标准输入的序列。只需将上面的内容复制粘贴到 zsh 或一些启动 rc 文件中,shift-tab 应该可以工作。如果不行,换个终端试试,可能是你的终端有问题。
  • 谢谢@ypsu,你有这些序列的参考吗?
  • @martisj:这是每个终端的设置。查看我的终端的“infocmp”命令输出,看起来这是“cbt”或“kcbt”功能。根据“man terminfo”,这意味着“back_tab”。您可以通过这两个来源找到其余的序列及其解释。如果您只是好奇给定键会生成什么,只需运行“stty raw ; cat”并按下您感兴趣的键。
【解决方案2】:

这个文档应该给你一个很好的解释:

简而言之,很少有终端支持移位的 Tab,但您可以让终端支持“backtab”键序列,您可以配置 X 发送。

【讨论】:

  • 这很尴尬。一个好的(和不干净的,与您的建议相反)是让 .zshrc 支持多个查询(terminfo、zkbd、手动)后端,并使您的 zsh 在 SSH、xterm、linux 控制台、linux 原始控制台等下工作。 ..但是这个建议需要修补操作系统的这么多组件,它会导致其他系统下的 zsh 配置无法正常工作......所以 awkard
  • 这只是一个历史原因,这个旧的默认值应该在 zsh 中更改,它通常不会部署在遗留系统中。正如 ACTUAL 解决方案的大量支持所证明的那样,人们的终端确实可以使用 shift+tab
【解决方案3】:

我不确定向后选项卡到底需要什么,但是 zsh 确实 有一个撤消 zle 小部件,它可以撤消最后一次按下的击键的效果,无论是 Tab 还是其他任何东西。通过将其绑定到一个键来使用它:

$> bindkey "<Ctrl-V><Shift-Tab>" undo 

你按那些组合键的意思,不要打出字母。

我认为这就是您所要求的,但如果没有更多示例,我无法确定。

【讨论】:

  • 我在我的问题中添加了一张图片。我展示了我正在努力实现的目标。例如,对于命令 cd,我 backTAB。
  • @sykora:它没有。它忽略 TAB 完成,并撤消命令 cd 中的“d”。
  • @sykora:我得到以下代码:bindkey ^[[Z undo.我把它放到终端,它给了我 zsh: bad pattern: ^[[Z.
  • 哎呀,忘了引号。现在试试吧。
  • @sykora:当您尝试进行这些键绑定时,您是否总是使用 Ctrl-V。它看起来像 xev 显示你输入的内容,但它是 Shell 的内置功能。
猜你喜欢
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
相关资源
最近更新 更多