当我在 shell 中打开一个新选项卡时,xmodmap 键绑定会重置

Fal*_*ent 7 bash vim xmodmap bashrc ranger

当我用 shift-s 在 ranger 中打开一个 shell,打开 vim,然后用 :sh 打开一个 shell 或用 ctrl-shift-t 打开一个新的 shell 选项卡时,我的 xmodmap 键绑定(交换的大写锁定和转义键)被重置。这是终端吐出来的:

xmodmap:  please release the following keys within 2 seconds:
    t (keysym 0x74, keycode 28)
    Shift_R (keysym 0xffe2, keycode 62)
Run Code Online (Sandbox Code Playgroud)

我的键绑定对我来说非常重要,因为我是一个活跃的 vim 用户,目前正在使用 Typescript(我需要快速访问 shell 来编译我的代码)。我设置了我的键绑定xmodmap ~/.Xmodmap(.Xmodmap 文件包含我的 xmodmap 命令)并将该命令添加到我的 .bashrc。

对于更多上下文,我使用的是 Ubuntu 16.4,我最近创建了一个 Ranger 配置文件 (~/.config/ranger/rifle.conf) 来添加对 .ts 文件扩展名的支持。我不是专家护林员或 bash 用户,但两者对我的工作流程都非常重要。帮助将不胜感激。

编辑:当我xmodmap ~/.Xmodmap从 .bashrc 中删除时,这个问题就解决了,但现在我无法在启动时启用我的 xmodmap 键绑定。添加@reboot xmodmap ~/.Xmodmap到我的 crontab 文件不起作用(也许我应该为此发布一个单独的问题,但我会将这个问题留在这里以供将来参考)。

J_H*_*J_H 6

不要xmodmap在 .bashrc 中运行。

它属于~/.xinitrc这样你的窗口管理器将在启动时运行它一次。当您打开第二个或第三个 shell 选项卡时,相同的键绑定将继续可用。

您的 .bashrc 命令在多个上下文中运行,包括可能缺少 的 ssh 登录会话$DISPLAY,因此 init 脚本通常不是 X11 命令的正确位置。