Fish:绑定 ctrl+space 以在终端命令行中撤消

Fish:绑定 ctrl+space 以在终端命令行中撤消
abbr -a gc git commit

gc通过按展开后space,我想通过按ctrl+space鱼壳来撤消。

我怎么做?

答案1

要在 Fish 中绑定密钥,请使用

bind sequence thing-to-bind-to

或者

bind -k keyname thing-to-bind-to

要找出序列,请使用fish_key_reader并按您想要的任何键 [0]。

所以,如果我们这样做,我们会得到:

按一个键:bind -k nul '做某事'

所以我们将键名“nul”绑定到“undo”[1]:

bind -k nul undo

注意:这是一个坏主意,因为默认情况下 ctrl-space 已经绑定插入空格而不扩展缩写。所以现在你必须扩展你的缩写,撤消它,再次按空格键再次扩展缩写,......

您需要绑定另一个键才能插入空格而不扩展。例如,让 ctrl-g 这样做:

bind \cg 'commandline -i " "'

相反,您可以简单地使用 ctrl-z 撤消默认情况下绑定的操作,然后按 ctrl-space 插入空格而不扩展缩写。


[0]:如果fish_key_reader不打印任何内容,则意味着您的终端不会为您的组合键发送任何内容。例如,如果终端将其用于自己的绑定,则可能会发生这种情况。

另外,默认情况下用于发送组合键的协议终端相当糟糕,无法表达很多组合 - 例如,无法区分 ctrl-i 和 tab,或者 ctrl-shift-X 和 ctrl-X。还有其他选择,但没有一个得到广泛认可。

[1]:如果使用vi-模式,bind没有模式将设置为vi-正常模式。要在例如插入模式下设置某些内容,请添加-M insert.或者-M visual用于视觉模式。

相关内容