![Fish:绑定 ctrl+space 以在终端命令行中撤消](https://linux22.com/image/205317/Fish%EF%BC%9A%E7%BB%91%E5%AE%9A%20ctrl%2Bspace%20%E4%BB%A5%E5%9C%A8%E7%BB%88%E7%AB%AF%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E6%92%A4%E6%B6%88.png)
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
用于视觉模式。