如何在 ubuntu 中配置类似 macOS 的文本导航快捷键(删除单词/行、按单词/行移动光标)

如何在 ubuntu 中配置类似 macOS 的文本导航快捷键(删除单词/行、按单词/行移动光标)

我使用 macOS 进行技术写作,最近我家里又有一台 Ubuntu 桌面(20.04)。我为这两台电脑使用同一个外接键盘,而我最大的困扰是我已经习惯了使用以下 macOS 热键:

  • Alt+ Backspace- 删除左侧的单词(我知道这可以通过Control+实现Backspace,但我希望各个操作系统上的一切都相同)
  • Alt+ Left/ Right- 将光标向左/向右移动一个单词(包括+Shift组合键选择和移动)
  • + Backspce- 删除左行
  • + Left/ Right- 将光标移动到行首/行末(包括+Shift组合键选择和移动)

每当我必须使用 Windows 机器时,我都会使用 AutoHotkey 重新配置它以提供类似 macOS 的快捷方式。是否有一种等效的方法可以在系统范围内为 Ubuntu 调整这些设置?

如果可能的话,我希望它适用于所有应用程序,包括终端、浏览器、系统软件等。

我没有完整的自动热键脚本,但这里是我拼凑起来的,以便人们可以看到我要做什么:

; alt-backspace becomes delete-word-left
!Backspace::
Send, ^{Backspace}
return

; ctrl-backspace becomes delete-line-left
^Backspace::
Send, {Shift Home Backspace}
return

; ctrl-left becomes "home"
^Left::
Send, {Home}
return

; ctrl-right becomes "end"
^Right::
Send, {End}
return

(不,Vim 不是一个选项 :) )

答案1

我已将 Capslock 映射为 Esc。我为此使用了 xmodmap。

步骤1 :使用 xev 识别要映射的键的键码。运行 xev 并按下要映射的键以获取其键码,如下所示:
xev | grep -i keycode

我不确定 macOs 中的关键行为,所以很抱歉,您需要自己尝试一下。
第2步 :利用您拥有的键码,使用 xmodmap -e 来测试您的键映射是否按您希望的方式工作。
例如:
#This is to map CapsLock to Esc
xmodmap -e 'keycode 66 = Escape'
如果你想在此测试步骤中恢复旧的按键布局,你可以使用
setxkbmap -layout us

步骤3:获得所有密钥代码后,将它们放在主目录下的文件中(或用户登录后可访问的任何位置),例如,我的最终 xmodmap 文件如下所示:
keycode 66 = Caps_Lock
keycode 9 = Escape
remove Lock = Caps_Lock
add Lock = Escape
keycode 9 = Caps_Lock
keycode 66 = Escape

步骤4 :修改你的 ~/.xinitrc 以使用自定义键绑定在启动时运行 xmodmap。我的是这样的:
/usr/bin/xmodmap ~/.speed

答案2

你可以使用xmodmap被认为适合“最简单的任务”,或更新更全面的星火(也可以看看)。人们经常说,你应该避免使用旧xmodmap的,而应该使用新的xkb。(以及“注意:由于 Xorg 的限制,xmodmap 设置不会自动应用于热插拔设备。如果在应用自定义表后将键盘添加到系统,则必须再次应用自定义表。”)

要查找原始键代码,您可以使用xev与...相同xmodmap

至于如何获得您想要的特定绑定,您可能需要更深入地挖掘/usr/include/X11/keysymdef.h并输出man xkeyboard-config

您还可以获取xkb配置xmodmap

也可以看看

https://www.charvolant.org/doug/xkb/html/node5.html

https://unix.stackexchange.com/questions/205226/xkb-make-ctrlbackspace-behave-as-delete

https://unix.stackexchange.com/questions/504158/permanently-change-xkb-keybindings

https://wiki.archlinux.org/index.php/Xorg/Keyboard_configuration

https://unix.stackexchange.com/questions/28993/what-is-bashs-meta-key

https://medium.com/@damko/a-simple-humble-but-comprehensive-guide-to-xkb-for-linux-6f1ad5e13450

https://help.ubuntu.com/community/Custom%20keyboard%20layout%20definitions

相关内容