为Emacs项添加字符串值html
名称 | 数据 |
---|---|
HOME | D:\emacs-26.1 |
增长环境变量D:\emacs-26.1node
添加仓库git
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)
初始化packagegithub
(package-initialize)
配置文件init-mytheme.elwindows
(add-to-list 'custom-theme-load-path "your path") (load-theme 'solarized t)
配置文件init-mythememarkdown
(setq molokai-theme-kit t) (add-to-list 'custom-theme-load-path "your path") (load-theme 'molokai t)
编码设置ide
(set-language-environment 'UTF-8) (set-locale-environment "UTF-8") (set-default-coding-systems 'utf-8)
中英文等宽设置函数
(defun set-font (english chinese english-size chinese-size) (set-face-attribute 'default nil :font (format "%s:pixelsize=%d" english english-size)) (dolist (charset '(kana han symbol cjk-misc bopomofo)) (set-fontset-font (frame-parameter nil 'font) charset (font-spec :family chinese :size chinese-size)))) (set-font "Dejavu Sans Mono" "WenQuanYi Zen Hei Mono" 14 14)
如下全部插件都可使用如下命令安装:工具
M-x package-install RET xxx RET
markdown-mode支持emacs markdown编辑,效果预览须要pandoc工具支持。
插件markdown-toc用于自动生成目录。字体
配置
(autoload 'markdown-mode "markdown-mode" "Major mode for editing Markdown files" t) (add-to-list 'auto-mode-alist '("\\.text\\'" . markdown-mode)) (add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode)) (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)) (autoload 'gfm-mode "markdown-mode" "Major mode for editing GitHub Flavored Markdown files" t) (add-to-list 'auto-mode-alist '("README\\.md\\'" . gfm-mode)) ;; 需安装pandoc (setq markdown-command "D:/Program/Pandoc/pandoc.exe")
快捷指令
指令 | 功能 |
---|---|
C-c C-s b | 加粗 |
C-c C-s i | 倾斜 |
C-c C-s c(C) | code |
C-c C-s 1~6(或 h) | 标题 |
C-c C-s f | 脚注 |
C-c C-l | 插入连接 |
C-c C-i | 插入图片 |
C-c C-s C-h | 查询帮助 |
C-c C-s t | 插入表格 |
指令(with pandoc) | 功能 |
---|---|
C-c C-c m | 显示对应html代码 |
C-c C-c p | preview |
C-c C-c e | export |
C-c C-c v | export & preview |
C-c C-c o | open |
C-c C-c C-h | help |
快捷指令
M-x markdown-toc-generate-toc ;; 生成目录树 M-x markdown-toc-refresh-toc ;; 更新目录树 M-x markdown-toc-delete-toc ;; 删除目录树
配置方法
(eval-after-load "org" '(require 'ox-md nil t))
导出md方法
C-c C-e m
模拟vi操做体验的emacs插件,写代码更爽。
配置
(require 'evil) (evil-mode 1)
快捷方式
指令 | 功能 |
---|---|
C-z | emacs模式和evil模式间切换 |
配置
(require 'auto-complete) (require 'auto-complete-config) (global-auto-complete-mode t) ;; 文本模式下启动补全功能 (add-to-list 'ac-modes 'text-mode) (ac-config-default) (setq ac-auto-start 4) ;; pos-tip 帮助闪烁 ;;(require 'pos-tip) ;;(setq ac-quick-help-prefer-pos-tip t) ;; quick-help (setq ac-use-quick-help t) (setq ac-quick-help-delay 1.0) (setq ac-dwim t) (setq ac-trigger-commands (cons 'backward-delete-char-untabify ac-trigger-commands)) ;; fuzzy (setq ac-fuzzy-enable t) ;; menu ;;(setq ac-menu-height 12) ;;(set-face-background 'ac-candidate-face "lightgray") ;;(set-face-underline 'ac-candidate-face "darkgray") ;;(set-face-background 'ac-selection-face "steelblue")
pos-tip在这个环境下效果不好,显示的帮助内容闪烁
auto-complete插件和company插件冲突,在弹出菜单时可能形成显示混乱
模糊匹配fuzzy插件
(setq ac-fuzzy-enable t) ;; 不起做用 M-x ac-fuzzy-complete ;; 能够起做用,但没用
为C、C++、C#、Perl、Python等语言设置代码片断。
(require 'yasnippet) ;; 使用Ctrl-c k做为惟一的触发快捷键 (define-key yas-minor-mode-map (kbd "<tab>") nil) (define-key yas-minor-mode-map (kbd "TAB") nil) (define-key yas-minor-mode-map (kbd "C-c k") 'yas-expand) (setq yas-snippet-dirs '("~/.emacs.d/Mysnippets")) (yas-global-mode t)
建立snippet
C-c & C-n (M-x yas-new-snippet) ;; 建立新snippet C-c C-c ;; 保存snippet
典型例子
# contributor: test <test@qq.com> # name: __---__ # -- __${init}__
# expand-env :expand environment,为变量赋值的列表(相似于let的变量赋值),
在展开代码段时,它可用于覆盖变量值
# note: 从官网说明获取,方便举例 # name: ASCII home # expand-env: ((yas-indent-line 'fixed) (yas-wrap-around-region 'nil)) # -- welcome to my X humble / \ home, / \ $0 / \ /-------\ | | | +-+ | | | | | +--+-+--+
嵌入elisp代码
使用反引号`将elisp代码嵌入到模板中,代码会在snippet展开时执行
/*c-mode example,示例取自官网*/ #ifndef ${1:_`(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`_H_} #define $1 $0 #endif /* $1 */
Mirrors
将带有占位符的制表位称为field,一个field能够有许多mirrors。
当更新一个field,相应field全部的mirrors都会更新
begin {${1:test}} $0 end{$1}
snippet实践
# -*- mode: snippet -*- # name: main # key: c_main # -- /*${1: test} begin*/ /* C语言main函数snippet,输入c_main而后C-c k便可 */ int main(${2:int args}, ${3:char *argv[]}) { $0; return 0; }/*$1 end*/
注:若光标被导航到了$0,没法使用S-TAB向后导航了。
ido配置
(ido-mode 1) (setq ido-separator "\n") (setq ido-enable-flex-matching t)
semx配置
(require 'smex) (smex-initialize) (global-set-key (kbd "M-x") 'smex) (global-set-key (kbd "M-X") 'smex-major-mode-commands) ;; This is your old M-x. (global-set-key (kbd "C-c C-c M-x") 'execute-extended-command)
操做
M-number
自定义配置
(require-package 'solarized-theme) (require 'solarized) (defun init-mytheme-light () "My solarized child theme." (custom-theme-set-faces theme-name `(default ((,class (:background ,base03)))) )) (deftheme init-mytheme "The light variant of the Solarized color theme") (create-solarized-theme 'light 'init-mytheme 'init-mytheme-light)
操做
M-x fci-mode
emacs自带IRC客户端,启动指令:
M-x erc
minibuffer会提示操做步骤:
注:步骤1-2可按默认配置,步骤3-4需自定义