标签: key-mapping

什么是 tmux 的有效密钥?

我试图学习如何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它自己的语言似乎有不同的脚本,因为它有时需要和东西。

tmux key-mapping

26
推荐指数
2
解决办法
4万
查看次数

键绑定表?

我们是否有一个键绑定表来翻译所有指代按键的方式?我正在使用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 Arrow0;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)

zsh terminal keyboard key-mapping

24
推荐指数
4
解决办法
3万
查看次数

键盘硬重映射键?

我正在尝试找到一种强制重新映射键盘键的方法。
我尝试使用 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)

linux keyboard x11 key-mapping

21
推荐指数
1
解决办法
7899
查看次数

如何在 tmux 中绑定到 Shift+{Left,Right}?

我正在查看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组合。请证明我是错的。

gnu-screen tmux key-mapping

18
推荐指数
1
解决办法
2万
查看次数

在已打开的窗口中打开光标下的文件的 vim 快捷方式

在 vim 中,您可以 使用该命令打开光标下的文件gf

还可以通过点击 轻松地在新的拆分窗口中打开该文件<c-w> f。这是一个非常好的和节省时间的功能。

但是,我不知道如何在已经打开的拆分窗口中打开文件(不创建新窗口)。

vim editors vi gvim key-mapping

18
推荐指数
1
解决办法
1万
查看次数

\e 和 ^[ 的区别

吉尔斯写道

字符 27 = 033 = 0x1b = ^[=\e

德米泽写道

^[ 只是 ESCAPE 的表示,而 \e 被解释为实际的 ESCAPE 字符

然后我还从TechRepublic 文章中找到了这一行

确保将键序列写为 \e[24~ 而不是 ^[[24~。这是因为 ^[ 序列等价于 [Esc] 键,在 shell 中用 \e 表示。因此,例如,如果键序列是 ^[[OP,则要使用的结果绑定代码将是 \e[OP。

但我一直在使用使用 ^[ 而不是 \e 的映射。

那么它们可以互换吗?我什么时候需要使用一个而不是另一个?

shell escape-characters key-mapping

17
推荐指数
1
解决办法
6807
查看次数

按 Alt+箭头键时打印的字符是什么?

当我按下时AltUpA打印到终端屏幕。当我按下AltDownB被打印时发生了同样的事情。

我意识到的其他角色;

AltLeft=DAltRight=C

这些命令的目的是什么?

command-line terminal key-mapping

15
推荐指数
1
解决办法
7057
查看次数

禁用或删除默认的 vim 键绑定

有没有办法禁用或删除默认的 vim 键绑定?

例如,如果我想<S-k>(shift-k) 什么都不做,我将如何实现?

vim vimrc key-mapping

14
推荐指数
1
解决办法
7645
查看次数

使用 emacs 命令定制的 vim(仅限插入模式)

我是emacs用户,我必须切换到vim. 但是我想念vim插入模式下的一些基本 emacs 命令:

  1. C-A
  2. C-E
  3. C-K
  4. C-Y
  5. C-x C-s
  6. ......还有其他一些

我知道我可以按Escape然后按以下一些键,最后按 key i

  1. ^
  2. $
  3. d$
  4. p
  5. :w [进入]
  6. ...

但是我想保持vim插入模式并避免按Escape/i键。

在网络上,我找到了对emacs( vi-mode, vip, viper, vimpulse, vim-mode, evil) 的自定义。但尚未发现相反的情况:自定义vim以使用emacs命令...

我只emacsvim 插入模式下的命令感兴趣。只是一些基本命令,如bash命令:C-A, C-E, C-K, C-Y, C-U... (是的C-U,不是默认emacs命令,但我也喜欢它)。

vim keyboard-shortcuts emacs vi key-mapping

12
推荐指数
3
解决办法
4048
查看次数

在 mutt 中重新绑定“清除提示”

默认情况下,在 中的命令提示符下输入信息时mutt,可以使用 清除提示Ctrlg,如手册所述

^G 不适用 中止

我一直在尝试将此函数绑定到Escape. 不幸的是,abort在可用的功能中没有列出,无论是在手册中,还是在源码中

我试过在我的.muttrc

绑定编辑器 <esc> 中止

但它抛出一个错误:

/home/jason/.mutt/muttrc 中的错误,第 143 行:中止:地图中没有这样的功能

我尝试使用不同的地图,例如 ( generic) 并尝试使用其他虚构函数,例如clear,但无济于事。

我将如何绑定Escape以清除提示行?

mutt key-mapping

11
推荐指数
1
解决办法
2111
查看次数