前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Emacs 快捷键配置方案

Emacs 快捷键配置方案

作者头像
zucchiniy
发布于 2020-05-22 06:47:14
发布于 2020-05-22 06:47:14
1.2K00
代码可运行
举报
文章被收录于专栏:洞明学问洞明学问
运行总次数:0
代码可运行

Emacs 的快捷键和 Vim 的快捷键是编辑器中的两坐高山,其中 Emacs 的快捷键主要有四类。

四大类型

  • 全局快捷键
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(global-set-key (kdb "a") 'command)
  • 全局映射键
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(define-key key-translation-map (kbd "a") (kdb "b"))
  • Major-mode 局部快捷键
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(local-set-key (kdb "a") 'command)
  • Minor-mode 局部快捷键
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(define-key your-minor-mode-map (kbd "a") 'command)

删除、禁用快捷键

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(global/local-unset-key (kbd "a"))
(global/local-set-key (kbd "a") 'ignore/nil)

键冲突与解决

最方便的解决方案是找一个空置的 prefix 键,先映射到这个键上,再全局或者局部设置它。

先映射到空闲键上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(define-key key-translation-map (kbd "a") (kbd "M-g A"))

全局或者局部设置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(global/local-set-key (kbd "M-g A") 'command)

快捷键优先级

key-translation-map : 最高级,就是把这个键的意义改变了,想使用原来的快捷键,要重新进行绑定

minor-mode-map : 二级,只在 minor mode 激活时启作用,其它时候会被其它的快捷键覆盖掉

local-set-key : 三级,在 major mode 中启作用

global-set-key : 最弱的级别,但是也是最简单的键绑定方式

设置局域快捷键

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(defun f-python-mode ()
  (local-set-key (kbd "C-x C-e")'f-python-shell-send-line)
  (local-set-key (kbd "M-g C-y") 'f-python-shell-send-line))
(add-hook 'python-mode-hook 'f-python-mode)

注意 当键进行重新绑定后,还应该将之前的功能重新绑定到另一个键上。

Minor Mode Map

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(define-minor-mode visual-mode
  :init-value nil
  :global t
  :keymap (make-sparse-keymap)
  (if (not visual-mode) (setq cursor-type 'bar)
    (setq cursor-type 'box)))
(define-key visual-mode-map (kbd "h") 'mark-paragraph)

定义之后,可以利用 define-key 来设置当前快捷键。然后在需要启用 Visual mode 的时候可以启用这个 minor mode 的相关快捷键。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
emacs配置文件3
;;普通设置 (setq inhibit-startup-message t);关闭起动时闪屏 (setq visible-bell t);关闭出错时的提示声 (show-paren-mode t);显示括号匹配 ;(set-default-font "-adobe-courier-medium-r-normal--14-100-100-100-m-90-iso10646-1");;字体设置 (column-number-mode t);显示列号 (setq frame-title-format "%n%F/%b");在窗口的标题栏上显示文件名称 (mouse-avoidance-mode 'animate);光标靠近鼠标指针时,让鼠标指针自动让开 (setq default-frame-alist '((height . 25) (width . 80) (menu-bar-lines . 80) (tool-bar-lines . 80)));设置窗口启动大小 (fset 'yes-or-no-p 'y-or-n-p);以 y/n代表 yes/no (setq-default make-backup-files nil);;不要生成临时文件 (setq x-select-enable-clipboard t);;允许emacs和外部其他程序的粘贴 (setq mouse-yank-at-point t);支持中键粘贴 ;(show-paren-mode 't); 高亮显示匹配括号 ;;自动插入匹配的括号 ;; enable skeleton-pair insert globally (setq skeleton-pair t) (global-set-key (kbd "(") 'skeleton-pair-insert-maybe) (global-set-key (kbd "[") 'skeleton-pair-insert-maybe) (global-set-key (kbd "{") 'skeleton-pair-insert-maybe) ;;热键设置 (global-set-key [f9] 'delete-window);F9 关闭d当前窗口 (global-set-key [f8] 'other-window);F8窗口间跳转 (global-set-key [(f2)] 'ansi-term);F2 切换到shell模式 ;(global-set-key [f3] 'split-window-vertically);F3分割窗口 (global-set-key [f12] 'my-fullscreen);F12 全屏 (global-set-key [(f4)] 'compile);编译 (global-set-key [f5] 'gdb);启动gdb (global-set-key [(f6)] 'gdb-many-windows);启动窗口gdb (global-set-key [f1] 'goto-line);设置M-g为goto-line ;(global-set-key [f7] 'other-frame);跳到其它窗格 (global-set-key [(f3)] 'speedbar);打开speedbar ;;显示行号 (load-file "~/dos/emacs/display-line-number.el") ;;(autoload `display-line-number-mode-on "display-line-number" "display mode" t) (require 'display-line-number) (global-display-line-number-mode t) ;;鼠标滚轮,默认的滚动太快,这里改为3行 (defun up-slightly () (interactive) (scroll-up 3)) (defun down-slightly () (interactive) (scroll-down 3)) (global-set-key [mouse-4] 'down-slightly) (global-set-key [mouse-5] 'up-slightly) ;;代码折 (add-hook 'c-mode-hook 'hs-minor-mode) (add-hook 'c++-mode-hook 'hs-minor-mode)   ;全屏 (defun my-fullscreen ()   (interactive)   (x-send-client-message    nil 0 nil "_NET_WM_STATE" 32    '(
py3study
2020/01/14
7670
Emacs Keymap 优先级
编写 Emacs 的配置文件,无论如何也不能绕开快捷键,对于快捷键一般都是 define-key 来实现绑定,但是对于不同的 keymap 拥有不同的优先级,了解了这个,就知道了为什么有时候快捷键不启作用了。
zucchiniy
2019/10/30
5530
emacs中怎样折叠Verilog代码
在verilog编写代码时,可能模块列表太长,或者变量定义列表太长,不容易看到代码的重点。用代码折叠功能可以大方便的看代码、编写代码的效率。
ExASIC
2024/11/23
970
emacs中怎样折叠Verilog代码
Emacs 折腾记
作为一名在 Windows 下使用了多年 gVim 的少年,已然把它在我需要的地方都收拾得服服贴贴,可以说 Vim 经过配置配置,上得厅堂下得厨房,基本能满足我的所有幻想。
mzlogin
2020/04/16
2K0
Emacs setup for Go Development
---- 概述 最近在我个人笔记本搭建Go开发环境,需要开发基于Go的一些业务模块,所以就把Go开发环境的配置记录下来。废话少说,直接上代码,嘿嘿! Emacs 和 GO 安装 由于我个人笔记本电脑是MAC Pro,所以在这里主要基于OSX搭建Go开发环境。个人平时编辑器基本上是Emacs,这篇博客主要是记录我在MAC下设置Emacs支持Go开发环境。 Emacs 安装 由于mac自带的emacs版本比较低,所以建议删除或者更新Emacs,个人喜欢干净利索就把旧的emacs删除掉了。新版本的mac,增加了保
吕海峰
2018/04/03
3.8K0
Emacs setup for Go Development
Emacs 折腾记
作为一名在 Windows 下使用了多年 gVim 的少年,已然把它在我需要的地方都收拾得服服贴贴,可以说 Vim 经过配置配置,上得厅堂下得厨房,基本能满足我的所有幻想。
零式的天空
2022/03/28
1.4K0
Emacs 中辅助键设置
使用 Emacs 的人,一般都对快捷键的前缀 C 和 M 键不陌生,但其实在 Emacs 中,除了常见的 C 和 M 之外,还有 s 和 H 两个辅助键,但是在不同的操作系统中,辅助键的设置方法也是不一样的,但是我们可以通过在 init.el 文件中设置键位来保证快捷键的一致。
zucchiniy
2020/05/22
6160
Emacs 中辅助键设置
使用 Emacs 的人,一般都对 C 和 M 键不陌生,但其实在 Emacs 中,除了常见的 C 和 M 之外,还有 h 和 H 两个辅助键,但是在不同的操作系统中,辅助键的设置是不一样的,但是我们可以通过在 el 文件中设置键位来保证快捷键的一致。
zucchiniy
2019/10/30
8610
原 Linux编程基础-emacs简单配置
    最近笔者又回到了Linux~浪了一圈又回来了     不过emacs确实不错,看起来也高大上(哈哈),今天就把我的配置文件贴上吧     要修改.emacs配置文件的话,只需要在emacs界面中按住control+X,松开后再按Control+F, 然后输入路径~/.emacs就好了,使底部命令行显示成这样: Find File: ~/.emacs,按回车就可以了 ;; 指针颜色设置为白色 (set-cursor-color "white") ;; 鼠标颜色设置为白色 (set-mouse-co
不高不富不帅的陈政_
2018/05/18
1.4K0
介绍几个用emacs写verilog的好用的插件
projectile是以项目为单位进行编辑插件。默认会把git、mercurial hg的根目录当作项目根目录,也可以手动创建一个.projectile的空文件作为项目根路径的标记。这里(https://docs.projectile.mx/projectile/index/html)有详细介绍。
ExASIC
2024/11/23
1110
介绍几个用emacs写verilog的好用的插件
Emacs之Python编程环境配置
p等工具,方便安装python的一些工具包(在CentOS6.5 64位系统上进行的操作)
py3study
2020/01/08
1.6K0
Emacs 集成 Github Copilot
copilot.el 是一个非官方实现的 Github Copilot 插件,实测在 x86/arm64 、macos/debian 下均可使用,下面介绍最关键的几个配置步骤。
宋天伦
2023/10/21
6130
Emacs 集成 Github Copilot
Emacs 功能键配置
Emacs 和 Vim 最大的就是快捷键的体系不同,在 Emacs 中,快捷键要有对应的控制键配合,才能正常使用,比如打开 Agenda C-c a 一般指的是 Ctrl + c a 而在 Emacs 中,使用的控制键主要有以下几种:
zucchiniy
2020/05/22
5280
10 个让你进入 Emacs 世界的技巧
很多人都说想学 Emacs,但很多人在短暂的接触后就退缩了。这并不是因为 Emacs 不好,也不是 Emacs 复杂。我相信,问题在于人们其实并不想“学习” Emacs,而是他们想习惯 Emacs 的传统。他们想了解那些神秘的键盘快捷键和不熟悉的术语。他们想按照他们认为的“使用目的”来使用 Emacs。
用户8639654
2021/09/09
8680
Emacs 快捷键
replace-regexp 和 query-replace-regexp 函数的工作方式是类似的,但是它们使用正则表达式作为要进行替换的字符串。
阳光岛主
2019/02/19
2.1K0
一名Clojurian的Emacs配置
我是一名热衷于函数式编程的Clojurian(Clojure粉),网络ID是lambeta(λβ),读作/‘læmeitə/,个人的博客网站是https://lambeta.com。俗话说,工欲善其事必先利其器,完善开发工具与我而言是一件愉快的事情,所以想把经验集结成文字,便有了这篇文章。这篇文章不会介绍太多花式或有深度的emacs配置,更多是摸索学习的过程,其中充满了乐趣。
lambeta
2018/08/17
2.8K0
Emacs Lisp
然后为了印证我的所学,我自己写了一个小函数,用于这篇文章中输入两个由 ~~~ 来标识的代码块
franket
2021/08/10
2.4K0
Emacs 功能键配置
Emacs 和 Vim 最大的就是快捷键的体系不同,在 Emacs 中,快捷键要有对应的控制键配合,才能正常使用,比如打开 Agenda C-c a 一般指的是 Ctrl + c a 而在 Emacs 中,使用的控制键主要有以下几种:
zucchiniy
2019/10/30
8250
nghttp2 - HTTP/2 C Library 简明教程(一)
nghttp2 - HTTP/2 C Library nghttp2 是在C中的超文本传输协议版本2的实现. HTTP/2 的框架层被实现为可重用的C库. 最重要的是我们实现了一个HTTP/2客户端,服务器和代理.还为HTTP/2开发了负载测试和基准测试工具. HPACK编码器和解码器可用作公共API。 还有一个实验性的高级C++库. 我们有这个库的Python绑定,但是我们还没有完整的代码覆盖. 发展情况 为HTTP/2实现了RFC 7540 HTTP/2和RFC 7541 HPA
程序手艺人
2018/05/18
3.4K0
对另一个窗口进行上下翻页
本来更好的键位是 C-[ 和 C-] ,但是在很多系统中,Control 键经常用作转义,比如 C-[ 在 US 键盘中表示 escape ,所以最好不要用 Control 来组合一些特殊符号来用。
飞驰的西瓜
2022/12/14
7760
对另一个窗口进行上下翻页
相关推荐
emacs配置文件3
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验