Fish shell,通过 Tab / Shift Tab 禁用寻呼机导航

Fish shell,通过 Tab / Shift Tab 禁用寻呼机导航

Fish 是一个很棒的 shell(最好的?),但它的完成界面有一个我个人不喜欢并且想禁用的特殊怪癖。教程中用这句话来表达:

再次点击选项卡以循环浏览各种可能性。

这意味着,在按 Tab 键完成最长公共前缀(行为 A)并显示更多条目的菜单后,如果再次按 Tab 键,您将开始循环浏览条目(行为 B)。

是否有办法禁用 Tab 键的行为 B,或将其绑定到不同的键,同时保留行为 A?

答案1

在fish shell中,tab将完成公共前缀,除非公共前缀为空,在这种情况下它将启动寻呼机。此特定行为是不可配置的。

寻呼机有多种内部导航方式:

  1. 使用 tab 切换下一个,shift-tab 切换上一个
  2. 使用箭头键沿基本方向移动
  3. 按 control-S 显示搜索字段以进行进一步过滤
  4. Escape 取消,让您回到触发寻呼机之前

如果您改变主意,退出(通过cancel绑定)可以让您无需退格。

可以替换选项卡的默认行为。例如,如果寻呼机可见,则选项卡不执行任何操作:

 bind \t 'if not status -P ; commandline -f complete; end'

这表示“如果未显示寻呼机,则执行‘完整’readline 功能”。

相关内容