我试图学习如何bind-key [-cnr] [-t key-table] key command [arguments]更好地使用,但在弄清楚命令的“有效密钥”是什么时遇到了一些麻烦bind-key。
我也试过做man tmux和谷歌,但我找不到任何有用的东西。
man页面?例如,我试图弄清楚以下命令重新映射的含义:
bind-key -n M-S-Left resize-pane -L 2
bind-key -n M-S-Right resize-pane -R 2
bind-key -n M-S-Up resize-pane -U 2
bind-key -n M-S-Down resize-pane -D 4
Run Code Online (Sandbox Code Playgroud)
该-n很容易的找到man页(无需前缀)。但我无法弄清楚M-S-Left关键是什么意思。
我猜它的映射移位和左箭头加上命令的任何M含义resize-pane -L 2。
M意思?C?vim?问题是vim它自己的语言似乎有不同的脚本,因为它有时需要和东西。
我们是否有一个键绑定表来翻译所有指代按键的方式?我正在使用zsh,但我认为如果有这样的表,它将适用于任何外壳。
我问的原因是我想分配一些键绑定,但我不知道如何引用它们(除非我要窃取一个已经定义的)。
例如,在“zbindkey”中,我们有这样的事情:
[[ "$terminfo[kend]" == " O"* ]] && \
bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line
Run Code Online (Sandbox Code Playgroud)
...我可以猜到“kend”意味着这是指End钥匙。
交叉检查bindkey我看到这些行:
"^E" end-of-line
"^[OF" end-of-line
"^[[F" end-of-line
Run Code Online (Sandbox Code Playgroud)
...所以我相信其中一行是指End密钥。哪一个?
我们在“bindkey”文件中也有这个:
bindkey "\e[A" history-beginning-search-backward
Run Code Online (Sandbox Code Playgroud)
现在,我碰巧知道那是Up Arrow关键,但如果我不知道,我怎么知道呢?
$ bindkey (at CLI)
Run Code Online (Sandbox Code Playgroud)
... 为同一个键提供了不同的语言:
"^[[A" history-beginning-search-backward
Run Code Online (Sandbox Code Playgroud)
...但至少现在我知道 ^[[A在 bindkey-at-CLI 中说话与\e[A在 bindkey-in-zbindkey 中说话是一样的。这很容易。在过去的DOS下,Up Arrow 是0;72-你会发现每一个法律按键的扫描码,有仅仅是一种语言。
有桌子吗?或者能够选择击键并知道如何terminfo[]在“bindkey-in-zbindkey”中……在“bindkey-at-CLI”和/或任何其他语言中引用它的其他方式碰巧是?
同样,在 DOS 中有scancode程序——键入一个键,你就得到了扫描码。这太容易了。
从答案中我猜想没有办法打印出所有可能绑定的表格?无论如何'bindkey'几乎可以满足我的要求:
pts/2 HP-y5-10-Debian1 root /aWorking/Docs $ bindkey -L
bindkey …Run Code Online (Sandbox Code Playgroud) 我正在尝试找到一种强制重新映射键盘键的方法。
我尝试使用 xmodmap 和 setxkbmap,但它们不适用于某个特定应用程序。此类命令适用于 X tho 上的其他普通窗口/应用程序。
我认为应用程序可能正在读取键盘原始数据并忽略 X 输入?
那么,如何在不使用 xmodmap 和 setxkbmap 的情况下重新映射密钥?如果有可能使用某些软件来完成。
我也试过 xkeycaps、xkbcomp,但没有试过 loadkeys,因为它在 X 上运行。
我在这里发现我可以尝试setkeycodes,“因为在分配内核键码后,按钮应该在 xorg 中工作”,但我也发现“你不能在 USB 键盘上使用‘setkeycodes’”,这就是我的情况(我对 case 感兴趣有人让它在 ps2 上工作,因为我认为我可以使用适配器)。
这似乎很有希望“将扫描码映射到键码”,但经过几次测试后,没有任何变化,它们如下:
我在 vt1 处找到了键码“36”(“j”键),showkey
我发现扫描码“7e”(键盘“.”)在vt1 与showkey --scancodes
$cat >/etc/udev/hwdb.d/90-custom-keyboard.hwdb
keyboard:usb:v*p*
keyboard:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
KEYBOARD_KEY_7e=36
$udevadm hwdb --update #updates file: /lib/udev/hwdb.bin
$udevadm trigger #should apply the changes but nothing happened
$cat /lib/udev/hwdb.bin |egrep "KEYBOARD_KEY_7e.{10}" -ao
KEYBOARD_KEY_7eleftmeta
$#that cat on hwdb.bin did …Run Code Online (Sandbox Code Playgroud) 我正在查看tmuxfrom screen,并且在配置(高度可配置!)tmux键绑定时遇到了问题。
问题是,在我的.screenrc我有
bindkey ^[[d prev
bindkey ^[[c next
bindkey ^[[a title
bindkey ^[[b screen 1
Run Code Online (Sandbox Code Playgroud)
和绑定工作(它们最初来自rxvt-tabbedex)。
但是tmux显然没有办法将命令绑定到ShiftLeft/Right组合。请证明我是错的。
在 vim 中,您可以 使用该命令打开光标下的文件gf。
还可以通过点击 轻松地在新的拆分窗口中打开该文件<c-w> f。这是一个非常好的和节省时间的功能。
但是,我不知道如何在已经打开的拆分窗口中打开文件(不创建新窗口)。
吉尔斯写道:
字符 27 = 033 = 0x1b =
^[=\e
德米泽写道:
^[ 只是 ESCAPE 的表示,而 \e 被解释为实际的 ESCAPE 字符
然后我还从TechRepublic 文章中找到了这一行
确保将键序列写为 \e[24~ 而不是 ^[[24~。这是因为 ^[ 序列等价于 [Esc] 键,在 shell 中用 \e 表示。因此,例如,如果键序列是 ^[[OP,则要使用的结果绑定代码将是 \e[OP。
但我一直在使用使用 ^[ 而不是 \e 的映射。
那么它们可以互换吗?我什么时候需要使用一个而不是另一个?
当我按下时AltUp,A打印到终端屏幕。当我按下AltDown但B被打印时发生了同样的事情。
我意识到的其他角色;
AltLeft=D和AltRight=C
这些命令的目的是什么?
有没有办法禁用或删除默认的 vim 键绑定?
例如,如果我想<S-k>(shift-k) 什么都不做,我将如何实现?
我是emacs用户,我必须切换到vim. 但是我想念vim插入模式下的一些基本 emacs 命令:
C-AC-EC-KC-YC-x C-s我知道我可以按Escape然后按以下一些键,最后按 key i:
^$ d$p:w [进入]但是我想保持vim插入模式并避免按Escape/i键。
在网络上,我找到了对emacs( vi-mode, vip, viper, vimpulse, vim-mode, evil) 的自定义。但尚未发现相反的情况:自定义vim以使用emacs命令...
我只emacs对vim 插入模式下的命令感兴趣。只是一些基本命令,如bash命令:C-A, C-E, C-K, C-Y, C-U... (是的C-U,不是默认emacs命令,但我也喜欢它)。