![如何在 ubuntu 中配置类似 macOS 的文本导航快捷键(删除单词/行、按单词/行移动光标)](https://linux22.com/image/1019973/%E5%A6%82%E4%BD%95%E5%9C%A8%20ubuntu%20%E4%B8%AD%E9%85%8D%E7%BD%AE%E7%B1%BB%E4%BC%BC%20macOS%20%E7%9A%84%E6%96%87%E6%9C%AC%E5%AF%BC%E8%88%AA%E5%BF%AB%E6%8D%B7%E9%94%AE%EF%BC%88%E5%88%A0%E9%99%A4%E5%8D%95%E8%AF%8D%2F%E8%A1%8C%E3%80%81%E6%8C%89%E5%8D%95%E8%AF%8D%2F%E8%A1%8C%E7%A7%BB%E5%8A%A8%E5%85%89%E6%A0%87%EF%BC%89.png)
我使用 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