bash中复杂的键绑定
有没有办法将两个操作组合成一个键绑定(不要认为可以使用函数).
这就是我想做的事情: 我想要一个键绑定(比如Ctrl-X) – >然后插入一些文字 我知道我可以(在?/ .inputrc中)指定 >插入带有(C-X:“ls”)的文本 但我不知道如何把它们放在一起
这样做的诀窍是调用重新绑定键的函数.在我的例子中,我将使用C-b插入文本并调用menu-complete,而不是C-x.在我的例子C-t中你必须牺牲一把钥匙
在.bashrc中,或者要获取的bash文件 set_Cb_to_insert_text() { bind '"C-m": accept-line' bind '"C-b":"ls C-t1"' bind -x '"C-t1":set_Cb_to_complete' } set_Cb_to_complete() { bind '"C-m":"C-t2C-t3"' bind '"C-b": menu-complete' bind '"C-t2": accept-line' bind -x '"C-t3":set_Cb_to_insert_text' } set_Cb_to_insert_text 这是如何工作的: 使用bind,您可以绑定键来执行以下三种操作之一,但不能将它们组合在一起: >执行readline命令:bind’“key”:command’ 因此,如果你想要结合这三件事,你需要将它们分别绑定到一个单独的击键组合(在我的例子中为C-t {1,2,3})并绑定一个键来执行所有这些击键. 在示例中: C-b首先插入ls并’按’C-t1,执行set_Cb_to_complete,然后将C-b重新绑定到菜单完成.它还重新绑定C-m,回车或Enter,因为它现在需要做两件事:接受该行,并通过调用set_Cb_to_insert_text函数重置C-b以插入ls,这也将Enter重置为正常使用. 我说C-t必须被“牺牲”的原因是,如果你按下C-t,readline将等待你看是否要按下1,或2或任何绑定的键序列,然后才采取任何行动.但是当你第一次将C-t用于此用途时,你可以将它用作大量击键的初始键,以覆盖你所有的读取技巧. 建议:当你编写和测试这些时,将一个备用键绑定到accept-line,因为突然有什么东西在错误的地方打破了链,你被困在一个终端而无法执行命令:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Scala实战高手****第6课 :零基础实战Scala集合操作及Spark
- twitter-bootstrap – Carousel图像没有填充bootstrap 3中的
- AngularJS初识
- angular – RXJS:TypeError:this._subscribe不是函数
- 解决shell中(php thinker)方向键 ^[[A ^[[B 以及小键盘不
- Azure 基础:使用 powershell 创建虚拟机
- Scala:我应该在哪里放置进口报关单?
- AngularJS错误:未知提供者:$animateProvider < - $animat
- shell学习二十一--使用if编写mysql启动脚本
- Angular2发布思路(整理官网Deployment页面)