当我使用 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)
我的按键绑定对我来说非常重要,因为我是一名活跃的 vim 用户,目前正在使用 Typescript(我需要快速访问 shell 来编译我的代码)。我使用xmodmap ~/.Xmodmap
(.Xmodmap 文件包含我的 xmodmap 命令)设置我的键绑定,并将该命令添加到我的 .bashrc 中。
更多背景信息我使用的是 Ubuntu 16.4,最近我创建了一个 ranger 配置文件 (~/.config/ranger/rifle.conf) 来添加对 .ts 文件扩展名的支持。我不是 ranger 或 bash 专家用户,但这两者对我的工作流程都非常重要。非常感谢您的帮助。
编辑:当我从 .bashrc 中删除时,这个问题就解决了xmodmap ~/.Xmodmap
,但现在我无法在启动时启用 xmodmap 键绑定。添加@reboot xmodmap ~/.Xmodmap
到我的 crontab 文件不起作用(也许我应该为此发布一个单独的问题,但我会将这个问题留在这里以供将来参考)。
答案1
不要xmodmap
在 .bashrc 中运行。
它属于~/.xinitrc
这样你的窗口管理器将运行它一次启动时。当您打开第二个或第三个 shell 选项卡时,相同的键绑定将继续可用。
您的 .bashrc 命令在多个上下文中运行,包括可能缺少 的 ssh 登录会话$DISPLAY
,因此 init 脚本通常不是 X11 命令的正确位置。