# 基于Windows系统的Emacs改键方案

Emacs.ahk 脚本为 Windows 应用程序提供了类Emacs的按键绑定。该脚本最初 fork 自 EmacsChina 论坛某位大神的项目,后来我用 AutoHotKey V2 脚本重新翻版,并添加一些特有功能。

首先使用 SharpKeys 将 CapsLock 按键修改为 RightCtrl,RightCtrl 按键修改为 LeftCtrl。这样使用 Ctrl 键为软件原生功能,CapsLock 键为 Emacs 模式按键,如此,所有应用均有 Windows 风格的完整编辑功能以及 Emacs 的快捷键精髓。

Github:https://github.com/reseen/emacs.ahk (opens new window)

# 特有快捷键介绍

# 中文输入法重新输入选中文字(C-S-r)

通常在中英文混合输入的场景,经常会出现本来想输入中文,结果反应过来时,已经在英文输入模式输了好多字符,这时只好删掉这堆英文,然后重新敲一遍中文。 针对以上情况,Emacs.ahk 添加了该功能,使用方法:选中目标文本后,按下热键(C-s-r),会自动切换到中文输入模式下,将选中的文本重新输入一遍。

# 功能说明

# 通用快捷键列表

通用快捷键针对所有应用均有效

Keybinding Function Notes
C-x C-c kill-application
C-Space set-mark-command
C-g quit
- - -
C-a move-beginning-of-line
C-e move-end-of-line
C-p previous-line
C-n next-line
C-f forward-char
C-b backward-char
- - -
M-f forward-word
M-b backward-word
- - -
C-S-v scroll-down C-v 与 Ditto 冲突
M-v scroll-up
- - -
C-x, a end-of-buffer
C-x, e beginning of buffer
C-x, h mark-whole-buffer
C-S-a mark-beginning-of-line
C-S-e mark-end-of-line
C-S-p mark-previous-line
C-S-n mark-next-line
C-S-f mark-forward-char
C-S-b mark-backward-char
- - -
C-w kill-region
M-w kill-ring-save
C-y yank
- - -
C-/ undo
C-? redo
- - -
C-d delete-char 可以删除选中区域
M-d delete-word
C-k kill-line
- - -
C-o open-line-up 在当前行上方插入空白行
C-l open-line-down 在当前行下方插入空白行
C-j newline-and-indent 换行并且缩进
C-m new-line 标准换行
C-S-r reenter-chinese 使用中文输入法重新输入选中文字

# Editor Keymap

已绑定的应用

  • VsCode
  • Effidit
    Keybinding Function Notes
    C-x C-f find-file 打开
    C-s isearch-forward
    C-r isearch-backward 反向搜索,实际无效
    C-. tab-switch-forward
    C-, tab-switch-backward
    C-z appliction-minimize

# Explorer Keymap

已绑定的应用

  • Explorer
  • XYPlorer
    Keybinding Function Notes
    M-] dir-forward
    M-[ dir-backward
    M-= dir-up-level
    M-</td> dir-up-level 返回上级

# Office Keymap

已绑定的应用

  • Word / Excel / PowerPoint
  • Notepad 3
    Keybinding Function Notes
    C-x C-f find-file
    C-s isearch-forward
    C-r isearch-backward 反向搜索,实际无效

# IM Keymap

已绑定的应用

  • WeChat
  • TIM
    Keybinding Function Notes
    C-j newline-and-indent 换行并且缩进
    C-m new-line 标准换行 Alt + Enter
    C-z appliction-minimize