使用“bind”设置Bash按键绑定-避免像Vim中的noremap那样出现递归问题。

7

我在Bash中重新映射了以下按键:

bind '"a" "b"'
bind '"b" "c"'

如果我按下ab,两次都会打印出一个c
如何映射这些键,以便按下ab会被打印,并且只有按下ac才会被打印(就像Vim的nore-map)?

你的使用场景是什么?也许有一种方法可以做到这一点,但听起来像是一个X-Y问题 - chepner
嗨,我的使用情况是在bash中重新映射键而不进行递归;) 我已经知道如何在Windows、Mac和Linux中重新映射键,但在这种情况下,我必须在不能修改操作系统的情况下重新映射它们。也许有一种更全局的方法,比如在屏幕上重新映射键或其他什么东西? - user2653821
2个回答

1
你可以通过在字符前加上“^V”将右侧的字符变成文字字面量:

bind '"x":"^Vx "'

输入冒号后文本的键序列为:

" Ctrl-v Ctrl-v x space "

在bash中,“Ctrl-v x”会产生一个文字字面量x,而不是键映射解释。


0

你可能会发现构建自己的键映射文件很有用,它将数字信号从键盘映射到字符。这可以使用loadkeys命令完成,例如,如果你要切换到dvorak布局,你可以这样做(这是一种详细显示映射文件位置的方式):

loadkeys /usr/share/keymaps/i386/dvorak/dvorak.map.gz

您可以复制使用的布局的映射文件,并更改相关字符,然后加载您修改后的映射。我认为loadkeys只影响命令行,不过我相信有类似的方法可以更改X中的行为。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接