“Emacs入门”的版本间的差异

来自linux中国网wiki
跳到导航 跳到搜索
 
(未显示同一用户的210个中间版本)
第1行: 第1行:
  
 +
=进阶=
 +
用emacs 让你每天都有新发现和小开心
  
==安装emacs==
+
http://ergoemacs.org/emacs/emacs_make_modern.html
[[How to Compile Emacs on Linux]]
 
  
[http://soft.dog/2018/07/23/emacs-lisp/ Emacs Lisp]
+
[https://blog.lujun9972.win/tags/emacs%E4%B9%8B%E6%80%92/ Emacs之怒]
  
== 正文==
+
https://www.cnblogs.com/robertzml/tag/Emacs/
https://www.emacswiki.org/emacs?interface=zh-cn
 
  
[https://blog.csdn.net/wdkirchhoff/article/details/41623161  生活在Emacs中]
+
[https://zhuanlan.zhihu.com/p/125524093 推荐免费中文Emacs精品教程]
  
== 成为高手笔记==
+
[https://blog.csdn.net/jiangli866/article/details/5366380  Emacs的日常生活(1)]
<pre>即使你不打算使用 Emacs 默认快捷键, 这步也是必须的, 不要跳过!
 
  
最起码要知道以下命令,
+
[https://blog.csdn.net/skdkjzz/article/details/40980173?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-7.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-7.control  嵌入式 一年成为Emacs高手(像神一样使用编辑器)]
  
M-x describe-variable, 快捷键 C-h v, 查看变量的文档
+
[https://www.cnblogs.com/kunyuanjushi/p/5951404.html  Emacs常用快捷键 ]
M-x describe-function, 快捷键 C-h f, 查看命令的文档
 
M-x describe-key, 快捷键 C-h k, 查看快捷键的文档
 
  
 +
<pre>
  
Emacs manual      C-h r        Browse manuals    C-h i
+
我要开发巨型项目 (需要在多个目录窗口间跳来跳去),所以装了 window-numbering.el.
Emacs tutorial    C-h t        Undo changes      C-x u
+
巨型项目需要我同时调试多种语言,所以我装了 evil-nerd-commenter,这样不用记住特定语言的语法就可以 comment/uncomment 代码.
Buy manuals        C-h RET      Exit Emacs        C-x C-c
 
  
 +
要学习的 有 calendar    git  etc
  
</pre>
+
再用上其它插件吧 比较 git 什么的
  
 +
org-mode及其拓展:单独列出来是因为org-mode太强大了,绝对的大杀器。美化:org-bullets(有一个新的叫org-superstar),番茄钟:org-pomodoro,日程管理:内置功能的配置好就很好用,嫌麻烦也可以用org-super-agenda,日志管理:org-journal .....
 +
窗口(buffer)管理:如果你用大屏幕,窗口管理是必须的。窗口编号:winum,窗口切换 :ace-window。另外centaur-tabs配合elscreen管理buffer真的很爽,前者可以将不同类型的buffer分组切换,后者可以保存整个屏幕的布局,开启多个屏幕。
  
以实际问题作为切入点
 
  
努力能很快得到回报, 你会越学越有乐趣, 进入感情上的正反馈.
 
  
要成为高手, 兴趣是最重要的.
 
  
以我为例, 我急需 GTD 的工具, 而 Emacs 的 Org-mode 是同类软件中最好的 (没有之一). 用 Org-mode 节省了时间后, 我对 Emacs 爱屋及乌, 兴趣高涨了 100 倍.
 
  
反面例子是啃Lisp教程开始Emacs之旅, 坚持下来的人寥寥无几.
+
如何用orgmode 写出blog or mediawiki
  
待解决的问题设定优先度 关键在于理性地考虑你最迫切需要解决的一个问题.以这个问题作为出发点, 除此之外都可以妥协.
+
</pre>
 +
<pre>
 +
模式切换命令:M-x 模式名
  
虽然 Emacs 无所不能, 但是饭也要一口一口吃. 有时退一步等于进两步.
+
    shell: 终端模式(ESC+!)
 +
    r-mode:R语言
 +
    org-mode:org-mode
 +
    c++-mode:C++语言
 +
    c-mode:C语言
 +
    latex-mode:LaTeX文件
 +
    perl-mode:Perl语言
 +
    tex-mode TeX文件
  
例如, 我一直以为 Emacs 的中文显示很完美, 搞不懂为什么有人在字体配置上花那么多时间.
 
  
在接到读者反馈后, 我才明白原来我一直在终端下使用Emacs, 终端软件可以完美显示中文字体, 所以就没 Emacs 什么事了. 需要配置字体的人用的是图形界面 Emacs.
+
代码折叠方式
 +
M-x hs-minor-mode
 +
M-x hs-hide-all,
 +
用M-x 直接敲命令更方便,不用记太多快捷键
 +
</pre>
 +
模式切换
  
当初只在终端下使用 Emacs 是因为需连接到远程服务器. 我认为这是重点. 甚至为此放弃了漂亮的配色主题 (后来发觉此牺牲毫无必要). 塞翁失马, 由此也避免了图形界面版本的所有问题.
 
  
https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/guide-zh.org
+
ERC is a powerful, modular, and extensible IRC client for Emacs
  
==后记==
 
<span style="color:green;">后面要把常用的这些常用快捷键写成一个短小的总结卡</span>
 
=== 模式键定义===
 
  
四个模式键:C—-Ctrl;M—-Alt;s—-Super(Win);S—-Shift
+
==日常使用2022 ==
 +
evil (alx+x)
 +
==  为了快速  又一次手工从0写自己的配置啦 Nov 05 2021 ==
  
比如:
 
  
C-x:表示按下ctrl键,然后按下x键。
+
emacs for ruby 官方文档
 +
https://www.ruby-lang.org/zh_cn/documentation/
  
C-x  C-c:表示按下ctrl,然后按下x键,松开后再按下c键。
+
https://github.com/sabof/org-bullets
  
C-x k:表示按下ctrl,同时按下x和k键。
 
  
 +
[https://boxmaking.github.io/emacs/emacs-init.html  emacs-配置文件放哪里]
 +
<pre>
 +
vi .emacs
  
=== 最常用命令 页开头或结尾===
+
;; org-mode 美化
 +
;;一定要放这里 不然会warring
 +
(add-to-list 'load-path "~/.emacs.d/lisp/")
  
<span style="color:red;">M-f 与 M-b  </span> 在行内, 前后大步移动光标,步进单位对于英文而言是单词的长度,对于中文而言是两个标点符号的间距。
+
(require 'org-bullets)
 +
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))
  
<span style="color:red;">M-{ M-} </span> 段开头或结尾
 
  
<span style="color:red;">C-x [  C-x ] or ESC <  ESC > </span>页开头或结尾 
 
  
<span style="color:red;">C-a 或 C-e </span> 对于英文文本,若将光标快速移到行首或行尾,标准按键是 C-a 或 C-e 但是对于中文而言,这对按键有着将光标被移到段首或段尾的奇异效果……如果偶尔忘记,用 Home或End 键也未尝不可。
 
  
<span style="color:red;">M-a 与 M-e </span> 则分别可将光标移动到句首或句尾。
 
  
<span style="color:red;"> C-v 或 M-v <span> 如果文档很长,用可实现向下或向上翻屏
 
  
M-< ,移到最开始。
 
  然后再按几次 C-v 回到这里。
 
  
M-> ,移到最末尾。
 
  然后再按几次 M-v 回到这里。
 
  
C-x 2 将屏幕划分成两个窗格。这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。
 
  
C-x o(“o”指的是“其它(other)”), 将光标转移到下方的窗格。
 
  
C-x 1  (在上方窗格里)输入 C-x 1 关掉下方窗格。
 
  
C-x C-f        寻找文件。
 
C-x C-s        保存文件。
 
  
打开菜单 用F10或者M-` (就是键盘输入区左上角的那个键)就可以呼出菜单了
 
  
emacs-gtk 显示菜单 etc  option -->show/hide 这样在 emacs-gtk 就有菜单了 而em还是没有的 非常 好
 
  
==== 搜索 ====
+
;;#添加到配置文件 例如 .emacs
增量搜索
+
  (setq package-archives '(("gnu"  . "http://elpa.emacs-china.org/gnu/")
C-s 正向搜索
+
                          ("melpa" . "http://elpa.emacs-china.org/melpa/")))
 +
 
 +
  (add-to-list 'auto-mode-alist
 +
              '("\\.\\(?:cap\\|gemspec\\|irbrc\\|gemrc\\|rake\\|rb\\|ru\\|thor\\)\\'" . ruby-mode))
 +
  (add-to-list 'auto-mode-alist
 +
              '("\\(?:Brewfile\\|Capfile\\|Gemfile\\(?:\\.[a-zA-Z0-9._-]+\\)?\\|[rR]akefile\\)\\'" . ruby-mode))
 +
 
 +
(require 'flymake)
 +
 
 +
;; I don't like the default colors :)
 +
(set-face-background 'flymake-errline "red4")
 +
(set-face-background 'flymake-warnline "dark slate blue")
  
C-r 反向搜索
+
;; Invoke ruby with '-c' to get syntax checking
 +
(defun flymake-ruby-init ()
 +
  (let* ((temp-file  (flymake-init-create-temp-buffer-copy
 +
                      'flymake-create-temp-inplace))
 +
(local-file  (file-relative-name
 +
                      temp-file
 +
                      (file-name-directory buffer-file-name))))
 +
    (list "ruby" (list "-c" local-file))))
  
C-M-s使用正则表达式正向搜索
+
(push '(".+\\.rb$" flymake-ruby-init) flymake-allowed-file-name-masks)
 +
(push '("Rakefile$" flymake-ruby-init) flymake-allowed-file-name-masks)
  
C-M-r 使用正则表达式反向搜索
+
(push '("^\\(.*\\):\\([0-9]+\\): \\(.*\\)$" 1 2 nil 3) flymake-err-line-patterns)
  
M-p 选择上一个搜索结果
+
(add-hook 'ruby-mode-hook
 +
          '(lambda ()
  
M-n 选择下一个搜索结果
+
    ;; Don't want flymake mode for ruby regions in rhtml files and also on read only files
 +
    (if (and (not (null buffer-file-name)) (file-writable-p buffer-file-name))
 +
(flymake-mode))
 +
    ))
  
RET 退出搜索并停留在当前搜索到的位置
 
  
C-g 中止当前搜索
 
  
===save and exit ===
+
前提 安装
<pre>
+
sudo gem install rsense
C-x C-c:退出Emacs
+
#The Rsense server is started from the commandline with:
 +
rsense start
  
C-x C-s:保存当前buffer
 
 
</pre>
 
</pre>
  
===命令的中止和 销===
+
==绑定键盘 ==
<pre>
+
  f2现在是最近的文件
C-g  keyboard-quit  放弃当前命令
 
C-x u  advertise-undo  undo上一次 可多次用
 
  
 +
[https://docs.huihoo.com/homepage/shredderyin/wiki/KeyBinding.html Emacs 绑定键盘的技巧]
  
</pre>
+
https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Commands.html
==== 备份文件====
 
想恢复到的最简单的就是直接编辑备份文件
 
  
eg  emacs  test~  ; C-x C-w  test TETURN 把他保存为一个正式文件
 
  
===选中 复制 黏贴===
+
[https://panqiincs.me/2015/06/15/edit-markdown-with-emacs/ 用Emacs编辑Markdown ]
<pre>
+
 
把光标移动到区域的首字符
 
键入C-@(即ctrl+shift+2),以设置标记 有时是ctrl+shife +@
 
把光标移动到区域的最后一个字符
 
键入M(alt)-w,拷贝这个选定区域到粘贴板(剪切是C-w)
 
用光标定位将要粘贴内容的地方,然后键入C-y ,拷贝成功。
 
  
C-@ mark --> c-f or c-n --> alt-w --> c-y
+
[https://www.jianshu.com/p/e4e015096fb4 Emacs有这些配置足矣]
  
C-w 剪切标记到当前光标所在处的文本  ESC w 复制文本
+
==主题配色  ==
 +
https://www.cnblogs.com/eat-and-die/p/10309681.html#org8b69c89
  
C-d 删除一个字符
+
==Edit mediawiki sites from emacs ==
ESC h 选中一个段落
+
[https://github.com/hexmode/mediawiki-el mediawiki.el -- Edit mediawiki sites from emacs]
  
C-x C-x 检查一下位置                                                               
+
==Emacs 从入门到飞天==
C-w  删除文本块 
 
</pre>
 
===文本块的选取和粘贴 ===
 
 
<pre>
 
<pre>
C-w 删除文本块                                                                     
+
1.Emacs Beginner's HOWTO http://jeremy.zawodny.com/emacs/
C-y  yank 粘贴                                                                     
+
 
ESC W  or  C-INSERT    复制文本块                                                 
+
2.Learning GNU Emacs Third Edition
ESC h  标记段落                                                                     
+
 
C-x C-p  标记页面  mark-page                                                       
+
3.Sams Teach Yourself Emacs in 24 Hours
C-x  h 标记整个缓冲区                                                               
 
ESC y  在用过C-y 命令以后粘贴更早删除的文本
 
C-X u  反选 其实就是undo
 
</pre>
 
  
===交换位置===
+
4.Writing GNU Emacs Extensions
字符交换 光标在第二个字符上 C-t                                                     
+
 
                                                                                     
+
5.An Introduction to Programming in Emacs Lisp
文本交换    光标在两个单词之间 ESC t                                               
 
                                                                                     
 
交换两个文本行 光标在第二个文本行的任意位置 C-x C-t
 
  
===改变大小写 ===
+
6.Gnu Emacs Lisp Reference Manual
                                                                                   
 
第一个字母改为大写  capialize  ESC  c                                             
 
全部改为大写 upcase    ESC u                                                       
 
全改为小写  ESC  l (不是 sn 1) 如果在单词中间 可以把前半部分改为小写               
 
                                                                                     
 
加ESC - 再加上面的命令  只对 光标之前的操作
 
  
===文本改写模式===
+
7.GNU Emacs Manual
文本改写模式                                                                       
 
  insert  overwrite mode    不要时 为  ESC x overwrite-mode RETURN                   
 
可用自动补足功能啦 不用全打 tab                                                     
 
                                                                                     
 
文件内容取代缓冲区                                                                 
 
  ESC  x  revert-buffer RETURN
 
  
===查找===
+
8.GNU Emacs Pocket Reference 
<pre>
+
</pre>
搜索/替换(Seach/Replace)
 
C-s 向后搜索
 
C-r 向前搜索</pre>
 
  
[https://www.zhihu.com/question/23456580 GNU emacs24 中如何剪切复制多行文本]
+
[https://max.book118.com/html/2018/0327/158929840.shtm emacs用户手册]
  
===替换===
+
https://www.cnblogs.com/robertzml/tag/Emacs/
<pre>
+
 
按M - %启动查找替换(M is alt on debian),输入要被替换的词,回车,然后输入要替换的词,再回车。
+
[https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/guide-zh.org#%E4%BD%BF%E7%94%A8-evil 一年成为Emacs高手 (像神一样使用编辑器)]
被替换的词会高亮起来,这时,输入y替换并跳到下一个,输入n忽略并跳到下一个,输入q结束,输入!替换剩下的全部。
 
  
一些常用的选项:
+
[https://blog.lujun9972.win/emacs-document/blog/2016/09/24/%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99%E4%BD%A0%E4%BB%8Evim%E8%BF%81%E7%A7%BB%E5%88%B0emacs+evil/index.html 手把手教你从Vim迁移到Emacs+Evil]
  C - g 中断查找替换过程。
 
  ^ 返回上一个替换点,按y继续下一个,如果不想替换上一个的话,用^返回到上一个,然后按 C - r 进入编辑,修改完后按C - M - c退出继续下一个。
 
  C - l 使当前匹配显示在文档中间。
 
  C - r 进入修改。
 
</pre>
 
[https://www.cnblogs.com/robertzml/archive/2010/03/03/1675870.html 学习Emacs系列教程(八):查找替换]
 
  
[https://www.cnblogs.com/skyhacker/archive/2012/01/03/2311437.html emacs查找替换]
+
[https://www.douban.com/group/topic/1005739/ 我来挖个坑:大家用 Emacs 来干嘛? ]
  
===DEL===
+
[https://www.zhihu.com/question/27478438?sort=created Emacs 有什么奇技淫巧?]
<pre>
 
  
C-d  是对字符操作                                                 
+
[https://github.com/hick/emacs-chinese Emacs相关中文问题以及解决方案]
ESC  d  对单词操作                                               
 
                                                                   
 
ESC D 删除光标后面的单词; ESC DEL                                 
 
C-k ;                                                             
 
ESC K 删除光标后面的句子;C-k del 删除光标前面的句子               
 
   
 
</pre>
 
===移动 ===
 
<pre>
 
  
M-< 到文件开头
+
https://www.cnblogs.com/liweilijie/category/440232.html
M->  esc ->shift+> 到文件末尾
 
  
  
 +
[https://www.cnblogs.com/youge/p/4518739.html  Emacs 快速指南 - 原生中文手册 ]
  
以下命令在翻页浏览时相当有用:
+
== 无知和搞笑==
 +
[http://www.stallman.cn/19 我为什么鄙视并抵制Emacs编辑器?]
  
C-v    向前移动一屏
+
==markdown==
M-v    向后移动一屏
+
<pre>
C-l    重绘屏幕,并将光标所在行置于屏幕的中央
+
org导出md
(注意是 CONTROL-L,不是 CONTROL-1)
 
  
 +
    org-mode支持markdown格式导出,而且不需要pandoc和markdown-toc。
 +
    从操作性上来说org-mode要好一些,功能更加强大,所以我要弃markdown了。
  
整屏的移动很有用,但是如何在文字中精确定位呢?
+
    配置方法
  
有几种方式可以选择。用方向键当然可以,不过更有效率的方法是保持双手位于
+
    (eval-after-load "org" '(require 'ox-md nil t))
主键盘区,然后使用 C-p 、 C-b 、 C-f 和 C-n 这四个命令。它们的功能和方
 
向键是一样的,如下图所示:
 
  
                            上一行 C-p
+
    导出md方法
                                  :
 
                                  :
 
            向左移 C-b .... 目前光标位置 .... 向右移 C-f
 
                                  :
 
                                  :
 
                            下一行 C-n
 
p-previous,n-next,b-backward,f-forward。
 
>> 用 C-n 或 C-p 将光标移到上图的中央。
 
  按 C-l,整幅图会被显示在屏幕的中央。
 
  
 +
    C-c C-e m
 +
</pre>
 +
==window-numbering==
 +
<pre>
 +
    简介
 +
    快速在window间切换。
  
 +
    操作
  
移动的单位            向后        向前
+
    M-number
字符                  C-b          C-f
 
  
 +
eg  C-x 2  切出两个窗口  然后 alt-1 alt-2 两个窗口之间来回
 +
</pre>
  
  
当前行开头或结尾      C-a          C-e
+
[https://www.cnblogs.com/eat-and-die/p/10309681.html#org8b69c89 emacs安装配置]
  
C-n
 
  
M-f 如果你嫌一个字符一个字符地挪光标太慢,你还可以一个词一个词地跳。M-f
+
[https://blog.csdn.net/hejinjing_tom_com/article/details/52167009  emacs 学习小结]
(META-f) 可以将光标往前移动一个词,而 M-b 则是往后移。【这里的“词”指
 
英文单词,对中文来说,则是指移动到下一个标点符号。】
 
  
类似的惯例在“行”与“句子”之间也同样适用:C-a 和 C-e 可以将光标移动到
+
[https://blog.csdn.net/ruglcc/article/details/7822030  Emacs 编辑环境,第 3 部分: 高级 Emacs 文本操作]
“一行”的头部和尾部;而 M-a(和terminator冲突) 和 M-e 则将光标移动到“一句”的头部和尾部。
 
  
 +
==代码注释==
  
这里对简单的光标移动命令做一个总结,其中也包括了整词和整句的移动:
+
[https://zhuanlan.zhihu.com/p/107668189 陈斌注释代码的高级技巧]
 +
==Emacs代码折叠==
  
        C-f    向右移动一个字符
+
[https://blog.csdn.net/weixin_39787792/article/details/111023614?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242  python折叠代码_[emacs<nowiki>]</nowiki> python代码折叠]
        C-b    向左移动一个字符
 
  
        M-f    向右移动一个词【对中文是移动到下一个标点符号】
+
[https://csfreebird.blog.csdn.net/article/details/51729046?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.vipsorttest&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.vipsorttest  Emacs代码折叠]
        M-b    向左移动一个词【对中文是移动到上一个标点符号】
 
  
        C-n    移动到下一行
+
[https://blog.csdn.net/pfanaya/article/details/6939310  Emacs 编写代码 折叠与展开]
        C-p    移动到上一行
 
  
        C-a    移动到行首
+
[https://blog.csdn.net/tangnf/article/details/1619162  emacs中的代码折叠]
        C-e    移动到行尾
 
  
        M-a    移动到句首
+
[https://www.cnblogs.com/cobbliu/archive/2013/03/27/2983997.html  emacs 代码折叠 ]
        M-e    移动到句尾
 
  
 +
[https://www.cnblogs.com/bamanzi/archive/2011/04/11/emacs-code-folding.html  Emacs的代码折叠 ]
  
 +
[https://blog.csdn.net/mslk/article/details/491297?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.vipsorttest&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.vipsorttest  使emacs的代码折叠展开绑定键更好用一些]
  
这里还要介绍两个重要的光标移动命令:M-< (META 小于号)可以将光标移动到
+
==Centaur Emacs ==
所有文字的最开头;M-> (META 大于号)可以将光标移动到所有文字的最末尾。
+
<pre>
  
注意,在大部分键盘上,小于号(<)需要用上档键(Shift)来输入,所以在这
+
Dec  29 2021 现在用19年调整出来的那个配置 emacs-gtk 改的配置也写入custom.el
些键盘上你应该用 Shift 键来输入 M-<,如果不按 Shift 键,你输入的会是
 
M-comma(META 逗号)。
 
  
>> 试一试 M-< ,移到本快速指南的最开始。
 
  然后再按几次 C-v 回到这里。
 
  
>> 试一试 M-> ,移到本快速指南的最末尾。
+
GitHub的raw.githubusercontent.com无法链接
  然后再按几次 M-v 回到这里。
 
  
 +
    hosts文件添加 以下内容并保存即可恢复
 +
    199.232.68.133 raw.githubusercontent.com
 +
 +
 +
Customization
 +
Customize Group
 +
 +
M-x customize-group然后选择centaur。设置并保存配置,然后重新启动Emacs。
 +
Manual
 +
 +
在custom.el中添加或更改配置,然后重新启动Emacs。
 +
 +
默认的包归档文件是melpa。您可以在custom.el中更改,也可以随时通过M-x set-package-archives手动设置。
 +
 +
对于个人配置,可以设置为~/.emacs.d/custom-post.org或~/.emacs.d/custom-post.el。
 +
Hydra
 +
Name Scope Keybinding Description
 +
toggles-hydra global <f6> 全局选项切换
 +
window-hydra global C-c w/C-x o w Window management
 +
doom-modeline-hydra doom-modeline-mode C-<f6> Mode-line选项和操作
 +
hydra-ivy minibuffer, ivy-mode C-o Ivy的附加密钥绑定
 +
ivy-hydra-read-action minibuffer, ivy-mode M-o Actions forivy-dispatching-done
 +
hydra-dired-qick-sort dired S dired-quick-sort的选项
 +
org-hydra org-mode < Org template
 +
dashboard-hydra dashboard-mode h/? 仪表板操作
 +
dumb-jump-hydra global C-M-j 跳转到定义
 +
youdao-dictionay-hydra youdao-dictionay-mode h/? youdao-dictionary的操作
 +
ztreediff-hydra zreediff-mode C-<f5> 文本模式目录树的操作
 +
git-messenger-hydra global C-x v p git-messenger的操作
 +
smerge-mode-hydra smerge-mode C-c m smerge-mode的操作
 +
rect-hydra text-mode, prog-mode C-<return> 矩形的操作
 +
rect-hydra org-mode S-<return> 矩形的操作
 +
lsp-ui-hydra lsp-ui-mode M-<f6> lsp-ui的操作
 +
dap-hydra dap-mode M-<f5> dap-debug的操作
 +
elfeed-hydra elfeed ? RSS阅读器elfeed的操作
 +
xwidget-hydra xwidget-webkit-mode ? 嵌入式webkit浏览器的操作
  
如果你的键盘上有方向键的话,也可以用它们来移动光标。不过我们有三个理由
 
推荐你学习 C-b 、C-f 、C-n 、和 C-p:(1)它们在任何键盘上都能用。(2)
 
当你熟练使用 Emacs 之后,你会发现用这些组合键比用方向键要快得多,因为你
 
的手不需要离开打字区。(3)一旦你习惯了使用这些组合键,你也可以很容易地
 
适应其它更高级的光标移动命令。
 
  
大部分的 Emacs 命令接受数字参数,并且对于多数命令而言,这些数字参数的作
 
用是指定命令的重复次数。为一个命令指定数字参数(也就是重复次数)的方法
 
是:先输入 C-u,然后输入数字作为参数,最后再输入命令。如果你有META (或
 
EDIT 或 ALT)键,那么还有另一种办法:按住 META 键不放,然后输入数字。不
 
过我们还是建议你用 C-u,因为它在任何终端机上都能用。这种数字参数也称为
 
“前缀参数”,意思是说这个参数是先于使用它的命令而输入的。
 
  
举例来说, C-u 8 C-f 会向前移动 8 个字符。
 
 
</pre>
 
</pre>
 
+
=== FAQ===
===缓冲区、窗口与窗框===
 
 
<pre>
 
<pre>
 +
FAQ
  
2018年 01月 23日 星期二 21:03:14 CST 学习这个
+
    如何在Centaur Emacs中正确显示图标?all-the-icons是必需的。运行M-x all-the-icons-install-fonts安装资源字体。在Windows上,字体应该手动安装。all-the-icons仅支持GUI。如果你不喜欢彩色图标,(setq all-the-icons-color-icons nil)来禁用它。详情请参考all-the-icons.el。如果all-the-icons字体安装正确但图标显示不正确,请安装non-free字体符号。此问题通常发生在Windows上。详情请参阅#121。如果您使用cnfonts,它将与all-the-icons冲突。解决方法就在这里。为了获得更好的体验,我不建议在daemon模式下使用emacsclient的GUI。见#154。
 +
    软件包无法安装,我该怎么办?一般是因为连接问题。请参考#98。M-x package-refresh-contents然后再试一次。(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")。使用ELPA的另一面镜子。更改另一个网络以重试。
 +
    如何通过拼音搜索中文?在Emacs中,C-s !。如果您只想搜索!,请使用C-s \!。
 +
    如何使用Centaur仪表板?如果centaur-dashboard是non-nil,Centaur仪表板将在启动时自动打开。启动后,您可以使用F2随时重新打开它。在仪表板中,请按?或h获取帮助。您可以轻松跳转到带有键绑定的部分或按钮,例如主页(H)、会话(R、L)、设置(S)、更新(U)、最近的文件(r)、书签(m)和项目(p)。
 +
    Centaur Emacs是否支持语言服务器协议(LSP)?默认情况下,Centaur Emacs支持并启用LSP功能。lsp-mode是默认客户机,eglot是另一个选择。如果您不喜欢使用(setq centaur-lsp nil)来禁用LSP。要使用LSP,您应该安装语言服务器。有关详细信息,请参阅lsp-mode:supported-languages或eglot:连接到服务器。
 +
    如何在org-mode中启用plantuml?把(setq org-plantuml-jar-path "<path of plantumx.x.x.jar>")放进custom.el。
 +
    为什么Emacs环境变量和exec-path在GUI和终端之间是不同的?请参考第33条。您应该在启动文件中设置环境变量,比如.profile、.bash_profile或.zshenv,然后Centaur Emacs能够识别并导入环境变量。
 +
    如何在Centaur Emacs中使用zoom-window?见#169。
  
Emacs 启动后,窗框中默认只有一个窗口,但是使用 C-x 1 或 C-x 2 可以将其水平或竖直一分为二,这个分割过程可以无限的进行下去。每次被分割的窗口都是输入光标所在的窗口(也称为被激活的窗口)。使用 C-x o 可以在多个窗口中跳转。
+
</pre>
  
由于 Emacs 在拆分窗口时,默认是水平或竖直均分,所以如果你希望将某个窗口调的宽一些,可 C-x } ;要使之窄一些,可 C-x { ;要使之高一些,可 C-x ^,但是要使之矮一些,貌似只能是激活该窗口下方的窗口,然后让下方的窗口高一些。这些窗口大小的调整方法,每次只能使得窗口的尺寸增大或减小一个字符的宽度或高度。如果你不想多次输入像 C-x ^ 这样的命令,那么可以用 C-u n C-x ^ 这样的组合键,其中 n 表示你要重复执行 C-x ^ 这样的命令 n 次。例如,要将当前窗口的高度增加 5 个字符的高度,只需 C-u 5 C-x ^ 即可。
+
https://seagle0128.github.io/.emacs.d/#customize-group
  
C-u 最好要牢记,它的职能就是给某个组合键所绑定的 Emacs Lisp 函数传递一个参数值。 C-u 5 C-x ^ 表示向 C-x ^ 所绑定的 Emacs Lisp 函数传递参数值 5 ,而这个函数接受这个参数值之后,就会将窗口的高度增加 5 个字符的高度。
+
[https://www.5axxw.com/wiki/content/ipt6q1  CentaurEmacs-一个奇特而快速的Emacs配置 ]
  要查看按键被绑定到了哪个 Emacs Lisp 函数,只需 C-h k <RET> 按下你要查询的键 。 <RET> 表示回车键
 
  
如果觉得窗口太多,想关掉一些,那么关闭被激活的窗口的组合键是 C-x 0 。如果是图形界面的 Emacs,只需要鼠标右键点击窗口的模式行即可将该窗口关闭。我的建议是:能用键盘就不要用鼠标。
+
[https://github.com/condy0919/.emacs.d A fast and incredible Emacs config]
  
要在某个窗口中打开或新建一个文件,可 C-x C-f 文件路径。
 
  
为了节省内存占用,请尽量使用 Emacs 的多窗口模式,不要打开一个又一个 Emacs
 
  
</pre>
+
[https://blog.csdn.net/qq_33831360/article/details/107732230  emacs安装与配置(Centaur Emacs)]
  
=== 文本编辑的正确姿势===
+
[https://lemon0910.github.io/%E5%B7%A5%E5%85%B7/emacs-usage/# emacs学习心得 ]
用 Emacs 的正确姿势应该是永远保持能不用鼠标就不用鼠标的姿势!因此,你需要学会用键盘来控制光标在窗口中的位置。
 
<pre>
 
最基本的光标位置控制键如下所示:
 
  
              上一行 C-p
+
[https://emacs-china.org/t/emacs/3374  Emacs 用户们以及他们的配置合集 ]
                    :
+
 
                    :
+
[https://blog.csdn.net/easier_life/article/details/10061935  优化emacs 界面显示设置]
向左移 C-b .... 目前光标位置 .... 向右移 C-f
+
 
                    :
+
[https://www.jianshu.com/p/90b0d25f32df Emacs入门系列:定制Emacs的Theme]
                    :
 
              下一行 C-n</span>
 
要记忆这几个键并不困难。 p 就是 previous(在...之前), n 就是 next, b 就是 backward, f 就是 forward,而 C 就是 Control……美国人民真会玩!
 
</pre>
 
  
 +
==doom 另一个  Emacs Distribution==
 +
Doom Emacs就是一个Emacs+Vim的产物,其包含了Emacs和Vim的优点,
  
上述按键虽然简单易懂,但它们只适合小范围移动光标。在行内,可以用 <span style="color:red;">M-f 与 M-b </span>前后大步移动光标,步进单位对于英文而言是单词的长度,对于中文而言是两个标点符号的间距。
+
[https://cireu.github.io/2019/10/18/doom-emacs-issue/ doom-emacs 配置的问题]
  
对于英文文本,若将光标快速移到行首或行尾,标准按键是<span style="color:red;"> C-a 或 C-e </span>但是对于中文而言,这对按键有着将光标被移到段首或段尾的奇异效果……如果偶尔忘记了这对按键,用 Home 或 End 键也未尝不可。<span style="color:red;"> M-a 与 M-e </span>则分别可将光标移动到句首或句尾。
+
[https://shigaro.org/2020/07/01/emacs-1/ Emacs 笔记 (一) —— 安装与配置 Doom Emacs]
  
如果文档很长,用 <span style="color:red;">C-v 或 M-v </span>可实现向下或向上翻屏。如果偶尔忘记了这对按键,用键盘上的 PgUp 与 PgDn 翻页键也可行。
+
https://www.zhihu.com/question/60367907
  
跨度最大的光标移动键是 M-< 与 M-> ,可分别将光标移动到缓冲区的首部与尾部。
+
[https://www.bilibili.com/read/cv11371146/ 请尝试使用Doom Emacs 「Emacs+Vim双强联合」]
  
一旦掌握了上述这几个控制光标位置的按键,在 Emacs 中鼠标基本上就变得不是那么不可或缺了,更重要的是,这些按键能够帮助你更快速的选择文本。对于文档中的待选文本区域,用上述按键将光标移动到该区域的起始位置,然后用<span style="color:red;"> C-@ </span>标定选区之首,然后继续用上述按键将光标移动到选区之尾,这样就完成了文本的选取。
+
[https://blog.csdn.net/u014801157/article/details/113887821  Doom-Emacs安装和基本使用方法]
  
 +
==MediaWikiMode ==
 +
编辑Wiki (Wikipedia-mode)
  
 你可能不知道怎么产生 C-@ 按键序列。普通键盘上,应该是摁住 Ctrl 键,然后再摁住 Shift 键,最后摁下数字 2 键,然后松开手。因为 @ 在 2 上面,需要 Shift 切换……
+
[https://www.emacswiki.org/emacs/MediaWikiMode MediaWikiMode]
  
对于选中的文本,随后的操作无非是剪切、复制或删除。剪切,请用 C-w;复制,请用 M-w;删除,请用 Backspace。对于剪切或复制的文本,要粘帖在光标所在位置,请用 C-y……或者你也可以试着看看 C-y 之后再 M-y 有什么效果!
+
https://github.com/hexmode/mediawiki-el
  
对文本进行了一段时间的编辑之后,要反悔的话,就用 C-_ 键执行 Undo 操作。
+
==theme ==
 +
===zenburn-theme for Emacs ===
 +
<pre>
  
  要产生 C-_ 的按键序列,请参考上文所讲的 C-@ 的做法。
+
Download zenburn-theme.el to the directory ~/.emacs.d/themes/. Add this to your .emacs (or init.el):
建议现在就立刻将上述提到的每个按键都反复试验六、七次,以后就一直坚持使用它们……用不了几天也许就变成手指的本能了。忘掉鼠标吧,键盘可以解放你的双手,可以让你从畸形的鼠标手解脱,然后变成键盘手……因为你很快就会觉得左手的小指会有点酸痛!我会在下一节中拯救你的手。
 
  
===拯救你的左手小拇指===
+
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")
如果感到左手的小手指有点疼,就不要再去用左手去摁 C-x C-s 这样的键了,你完全可以用右手的小指去摁键盘右侧的 Ctrl 键,然后左手相应的手指去摁 x 与 s 键
 
  
===将一段代码向右推===
+
临时load
[https://segmentfault.com/a/1190000003811296 将一段代码向右推20180124pm到这里 后面的还没看完]
+
Now you can load the theme with the interactive function load-theme like this:
  
===显示行号===
+
M-x load-theme RET zenburn
====临时显示行号或者取消行号====
 
在Emacs下执行 M-x linum-mode 来显示或者取消行号
 
M-x : Alt + x
 
输入: linum-mode
 
  
===跳转到指定行 ===
+
永久自动生效 可能要放在最后面 june 2022
====临时====
+
To load it automatically on Emacs startup add this to your init file:
M-x goto-line 然后回车  <line_number>
 
  ESC x goto-line 然后回车  <line_number>
 
  ESC x goto-char 然后回车  char
 
  
====长期====
+
(load-theme 'zenburn t)
以在.emacs文件中定制一下(添加以下一行):
 
  
(define-key ctl-x-map "l" 'goto-line)
+
</pre>
  
然后每次在emacs中按C-x再按l,输入指定的行号就可以了。
 
  
http://blog.csdn.net/grey_csdn/article/details/78905862
+
https://github.com/bbatsov/zenburn-emacs
http://bbs.csdn.net/topics/60028785
 
  
 +
==2021==
  
=== 常用插件===
+
[https://lifegoo.pluskid.org/wiki/Emacs.html pluskid.org Emacs.html]
记笔记,安排日程,那么毫无疑问Org-Mode是首选
 
  
[https://elloop.github.io/tools/2016-03-01/emacs-accumulate-5-packages-extensions Markdown]
+
[https://www.cnblogs.com/UnGeek/p/4518206.html My Emacs Writing Setup]
  
  
=== 快捷键===
+
[https://www.cnblogs.com/UnGeek/archive/2013/04/28/3049448.html  emacs 常用命令与配置 ]
<pre>
 
M-s : 新建一个buffer(缓冲区)
 
  
C-x O : 注意是大写的O,不是零,所以需要按住shift键再按o键。用于在缓冲区之间切换
+
[https://www.jianshu.com/p/f3085de876cd Emacs 26的多线程探索]
  
C-g : 取消当前操作
+
[https://zhuanlan.zhihu.com/p/51305549 Emacs 系列(一):抛掉一切,投入 Emacs 和 org 模式的怀抱]
  
C-x u : 回到上一步,相当于Undo
+
https://zhuanlan.zhihu.com/p/51599701
  
C-x  C-x : 变大写
+
=emacs注释快捷键=
 +
<pre>
  
C-x 3 : 把缓冲区(buffer)分为左右两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口)
+
emacs常用命令:C Mode下批量注释、取消注释代码
  
C-x 2 : 把缓冲区(buffer)分为上下两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口)
+
C-c C-c    批量注释选中代码
 +
C-u C-c C-c    取消注释
  
M-w : 选中文字的情况是复制文字,而如果没有选中文字则是复制当前的一行
 
  
C-w : 选中文字的情况是剪切文字,而如果没有选中文字则是剪切当前的一行
+
多行注释:
 +
1. 选中一段区域到最后一行行首(不选中任何字符);
 +
2. 按 Ctrl-x r t ;
 +
3. 输入注释内容;
  
M-x : 调出命令输入,可以在后面接命令,比如man,svn-status,等
+
反多行注释:
 +
1. 选中一段区域到最后一行,紧挨着注释字符之后的位置(不选中任何字符);
 +
2. 按 Ctrl-x r k;
  
C-y : 黏贴
+
note 2021
 +
前进 后退 up or donw 什么的和emacs一样的呀 emacs or  iptyhon3 中写py 代码  完成不用小键盘都行 再也不用烦那个小键盘的方向键太小了
 +
</pre>
 +
[https://blog.csdn.net/u011508640/article/details/52809862  emacs注释快捷键]
  
C-x C-s : 保存文本
+
=以前笔记=
 +
==calendar emacs日记功能 The Calendar and the Diary ==
 +
<pre>
 +
;; 设置F2快捷键指定Emacs 的日历系统,i d 新建日记,d查看日记
 +
(global-set-key [f2] 'calendar)
  
C-x C-f : 打开文件,如果文件不存在,则新建文件
 
  
C-x C-v : 打开一个文件,取代当前缓冲区
+
To exit the calendar, type q. 要在Calendar mode(alt+x calendar) 才能exit 在 diary 是不能exit 的
  
C-x k : 关闭当前缓冲区(buffer)
+
q 是exit  退出
 +
M-x calendar. # M is alt
  
C-s : 向前搜索
+
</pre>
 +
https://www.gnu.org/software/emacs/manual/html_node/emacs/Calendar_002fDiary.html
  
C-r : 向后搜索
+
[http://blog.sina.com.cn/s/blog_4d9e0a010102weij.html emacs写日记]
  
C-x h : 全选
+
[https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Commands.html manual Commands for Binding Keys]
  
C-v : 向下翻页
+
https://www.emacswiki.org/emacs/CalendarMode
  
M-v : 向上翻页
+
[https://github.com/emacs-china/hello-emacs/blob/master/Emacs%E4%B8%AD%E7%9A%84%E6%97%A5%E7%A8%8B%E7%AE%A1%E7%90%86.org Emacs中的日程管理]
  
C-f : 前进一个字符
+
[https://github.com/kiwanami/emacs-calfw Calfw]
  
C-b : 后退一个字符
+
[https://www.emacswiki.org/emacs/CalendarLocalization#h5o-5 CalendarLocalization]
  
M-f : 前进一个单词
+
[https://os.51cto.com/article/653887.html 帮你精通Emacs:配置日程,日记与日历的详细步骤 ]
  
M-b : 后退一个单词
+
[http://blog.chinaunix.net/uid-25830557-id-317944.html Emacs配置文件(非常酷的风格!)有很多calendar相关的]
  
C-@ : 标记开始区域
+
[https://www.bilibili.com/video/BV1ox411V7cX 【教程】Emacs 第二十六节:Calendar 第三部分]
  
C-a : 移到行首
+
[https://os.51cto.com/art/202103/653887.htm 帮你精通Emacs:配置日程,日记与日历的详细步骤]
  
C-e : 移到行尾
+
[https://linux.cn/article-11932-1.html 使用 Emacs 发送电子邮件和检查日历 ]
  
M-a : 移到句首
+
==2021问题==
 +
现在在kali里面直接打开文件没内容显示,要先打开em  Symbol's value as variable is void ispell-menu-map-needed
 +
我结果是从另外一个方向来处理这个问题  手工编译em 27  暂时只另外了 em 为新的emacs 其它 包括emacs-gtk还没改 /usr/bin 下的还没有改
  
M-e : 移到句尾
+
==安装emacs==
 +
[[How to Compile Emacs on Linux]]
  
M-< : 缓冲区头部
+
[http://soft.dog/2018/07/23/emacs-lisp/ Emacs Lisp]
 +
 
 +
== 正文==
 +
https://www.emacswiki.org/emacs?interface=zh-cn
  
M-> : 缓冲区尾部
+
[https://blog.csdn.net/wdkirchhoff/article/details/41623161  生活在Emacs中]
  
M-g M-g,再输入数字 : 跳转到文本的第几行
+
https://www.emacswiki.org/emacs/InitFile
  
C-x 0 : 关闭当前缓冲区
+
== 成为高手笔记 Basic Emacs survival keys==
 +
<pre>即使你不打算使用 Emacs 默认快捷键, 这步也是必须的, 不要跳过!
  
C-x C-c : 退出Emacs
+
最起码要知道以下命令,
  
 +
M-x describe-variable, 快捷键 C-h v, 查看变量的文档
 +
M-x describe-function, 快捷键 C-h f, 查看命令的文档
 +
M-x describe-key, 快捷键 C-h k, 查看快捷键的文档
  
emacs buffer read only
 
Ctrl-x Ctrl-q
 
  
</pre>
+
Emacs manual      C-h r        Browse manuals    C-h i
 +
Emacs tutorial    C-h t        Undo changes      C-x u
 +
Buy manuals        C-h RET      Exit Emacs        C-x C-c
  
[https://aifreedom.com/technology/112 Emacs快捷键列表]
 
  
链接:https://www.jianshu.com/p/732157b02ecc
+
If an Emacs session crashed recently, type M-x recover-session RET
 +
to recover the files you were editing.
  
==多窗口 ==
 
  
 首先先明确下Emacs窗口的概念,我们双击Emacs图标打开程序见到的Windows窗口叫做Frame,包含了标题栏,菜单栏,工具栏,最下面的Mode Line和回显区域,而中间一大块显示文本的区域则是Window,实际上每个窗口都有自己的Mode Line。下文中我将称Frame为框,Window为窗口,这里和我们平时理解的Windows窗口有点区别。
+
    C-g (即同时按下Control和g键) 能够取消命令提示. 后面我们会将escape键也映射成该操作以符合Vim的操作惯例.
 +
    C-x k 杀掉(关闭)一个buffer. 那些自动打开的windows通常可以通过按下"q"键来关闭.
 +
    C-x o (字母"o"而不是数字零) 会在window之间循环跳转.
 +
    C-x 2 横向分割(window)
 +
    C-x 3 竖向分割
 +
    M-x (M = PC上的Alt键) 会显示一个"minibuffer",在那你可以调用Emacs函数. 后面我会展示如何让它更好用.
 +
    要切换long lines wrapping功能 (类似Vim中:set wrap/nowrap), 执行 M-x visual-line-mode RET.
 +
    C-y: yank/paste. 粘贴,它在你开启Evil功能时依然有效.
  
  在Emacs里面,一个框可以分割出多个窗口,多个窗口可以显示同一个或者不同Buffer,但是一个窗口只能属于一个Frame。一个窗口同时也只能显示一个Buffer,但是同时打开两个窗口也能显示一个Buffer的不同部分,这两个窗口是同步的,就是说如果在一个窗口中对Buffer做了修改,在另一个窗口中可以立即表现出来。但在一个窗口中移动光标之类的操作不会影响另一个窗口。多缓冲中有当前缓冲这个概念,同样对于多窗口也有当前窗口,对于当前选中的窗口其Mode Line相对于其它窗口颜色会深一些。
 
  
 
===显示窗口===
 
<span style="color:red;">
 
  
  命令<span style="color:red;">C-x 2  (split-window-vertically) </span>垂直拆分窗口,就是把一个窗口上下等分为两个,拆分出来的窗口默认是显示当前Buffer。可以多次使用这个命令,会把一个窗口不停的两等分。
+
</pre>
        对应也有水平拆分窗口的命令C-x 3 (split-window-horizontally),这两个命令也可以混合使用,如果你屏幕够大画个迷宫出来也不是不可能的。拆分命令还可以加参数,比如M-5 C-x 2就是说上面那个窗口只占5行,其余的位置都给下面的窗口。
+
 
<pre>
 
  C-x o (other-window) 可以在多个窗口中切换,从上到下一个一个的来。使用参数来控制选中下面第几个窗口,想往回选的话参数设为负数。
 
  
  C-M-v (scroll-other-window),用来滚动下一个窗口。
+
以实际问题作为切入点
  
  上一章我们看到有些命令加了C-x 4这个前缀,这一类命令都是用来操作多窗口的。
+
努力能很快得到回报, 你会越学越有乐趣, 进入感情上的正反馈.
  
  C-x 4 b bufname (switch-to-buffer-other-window) 在另一个窗口打开缓冲。
+
要成为高手, 兴趣是最重要的.
  
  C-x 4 C-o bufname (display-buffer) 在另一个窗口打开缓冲,但不选中那个窗口。
+
以我为例, 我急需 GTD 的工具, 而 Emacs 的 Org-mode 是同类软件中最好的 (没有之一). 用 Org-mode 节省了时间后, 我对 Emacs 爱屋及乌, 兴趣高涨了 100 倍.
  
  C-x 4 f filename (find-file-other-window) 在另一个窗口打开文件。
+
反面例子是啃Lisp教程开始Emacs之旅, 坚持下来的人寥寥无几.
  
  C-x 4 d directory (dired-other-window) 在另一个窗口打开文件夹。
+
待解决的问题设定优先度 关键在于理性地考虑你最迫切需要解决的一个问题.以这个问题作为出发点, 除此之外都可以妥协.
  
  C-x 4 m (mail-other-window) 在另一个窗口写邮件。
+
虽然 Emacs 无所不能, 但是饭也要一口一口吃. 有时退一步等于进两步.
  
  C-x 4 r filename (find-file-read-only-other-window) 在另一个窗口以只读方式打开文件。
+
例如, 我一直以为 Emacs 的中文显示很完美, 搞不懂为什么有人在字体配置上花那么多时间.
  
  这一类的命令默认是垂直拆分窗口。</pre>
+
在接到读者反馈后, 我才明白原来我一直在终端下使用Emacs, 终端软件可以完美显示中文字体, 所以就没 Emacs 什么事了. 需要配置字体的人用的是图形界面 Emacs.
  
===重排窗口===
+
当初只在终端下使用 Emacs 是因为需连接到远程服务器. 我认为这是重点. 甚至为此放弃了漂亮的配色主题 (后来发觉此牺牲毫无必要). 塞翁失马, 由此也避免了图形界面版本的所有问题.
  
  窗口排的密密麻麻看上去肯定不舒服,这时使用    <span style="color:red;">C-x 0 (delete-window) </span> 来关闭当前窗口,需要注意的是窗口和缓冲是两个概念,关闭一个窗口对缓冲,或者我们正在编辑的文件没有任何影响。也可以使用C-x 1 (delete-other-windows) 关闭其它所有窗口。如果想连窗口打开的缓冲一并关掉使用C-x 4 0 (kill-buffer-and-window)。
+
https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/guide-zh.org
<pre>
 
  我们还可以对窗口的大小做些改变:
 
        C-x ^ (enlarge-window)让窗口变得高点,
 
        C-x { (shrink-window-horizontally) 这个是把窗口变窄,变宽的话是C-x } (enlarge-window-horizontally) ,C-x - (shrink-window-if-larger-than-buffer)这个看字面意思就能理解,如果窗口比缓冲大就缩小点,C-x + (balance-windows)这个命令和前面那个没有任何关系是将所有窗口变得一样高。
 
  
  最后再说一个在窗口中切换的命令,有时候窗口开的太多自己也记不住顺序,使用C-x o就会很麻烦。有一类命令能让你在上下左右切换当前窗口,M-x windmove-right 就是移到右边那个窗口,对应的"left","up“, "down",向四个方向都能移。</pre>
+
==后记==
 +
<span style="color:green;">后面要把常用的这些常用快捷键写成一个短小的总结卡</span>
 +
=== 模式键定义===
  
===小结 ===
+
四个模式键:C—-Ctrl;M—-Alt;s—-Super(Win);S—-Shift
<pre>
 
  
 +
比如:
  
 +
C-x:表示按下ctrl键,然后按下x键。
  
+
C-x  C-c:表示按下ctrl,然后按下x键,松开后再按下c键。
  
 +
C-x k:表示按下ctrl,同时按下x和k键。
  
  
 +
=== 最常用命令 eg页开头或结尾===
  
 +
<span style="color:red;">M-f 与 M-b  </span> 在行内, 前后大步移动光标,步进单位对于英文而言是单词的长度,对于中文而言是两个标点符号的间距。
  
 +
<span style="color:red;">M-{ M-} </span> 段开头或结尾
  
</pre>
+
<span style="color:red;">C-x [  C-x ] or ESC <  ESC > </span>页开头或结尾 
  
 +
<span style="color:red;">C-a 或 C-e </span> 对于英文文本,若将光标快速移到行首或行尾,标准按键是 C-a 或 C-e 但是对于中文而言,这对按键有着将光标被移到段首或段尾的奇异效果……如果偶尔忘记,用 Home或End 键也未尝不可。
  
[https://www.cnblogs.com/robertzml/archive/2010/03/24/1692737.html学习Emacs系列教程(十):多窗口]
+
<span style="color:red;">M-a 与 M-e </span> 则分别可将光标移动到句首或句尾。
  
==org mode==
+
<span style="color:red;"> C-v 或 M-v <span> 如果文档很长,用可实现向下或向上翻屏
Emacs 的 Org-mode 在一定程度上可以替代 OneNote,有些方面甚至更好
+
<pre>
[[Org-mode]]
+
M-< ,移到最开始。
 +
  然后再按几次 C-v 回到这里。
  
==reload configfile==
+
M-> ,移到最末尾。
 +
  然后再按几次 M-v 回到这里。
  
emacs 打开~/.emacs的时候执行命令M-x eval-buffer,就可以使配置文件立即生效。
+
C-x 2 将屏幕划分成两个窗格。这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。
  
===配置===
+
C-x o(“o”指的是“其它(other)”), 将光标转移到下方的窗格。
<pre>
+
 
https://github.com/gabrielelanaro/emacs-for-python
+
C-x 1  (在上方窗格里)输入 C-x 1 关掉下方窗格。
https://github.com/jorgenschaefer/elpy
 
http://www.jesshamrick.com/2012/09/18/emacs-as-a-python-ide/
 
https://realpython.com/blog/python/emacs-the-best-python-editor
 
  
*day1
+
C-x C-f        寻找文件。
pass 20170610
+
C-x C-s        保存文件。
有空再详细的再看
 
  
:
+
打开菜单 用F10或者M-` (就是键盘输入区左上角的那个键)就可以呼出菜单了
记得要添加在公司作的相关的emacs 笔记
 
  
 +
emacs-gtk 显示菜单 etc  option -->show/hide 这样在 emacs-gtk 就有菜单了 而em还是没有的 非常 好
 +
</pre>
 +
====Emacs的基本概念====
 +
<pre>
 +
C-x C-v find-alternate-file 读取另一个文件来代替刚才诗篇的那一个。
 +
C-x i 输入文件。
 +
C-x C-f find-file 查找文件并且打开它。
 +
C-x C-s save-buffer 保存文件.
 +
C-x C-w write-file 把缓冲区内容写入一个文件。
 +
M-x recentf-open-files, 应该是默认绑定到C-x C-r.
 +
C-x C-c save-buffers-kill-emacs 退出emacs
 +
C-h help-command 进入emacs的在线帮助系统。
 +
</pre>
  
=======
+
==== 文件编辑====
这几天常用的几个重要使命
+
<pre>
 
 
  
 +
ESC x goto-line n RET 把光标移动到文件的第N行
 +
ESC x goto-char n RET 把光标移动到文件的第N个字符
 +
ESC 500 C-n 光标移动500行,ESC n 是重复执行命令的意思。
 +
C-u C-u 等于4, C-u C-u 等于16次重复的意思。
 +
C-x u 撤消; 同命令还有: C-_ C-/
 +
ESC - C-k 删除行首到光标位置之间的东西。
 +
ESC d kill-word 删除光标后面的单词。
 +
ESC DEL backward-kill-word 删除光标前面的单词。
 +
ESC k kill-sentence 删除光标后面的句子。
 +
ESC y 恢复上次删除的操作内容。
 +
C-t transpose-chars 交换两个字符的位置。
 +
ESC t transpose-words 交换两个单词的位置。
 +
C-x C-t transpose-lines 交换两个文本行的位置。
 +
ESC c capitalize-word 把单词的首字母改为大写。
 +
ESC u upcase-word 把单词的字母全部改为大写。
 +
ESC l downcase-word 把单词的字母全部改为小写。
 +
ESC - ESC c negtive-argument; capitalize-word 把前一个单词的首字母改为大写。
 +
ESC - ESC u negtive-argument; upcase-word 把前一个单词的字母全部改为大写。
 +
ESC - ESC l negtive-argument; downcase-word 把前一个单词的字母全部改为小写。
 +
ESC x overwirte-mode RET 文本的改写模式,再次输入则取消。实际上直接输入: ESC x ov 用TAB键可以补全。
 +
C-x C-w 文件另存为.
  
  
重要快捷键(Important)
+
C-x C-r  打开最近打开过的文件 M-x recentf-open-files, 应该是默认绑定到C-x C-r. https://www.emacswiki.org/emacs/RecentFiles
C-k 删除一行
+
</pre>
C-g 停止当前运行/输入的命令
 
C-x u 撤销前一个命令
 
  
c-j 下称整个文件内容
+
==== 使.emacs立即生效====
 +
<pre>
 +
ESC x eval-current-buffer
  
emacs 菜单 用F10或者M-`。
+
</pre>
 +
==== 查找和替换操作====
  
ctrl+g q 退出 快速说明
+
[https://www.cnblogs.com/robertzml/archive/2010/03/03/1675870.html 学习Emacs系列教程(八):查找替换 ]
 +
<pre>
 +
C-s isearch-forward 向前递增查找
 +
C-r isearch-backward 向后递增查找
 +
C-s C-w 可以把从光标位置到下一个标点符号或者空格符之间的文本都复制到查找字符串里面去。
 +
C-s C-y 光标位置到行尾之间的文本都复制到查找字符串里面去.
 +
C-s ESC y 可以把删除环里面的文本复制到查找字符串去。而且在用过这条命令之后,还可以用 ESC p ESC n 进来上下条目查看。
 +
C-s RET C-w word-search-forward 单词查找。
 +
C-r RET C-w 单词查找。
 +
ESC x replace-string RET recieve RET receive RET Emacs将从光标位置开始,把文件里面所有出现查找字符串(recieve)的地方都替换掉。如果想对整个文件做替换,则使用命令之前移动 ESC < 位置即可。
 +
</pre>
 +
===== 查询与替换 (ESC % recieve RET receive RET)=====
 +
<pre>
  
编辑器内显示行号可使用 M-x linum-mode 来开启。
+
基本查找与替换操作    2021 0228                                                                                                                                                 
M-x 然后在最下面 输入 linum-mode
+
                                                                                                                                                                           
not try
+
  M-x replace-string RETURN                                                                                                                                                 
q
+
  输入查找字符串 回车  ,再输入替换字符串(new) 回车                                                                                                                         
 +
  如果想整个文件 全局查找 替换  在用这个命令之前用 ESC <  or home
  
获取帮助
+
ESC % 开始查询-替换操作。
ctrl+h  k  要查看的快捷键盘
+
SPACE 或 y 用新字符串替换查询字符串searchstring, 然后前进到下一个位置。
 +
DEL 或 n 不替换; 前进到下一个位置。
 +
. 在当前位置做替换后退出查询-替换操作。
 +
, 替换并显示替换情况(再按空格键或 "y" 后才移动到下一个位置。)
 +
! 对后面的文件内容全部进行替换,不再提问是否要进行替换。
 +
^ 返回上一次进行了替换的位置。
 +
RET 或 q 退出查询-替换操作。
 +
C-r 进入递归编辑状态。
 +
C-w 删除此处内容并进入递归编辑状态。
 +
ESC C-c 退出递归编辑状态,继续完成查询-替换操作。
 +
C-] 退出递归编辑状态和查询-替换操作。
 +
</pre>
  
 +
[https://www.cnblogs.com/robertzml/archive/2010/03/03/1675870.html  学习Emacs系列教程(八):查找替换]
  
 +
[https://blog.csdn.net/a593796769/article/details/8936072 Emacs查找替换字符串]
  
 +
=====删除命令 =====
 +
<pre>
 +
C-d 向前detele字符
 +
DEL 向后detele字符
 +
ESC d 向前delete到字首
 +
ESC DEL 向后delete到字尾
 +
ESC 0 C-k 向前delte到行首
 +
C-k 向后delete到行尾
 +
C-x DEL 向前delete到句首
 +
ESC k 向后delete到句尾
 +
ESC - C-M-k 向前delete到表达式首部
 +
C-M-k 向后delete到表达式尾部
 +
C-w kill 区域
 +
</pre>
 +
=====marking =====
 +
<pre>
 +
C-SPC (C-@) 标记当前位置
 +
C-x C-x 以字符为单位使用移动命令动态标记区域
 +
ESC @ 以字为单位使用移动命令动态标记区域
 +
ESC h 标记一段
 +
C-x C-p 标记一页
 +
ESC C-@ 标记一个表达式
 +
ESC C-h 标记一个函数
 +
C-x h 标记整个缓冲区
 +
</pre>
  
学习基础 Elisp
+
=====缩进格式=====
 +
<pre>
 +
TAB 缩进当前行(与模式有关)
 +
ESC C-\ 缩进区域(与模式有关)
 +
ESC C-q 缩进表达式(与模式有关)
 +
C-x TAB Indent region rigidly arg. Columns
 +
C-o 在光标后插入一个新的行(有点像vi的'o')
 +
ESC C-o 静态地将一行下移
 +
C-x C-o 删除光标附近的空行(留下一行)
 +
ESC ^ 与上一行合并成一行
 +
ESC \ 删除光标附近的所有空格
 +
ESC SPC 删除光标附近的空格(留下一格)
 +
ESC q Fill paragraph
 +
C-x f Set fill column
 +
C-x 设置每一行开始的前缀
 +
</pre>
 +
===== 递增查找=====
 +
    在查找过程之中想取消查找可以需要按 C-g C-g .
 +
    用复制办法得到的查找字符串会把原文中的大写字母都转换成小写字母。
  
ctrl+x  ctrl +b
+
====shell Emacs 终端 ====
 +
要尝试 Emacs 终端,输入 Alt+x(用 Emacs 符号表示就是 M-x),然后输入 shell,然后按回车。
 +
==== 搜索 ====
 +
增量搜索
 +
C-s 正向搜索
  
 +
C-r 反向搜索
  
C-x o:把光标在屏幕上的窗口间进行切换。记忆方法:其它(Other)窗口。
+
C-M-s使用正则表达式正向搜索
  
然后选择 *scratch*
+
C-M-r 使用正则表达式反向搜索
  
运算 C-X  c - E
+
M-p 选择上一个搜索结果
  
插件管理
+
M-n 选择下一个搜索结果
  
c-x  o  other window  install
+
RET 退出搜索并停留在当前搜索到的位置
  
company
+
C-g 中止当前搜索
f2 打开配置文件
 
  
org-mode
+
===save and exit ===
 +
<pre>
 +
C-x C-f    按提示输入文件名,如果文件不存在则新建文件,如果文件存在则打开文件
 +
C-x C-s    保存
 +
C-x C-w    按提示输入文件名,另存为
 +
M-x customize-variable 回车 make-backup-files 回车    关掉文件备份
  
major mode and minor mode (C-h m)
 
  
 +
C-x C-c:退出Emacs
  
 +
C-x C-s:保存当前buffer
  
 +
C-x C-w  write-file
 +
</pre>
  
;;evan配置文件
+
===命令的中止和 销===
;; ~/.emacs 行号什么 的 我是加到这个文件生效的
+
<pre>
;;  ~/.emacs.d/emacs
+
C-g keyboard-quit 放弃当前命令
 +
C-x u  advertise-undo  undo上一次 可多次用
  
;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
 
(tool-bar-mode -1)
 
  
;; 关闭文件滑动控件
+
</pre>
(scroll-bar-mode -1)
+
==== 备份文件====
 +
想恢复到的最简单的就是直接编辑备份文件
  
;; 显示行号 试过 这个一定有效果
+
eg  emacs  test~  ; C-x C-w  test TETURN 把他保存为一个正式文件
(global-linum-mode 1)
 
  
;; 更改光标的样式(不能生效,解决方案见第二集)
+
===选中 复制 黏贴===
(setq cursor-type 'bar)
+
<pre>
 +
把光标移动到区域的首字符
 +
键入C-@(即ctrl+shift+2),以设置标记 有时是ctrl+shife +@
 +
把光标移动到区域的最后一个字符
 +
键入M(alt)-w,拷贝这个选定区域到粘贴板(剪切是C-w)
 +
用光标定位将要粘贴内容的地方,然后键入C-y ,拷贝成功。
  
;; 关闭启动帮助画面
+
C-@ mark --> c-f or c-n --> alt-w --> c-y
(setq inhibit-splash-screen 1)
 
  
;; 关闭缩进 (第二天中被去除)
+
C-w 剪切标记到当前光标所在处的文本  ESC w 复制文本
;; (electric-indent-mode -1)
 
  
;; 更改显示字体大小 16pt
+
C-d 删除一个字符
;; http://stackoverflow.com/questions/294664/how-to-set-the-font-size-in-emacs
+
ESC h 选中一个段落
(set-face-attribute 'default nil :height 160)
 
  
;; 快速打开配置文件
+
C-x C-x 检查一下位置                                                               
(defun open-init-file()
+
C-w  删除文本块 
  (interactive)
 
  (find-file "~/.emacs.d/init.el"))
 
  
;; 这一行代码,将函数 open-init-file 绑定到 <f2> 键上
+
也可以可怕的用C-k 先 剪切 然后再来两个 C-y 一个是为开始的切还原 ,另外一个是你要CP去的地方
(global-set-key (kbd "<f2>") 'open-init-file)
+
</pre>
  
; 开启全局 Company 补全
+
===文本块的选取和粘贴 ===
(global-company-mode 1)
+
<pre>
 +
C-w 删除文本块                                                                     
 +
C-y  yank 粘贴                                                                     
 +
ESC W  or  C-INSERT    复制文本块                                                 
 +
ESC h  标记段落                                                                     
 +
C-x C-p  标记页面  mark-page                                                       
 +
C-x  h 标记整个缓冲区                                                               
 +
ESC y  在用过C-y 命令以后粘贴更早删除的文本
 +
C-X u  反选 其实就是undo
 +
</pre>
  
;; 作者用的  是t
+
===交换位置===
3(global-company-mode t)
+
字符交换 光标在第二个字符上 C-t                                                     
 +
                                                                                     
 +
文本交换    光标在两个单词之间 ESC t                                               
 +
                                                                                     
 +
交换两个文本行 光标在第二个文本行的任意位置 C-x C-t
  
 +
===改变大小写 ===
 +
                                                                                   
 +
第一个字母改为大写  capialize  ESC  c                                             
 +
全部改为大写 upcase    ESC u                                                       
 +
全改为小写  ESC  l (不是 sn 1) 如果在单词中间 可以把前半部分改为小写               
 +
                                                                                     
 +
加ESC - 再加上面的命令  只对 光标之前的操作
  
;; ~/.emacs 生效的居然是这个 2018
+
===文本改写模式===
;; 在 mode line 上显示行列号
+
  文本改写模式                                                                       
(setq column-number-mode 1)
+
  insert  overwrite mode   不要时 为  ESC x overwrite-mode RETURN                   
(setq line-number-mode 1)
+
可用自动补足功能啦 不用全打 tab                                                     
 +
                                                                                     
 +
文件内容取代缓冲区                                                                 
 +
  ESC  x  revert-buffer RETURN
  
;;显示列号
+
===查找===
(setq column-number-mode t)
+
<pre>
 +
搜索/替换(Seach/Replace)
 +
C-s 向后搜索
 +
C-r 向前搜索</pre>
  
;; 显示行号
+
[https://www.zhihu.com/question/23456580 GNU emacs24 中如何剪切复制多行文本]
(global-linum-mode 1)
 
  
;; 取消滚动栏,工具栏
+
===替换===
(tool-bar-mode 0)
+
<pre>
(menu-bar-mode 0)
+
按M - %启动查找替换(M is alt on debian),输入要被替换的词,回车,然后输入要替换的词,再回车。
(scroll-bar-mode 0)
+
被替换的词会高亮起来,这时,输入y替换并跳到下一个,输入n忽略并跳到下一个,输入q结束,输入!替换剩下的全部。
  
;; 关闭emacs启动时的页面
+
一些常用的选项:
(setq inhibit-startup-message 1)
+
  C - g 中断查找替换过程。
(setq gnus-inhibit-startup-message 1)
+
  ^ 返回上一个替换点,按y继续下一个,如果不想替换上一个的话,用^返回到上一个,然后按 C - r 进入编辑,修改完后按C - M - c退出继续下一个。
;; 以 y/n代表 yes/no
+
  C - l 使当前匹配显示在文档中间。
(fset 'yes-or-no-p 'y-or-n-p)
+
  C - r 进入修改。
;;; 设置备份策略
+
</pre>
(setq make-backup-files t)
+
[https://www.cnblogs.com/robertzml/archive/2010/03/03/1675870.html 学习Emacs系列教程(八):查找替换]
(setq kept-old-versions 2)
+
 
(setq kept-new-versions 2)
+
[https://www.cnblogs.com/skyhacker/archive/2012/01/03/2311437.html emacs查找替换]
(setq delete-old-versions t)
+
 
(setq backup-directory-alist '(("" . "~/.emacsbackup")))
+
 
 +
===书签===
 +
<pre>
 +
 
 +
书签
 +
</pre>
  
;; 公共插件配置
+
===DEL===
;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
+
<pre>
(require 'package)
 
(add-to-list 'package-archives
 
            '("melpa" . "http://melpa.milkbox.net/packages/") t)
 
(package-initialize)
 
  
;;内置的package管理,emacs24以上的版本有用
+
C-d  是对字符操作                                                 
(require 'package)
+
ESC  d  对单词操作                                               
;;将melpa仓库地址加入到package-archives这个列表变量里面
+
                                                                   
(add-to-list 'package-archives
+
ESC D 删除光标后面的单词; ESC DEL                                 
    '("melpa" . "http://melpa.org/packages/") t)
+
C-k ;                                                            
;;这个是国内一个elpa仓库镜像,速度更快一些,你懂得
+
ESC K 删除光标后面的句子;C-k del 删除光标前面的句子               
(add-to-list 'package-archives
+
   
    '("popkit" . "http://elpa.popkit.org/packages/") t)
+
</pre>
;;初始化package
+
 
(package-initialize)
+
  从自动保存文件恢复文本
;;更新仓库里面的package
+
  ESC x revover-file RETURN
(when (not package-archive-contents)
 
  (package-refresh-contents))
 
(custom-set-variables
 
;; custom-set-variables was added by Custom.
 
;; If you edit it by hand, you could mess it up, so be careful.
 
  ;; Your init file should contain only one such instance.
 
  ;; If there is more than one, they won't work right.
 
  '(package-selected-packages (quote (company auto-complete autopair))))
 
(custom-set-faces
 
  ;; custom-set-faces was added by Custom.
 
;; If you edit it by hand, you could mess it up, so be careful.
 
;; Your init file should contain only one such instance.
 
;; If there is more than one, they won't work right.
 
)
 
  
  
 +
===对emacs 进行定制 ===
 +
<pre>
 +
emacs -> C-x C-f ~/.emacs -> ESC > 到文件的末尾
 +
 +
 +
(setq default-major-mode 'text-mode)
 +
(add-hook 'text-mode-hook 'turn-on-auto-fill)
 +
;; 文本模式设置为默认的主模式; 文本模式里 启用自动换行                              $
 +
;;  ;;设置缺省主模式是text,,并进入auto-fill次模式.而不是基本模式fundamental-mode  $
 +
;; http://blog.chinaunix.net/uid-25830557-id-317944.html
  
I. 显示时间
 
.emacs加上:
 
(display-time-mode 1) ;; 常显
 
(setq display-time-24hr-format t) ;;格式
 
(setq display-time-day-and-date t) ;;显示时间、星期、日期
 
  
II. 隐藏菜单栏工具栏滚动条
 
.emacs加上:
 
(tool-bar-mode 0)
 
(menu-bar-mode 0)
 
(scroll-bar-mode 0)
 
;;注: 新版改成使用0,旧版使用nil的做法已失效,但 (set-scroll-bar-mode nil) 仍可使用
 
  
III. 关闭启动画面
+
;; 不用再烦 两个 ESC ESC  or  C-x C-u
.emacs加上:
+
(global-unset-key "\e\e")
(setq inhibit-startup-message t)
+
(global-unset-key "\C-x\C-u")
 +
 
  
IV. highlight当前行
 
.emacs加上:
 
(global-hl-line-mode 1)
 
;;;; c mode ;;;;
 
(defvar xgp-cfsi-left-PAREN-old nil
 
  "Command used to input \"(\"")
 
(make-variable-buffer-local 'xgp-cfsi-left-PAREN-old)
 
  
(defun xgp-cfsi-modify-alist (alist term new)
 
  (let ((tl (assq term (symbol-value alist))))
 
    (if tl
 
        (setcdr tl new)
 
      (add-to-list alist (cons term new)))))
 
  
(defun xgp-cfsi (style)
 
  "Deciding whether using CFSI."
 
  (interactive "Style: ")
 
  (c-set-style style)
 
  (setq indent-tabs-mode
 
        nil
 
        c-hanging-semi&comma-criteria
 
        (quote (c-semi&comma-inside-parenlist)))
 
  
  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-open nil)
+
</pre>
  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-close nil)
 
  (local-set-key " " 'self-insert-command))
 
  
(defun xgp-cfsi-erase-blanks ()
+
===移动 ===
  "Erase all trivial blanks for CFSI."
+
<pre>
  (interactive)
 
  (save-excursion
 
    (goto-char (point-min))
 
    (while (re-search-forward "[ \t]+$" nil t)
 
      (replace-match "" nil nil))))
 
  
(defun linux-c-mode()
+
M-< 到文件开头
  (define-key c-mode-map [return] 'newline-and-indent)
+
M->   esc ->shift+> 到文件末尾
  (setq imenu-sort-function 'imenu--sort-by-name)
 
  (interactive)
 
  (imenu-add-menubar-index)
 
   (which-function-mode)
 
  (c-toggle-auto-state)
 
  (c-toggle-hungry-state)
 
  (setq indent-tabs-mode nil)
 
  (xgp-cfsi "linux"))
 
(add-hook 'c-mode-common-hook 'linux-c-mode)
 
;; 代码补全
 
(add-hook 'c-mode-hook 'company-mode)
 
(add-hook 'c++-mode-hook 'company-mode)
 
  
  
# other
 
如果要一次移动若干个单位,可以给命令加上数值参数,通过C-u命令,如:C-u 8 C-n就表示往下移8行,C-u 10 M-e表示往后移10句。不过C-u的参数对C-v和M-v命令而言有特殊,它不表示上下翻多少页,而是表示上下滚动多少行。注意与C-n的区别,C-u 8 C-n表示光标下移8行,屏幕不一定会滚动,而C-u 8 C-v,表示屏幕滚动8行,如果光标没有滚到屏幕外的话,光标位置不变。
 
如果不给C-u带上数值,则默认的值是4。比如C-u C-n就表示下移4行。这一特性还可以重复使用C-u C-u C-p就表示上移16行,C-u C-u C-u C-f表示右移64个字符。
 
前面讲了用C-g可以中断当前的命令,这次再补充一点,有时候C-g不灵时,可以按三次<Esc>键达到相同的目的。
 
</pre>
 
  
====kali本本配置====
+
以下命令在翻页浏览时相当有用:
<pre>
 
;;cat ~/.emacs
 
  
;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
+
C-v    向前移动一屏
(tool-bar-mode 0)
+
M-v    向后移动一屏
(menu-bar-mode 0)
+
C-l    重绘屏幕,并将光标所在行置于屏幕的中央
(scroll-bar-mode 0)
+
(注意是 CONTROL-L,不是 CONTROL-1)
(tool-bar-mode -1)
 
  
  
 +
整屏的移动很有用,但是如何在文字中精确定位呢?
  
(setq column-number-mode t)
+
有几种方式可以选择。用方向键当然可以,不过更有效率的方法是保持双手位于
(setq column-number-mode 1)
+
主键盘区,然后使用 C-p 、 C-b 、 C-f 和 C-n 这四个命令。它们的功能和方
(setq line-number-mode 1)
+
向键是一样的,如下图所示:
;; 显示行号
+
 
(global-linum-mode 1)
+
                            上一行 C-p
;; 在 mode line 上显示行列号
+
                                  :
(setq column-number-mode 1)
+
                                  :
(setq line-number-mode 1)
+
            向左移 C-b .... 目前光标位置 .... 向右移 C-f
 +
                                  :
 +
                                  :
 +
                            下一行 C-n
 +
p-previous,n-next,b-backward,f-forward。
 +
>> 用 C-n 或 C-p 将光标移到上图的中央。
 +
  按 C-l,整幅图会被显示在屏幕的中央。
  
;;显示列号
 
(setq column-number-mode t)
 
  
;; 显示行号
 
(global-linum-mode 1)
 
  
;; 取消滚动栏,工具栏
+
移动的单位            向后        向前
(tool-bar-mode 0)
+
字符                  C-b          C-f
(menu-bar-mode 0)
+
 
(scroll-bar-mode 0)
+
 
  
;; 关闭emacs启动时的页面
+
当前行开头或结尾      C-a          C-e
(setq inhibit-startup-message 1)
 
(setq gnus-inhibit-startup-message 1)
 
;; 以 y/n代表 yes/no
 
(fset 'yes-or-no-p 'y-or-n-p)
 
;;; 设置备份策略
 
(setq make-backup-files t)
 
(setq kept-old-versions 2)
 
(setq kept-new-versions 2)
 
(setq delete-old-versions t)
 
(setq backup-directory-alist '(("" . "~/.emacsbackup")))
 
  
;; 公共插件配置
+
C-n
;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
 
(require 'package)
 
(add-to-list 'package-archives
 
            '("melpa" . "http://melpa.milkbox.net/packages/") t)
 
(package-initialize)
 
  
;;内置的package管理,emacs24以上的版本有用
+
M-f 如果你嫌一个字符一个字符地挪光标太慢,你还可以一个词一个词地跳。M-f
(require 'package)
+
(META-f) 可以将光标往前移动一个词,而 M-b 则是往后移。【这里的“词”指
;;将melpa仓库地址加入到package-archives这个列表变量里面
+
英文单词,对中文来说,则是指移动到下一个标点符号。】
(add-to-list 'package-archives
+
 
    '("melpa" . "http://melpa.org/packages/") t)
+
类似的惯例在“行”与“句子”之间也同样适用:C-a 和 C-e 可以将光标移动到
;;这个是国内一个elpa仓库镜像,速度更快一些,你懂得
+
“一行”的头部和尾部;而 M-a(和terminator冲突) 和 M-e 则将光标移动到“一句”的头部和尾部。
(add-to-list 'package-archives
 
    '("popkit" . "http://elpa.popkit.org/packages/") t)
 
;;初始化package
 
(package-initialize)
 
;;更新仓库里面的package
 
(when (not package-archive-contents)
 
  (package-refresh-contents))
 
(custom-set-variables
 
;; custom-set-variables was added by Custom.
 
;; If you edit it by hand, you could mess it up, so be careful.
 
;; Your init file should contain only one such instance.
 
;; If there is more than one, they won't work right.
 
'(package-selected-packages (quote (company auto-complete autopair))))
 
(custom-set-faces
 
;; custom-set-faces was added by Custom.
 
;; If you edit it by hand, you could mess it up, so be careful.
 
;; Your init file should contain only one such instance.
 
;; If there is more than one, they won't work right.
 
)
 
  
;;;; c mode ;;;;
 
(defvar xgp-cfsi-left-PAREN-old nil
 
  "Command used to input \"(\"")
 
(make-variable-buffer-local 'xgp-cfsi-left-PAREN-old)
 
  
(defun xgp-cfsi-modify-alist (alist term new)
+
这里对简单的光标移动命令做一个总结,其中也包括了整词和整句的移动:
  (let ((tl (assq term (symbol-value alist))))
 
    (if tl
 
        (setcdr tl new)
 
      (add-to-list alist (cons term new)))))
 
  
(defun xgp-cfsi (style)
+
         C-f    向右移动一个字符
  "Deciding whether using CFSI."
+
         C-b    向左移动一个字符
  (interactive "Style: ")
 
  (c-set-style style)
 
  (setq indent-tabs-mode
 
        nil
 
         c-hanging-semi&comma-criteria
 
         (quote (c-semi&comma-inside-parenlist)))
 
  
  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-open nil)
+
        M-f    向右移动一个词【对中文是移动到下一个标点符号】
  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-close nil)
+
        M-b    向左移动一个词【对中文是移动到上一个标点符号】
  (local-set-key " " 'self-insert-command))
 
  
(defun xgp-cfsi-erase-blanks ()
+
        C-n    移动到下一行
  "Erase all trivial blanks for CFSI."
+
        C-p    移动到上一行
  (interactive)
+
 
  (save-excursion
+
        C-a    移动到行首
    (goto-char (point-min))
+
        C-e     移动到行尾
     (while (re-search-forward "[ \t]+$" nil t)
 
      (replace-match "" nil nil))))
 
  
(defun linux-c-mode()
+
        M-a    移动到句首
  (define-key c-mode-map [return] 'newline-and-indent)
+
        M-e    移动到句尾
  (setq imenu-sort-function 'imenu--sort-by-name)
 
  (interactive)
 
  (imenu-add-menubar-index)
 
  (which-function-mode)
 
  (c-toggle-auto-state)
 
  (c-toggle-hungry-state)
 
  (setq indent-tabs-mode nil)
 
  (xgp-cfsi "linux"))
 
(add-hook 'c-mode-common-hook 'linux-c-mode)
 
;; 代码补全
 
(add-hook 'c-mode-hook 'company-mode)
 
(add-hook 'c++-mode-hook 'company-mode)
 
  
;; py
 
(setq tab-width 4)
 
(set-variable 'python-indent-offset 4)
 
;;(set-variable 'python-indent-guess-indent-offset nil)
 
</pre>
 
  
  
[https://blog.csdn.net/qq_40875035/article/details/82883325 emacs配置]
+
这里还要介绍两个重要的光标移动命令:M-< (META 小于号)可以将光标移动到
 +
所有文字的最开头;M-> (META 大于号)可以将光标移动到所有文字的最末尾。
  
== 不错的配置 c什么都包括了==
+
注意,在大部分键盘上,小于号(<)需要用上档键(Shift)来输入,所以在这
<pre>
+
些键盘上你应该用 Shift 键来输入 M-<,如果不按 Shift 键,你输入的会是
mv ~/.emacs.d ~/.emacs.d.bak
+
M-comma(META 逗号)。
git clone --depth 1 https://github.com/seagle0128/.emacs.d.git ~/.emacs.d
 
</pre>
 
  
有空好好的看一下
+
>> 试一试 M-< ,移到本快速指南的最开始。
https://github.com/seagle0128/.emacs.d
+
  然后再按几次 C-v 回到这里。
  
 +
>> 试一试 M-> ,移到本快速指南的最末尾。
 +
  然后再按几次 M-v 回到这里。
  
  
=== c 常用命令===
+
如果你的键盘上有方向键的话,也可以用它们来移动光标。不过我们有三个理由
emacs中很多命令都对C语言格式支持,补充几个命令M-x c-mode  当无法识别C语法格式的文件,可以强制打开C mode语法高亮C-M-p  跳转到}或)匹配的括号C-M-n  跳转到(或{匹配的括号M-x indent-region 自动缩进选定的区域C-c C-c 注释掉整个区域C-u C-c C-c 取消注释C-c C-u  跳转到前面的一个#ifdef C-c C-n   跳转到宏的开头或结尾C-c C-e 扩展宏编译排错:C-x ` (出错信息中)下一个错误,一个窗口显示错误信息,另一个显示源码的出错位置C-c C-c 转到出错位置调试:启动gdb调试器后,光标在源码文件缓冲区中时:C-x SPC 在当前行设置断点gdb在emacs中调用调试并不完美,有时候会出一些异常的情况。工作中如果emacs作为IDE用的话,一般在远程终端字符环境下更合适,如果作为专业的图形化IDE,codeblock等更合适,eclipse+CDT也是一种选择。
+
推荐你学习 C-b 、C-f 、C-n 、和 C-p:(1)它们在任何键盘上都能用。(2)
 +
当你熟练使用 Emacs 之后,你会发现用这些组合键比用方向键要快得多,因为你
 +
的手不需要离开打字区。(3)一旦你习惯了使用这些组合键,你也可以很容易地
 +
适应其它更高级的光标移动命令。
  
=== c 配置文件===
+
大部分的 Emacs 命令接受数字参数,并且对于多数命令而言,这些数字参数的作
 +
用是指定命令的重复次数。为一个命令指定数字参数(也就是重复次数)的方法
 +
是:先输入 C-u,然后输入数字作为参数,最后再输入命令。如果你有META (或
 +
EDIT 或 ALT)键,那么还有另一种办法:按住 META 键不放,然后输入数字。不
 +
过我们还是建议你用 C-u,因为它在任何终端机上都能用。这种数字参数也称为
 +
“前缀参数”,意思是说这个参数是先于使用它的命令而输入的。
 +
 
 +
举例来说, C-u 8 C-f 会向前移动 8 个字符。
 +
</pre>
 +
 
 +
===缓冲区、窗口与窗框===
 
<pre>
 
<pre>
;; 配置文件 for  c  or c ++
 
;; cat ~/.emacs
 
  
;; 在 mode line 上显示行列号
+
2018年 01月 23日 星期二 21:03:14 CST 学习这个  我去 过了几年了才看起这个 20210129
(setq column-number-mode 1)
+
 
(setq line-number-mode 1)
+
eg  C-x 2  上下切出两个窗口  然后 alt-1 alt-2 两个窗口之间来回
 +
    C-x 3 : 左右分割
 +
 
 +
最大化 1 一个 如何还原回原来  暂时只能用 C-x  b 找cache list
 +
 
 +
窗口 最常用命令哦
  
;;显示列号
+
    C-x 3 : 左右分割
(setq column-number-mode t)
+
    C-x 2 : 上下分割
 +
    C-x 1 : 将当前窗口变为最大
 +
    C-x 0 : 关闭当前窗口
  
;; 显示行号
+
    C-x 0:关闭当前窗口
(global-linum-mode 1)
+
    C-x 1:关闭当前窗口以为的其他窗口
 +
    C-x 2: 水平分割窗口(上下排列) 或者  emacs file1 file2
 +
    C-x 3:垂直分割窗口 ,左右排列
 +
    C-x 4 0:关闭当前窗口和缓冲
 +
    C-x 4 b:在另一窗口打开缓冲(如果当前只有一个窗口将分割一个新窗口)
 +
    C-x 4 f:在另一窗口打开文件(…同上)
 +
    C-x o:在多个窗口中循环切换  o is othre 多窗体 有是是有显示窗口号的 选择 1 , 2 ,3 对应的号就进入了
  
;; 取消滚动栏,工具栏
 
;;(tool-bar-mode 0)
 
;;(menu-bar-mode 0)
 
;;(scroll-bar-mode 0)
 
  
;; 关闭emacs启动时的页面
+
    C-x C-f   打开文件并将其读到缓冲区中 如果提示只读  进去选择就行了 哈哈  .. up  Wednesday October 12 2022
(setq inhibit-startup-message 1)
+
 
(setq gnus-inhibit-startup-message 1)
+
Emacs 启动后,窗框中默认只有一个窗口,但是使用 C-x 1 或 C-x 2 可以将其水平或竖直一分为二,这个分割过程可以无限的进行下去。每次被分割的窗口都是输入光标所在的窗口(也称为被激活的窗口)。使用 C-x o 可以在多个窗口中跳转。
;; 以 y/n代表 yes/no
 
(fset 'yes-or-no-p 'y-or-n-p)
 
;;; 设置备份策略
 
(setq make-backup-files t)
 
(setq kept-old-versions 2)
 
(setq kept-new-versions 2)
 
(setq delete-old-versions t)
 
(setq backup-directory-alist '(("" . "~/.emacsbackup")))
 
  
;; 公共插件配置
+
由于 Emacs 在拆分窗口时,默认是水平或竖直均分,所以如果你希望将某个窗口调的宽一些,可 C-x } ;要使之窄一些,可 C-x { ;要使之高一些,可 C-x ^,但是要使之矮一些,貌似只能是激活该窗口下方的窗口,然后让下方的窗口高一些。这些窗口大小的调整方法,每次只能使得窗口的尺寸增大或减小一个字符的宽度或高度。如果你不想多次输入像 C-x ^ 这样的命令,那么可以用 C-u n C-x ^ 这样的组合键,其中 n 表示你要重复执行 C-x ^ 这样的命令 n 次。例如,要将当前窗口的高度增加 5 个字符的高度,只需 C-u 5 C-x ^ 即可。
;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
 
(require 'package)
 
(add-to-list 'package-archives
 
            '("melpa" . "http://melpa.milkbox.net/packages/") t)
 
(package-initialize)
 
  
 +
C-u 最好要牢记,它的职能就是给某个组合键所绑定的 Emacs Lisp 函数传递一个参数值。 C-u 5 C-x ^ 表示向 C-x ^ 所绑定的 Emacs Lisp 函数传递参数值 5 ,而这个函数接受这个参数值之后,就会将窗口的高度增加 5 个字符的高度。
 +
  要查看按键被绑定到了哪个 Emacs Lisp 函数,只需 C-h k <RET> 按下你要查询的键 。 <RET> 表示回车键
  
</pre>
+
如果觉得窗口太多,想关掉一些,那么关闭被激活的窗口的组合键是 C-x 0 。如果是图形界面的 Emacs,只需要鼠标右键点击窗口的模式行即可将该窗口关闭。我的建议是:能用键盘就不要用鼠标。
  
[https://segmentfault.com/a/1190000003878553 Emacs 中 C/C++ 编程基本环境配置2018]
+
要在某个窗口中打开或新建一个文件,可 C-x C-f 文件路径。
  
[https://blog.csdn.net/cuijianzhongswust/article/details/10313865 将Emacs配置成一个C/C++的IDE编程环境]
+
为了节省内存占用,请尽量使用 Emacs 的多窗口模式,不要打开一个又一个 Emacs
  
==from tour ==
 
<pre>
 
#这些笔记完全作到wiki么 会不会太多 而没有重点的感觉 
 
  
* 如果 EMACS 失去响应(IF EMACS STOPS RESPONDING)
+
编辑缓冲区的删除
-----------------------------------------------
 
如果 Emacs 对你的命令失去响应,你可以用 C-g 来安全地终止这条命令。C-g
 
也可以终止一条执行过久的命令。
 
  
C-g 还可以取消数字参数和只输入到一半的命令。
+
C-x k    输入缓冲区名称,默认当前缓冲区关闭  命令名是kill-buffer
  
>> 输入 C-u 100 设定一个值为 100 的数字参数,然后按 C-g。
+
ESC x kill-some-buffers 依次删除
  现在再按 C-f,光标应该只会移动一个字符,因为你已经用 C-g 取消了参数。
+
M(alt)-x kill-some-buffers    依次列出所有缓冲区,逐个询问是否要删除
  
如果你不小心按了一下 <ESC>,你也可以用 C-g 来取消它。
+
缓冲区列表,切换,关闭
【这个说法似乎有问题,因为按照这个按键顺序输入的应该是 C-M-g。
+
C-x C-b    列出缓冲区,每个编辑中的文件都放在一个缓冲区中
取消 <ESC> 的正确做法是再连按两次 <ESC>。】
 
  
  
* 插入与删除(INSERTING AND DELETING)
+
缓冲区切换
--------------------------------------
+
C-x b    输入缓冲区名称并且切换过去
  
,大部分的 Emacs 命令都可以指定重复次数,这其中也包括输入字符的
+
当我们启动Emacs的时候,会产生*Messages*和*scratch*两个缓冲区。*Messages*是用来显示从Emacs启动开始的所有命令信息的缓冲区,*scratch*是草稿缓冲区,我们可以在其中乱写东西,但不会被保存,除非用户使用C-x C-W命令。
命令。重复执行输入字符的命令实际上就是输入多个相同的字符。
 
  
>>  试试 C-u 8 *,这将会插入 ********。
+
窗口和缓冲区切换
  
好,现在你应该已经掌握了最基本的的文本插入和修改功能,其实删除还可以
 
“以词为单位”进行,下面是一个关于“删除”操作的小结:
 
  
        <DEL>        删除光标前的一个字符
 
        C-d          删除光标后的一个字符
 
  
M-<DEL>      移除光标前的一个词
+
窗口
        M-d          移除光标后的一个词
 
  
        C-k          移除从光标到“行尾”间的字符
+
    C-x 0:关闭当前窗口
        M-k          移除从光标到“句尾”间的字符
+
    C-x 1:关闭当前窗口以为的其他窗口
 +
    C-x 2: 水平分割窗口(上下排列) 或者  emacs file1 file2
 +
    C-x 3:垂直分割窗口 ,左右排列
 +
    C-x 4 0:关闭当前窗口和缓冲
 +
    C-x 4 b:在另一窗口打开缓冲(如果当前只有一个窗口将分割一个新窗口)
 +
    C-x 4 f:在另一窗口打开文件(…同上)
 +
    C-x o:在多个窗口中循环切换  o is othre 多窗体 有是是有显示窗口号的 选择 1 , 2 ,3 对应的号就进入了
  
【可能你已经注意到了“删除(delete)”和“移除(kill)”的用词区别,后
+
文本向左推 C-x <
文会有详细说明。】
+
文本向右推 C-x >
  
注意“<DEL> 和 C-d”还有“M-<DEL> 和 M-d”是根据前述惯例从 C-f和 M-f 衍生的
+
模式切换
出来的(其实<DEL>不是控制字符,我们先忽略这一点)。C-k和 M-k 的关系在
 
某种程度上与 C-e 和 M-e 一样――如果把“一行”和“一句”作一个类比的话。
 
  
 +
模式切换命令:M-x 模式名
  
你也可以用一种通用的办法来移除缓冲区里的任何一部分:首先把光标移动到你
+
    shell: 终端模式(ESC+!)
想要移除的区域的一端,然后按 C-<SPC>(<SPC>指空格)【注意,C-<SPC> 往
+
    r-mode:R语言
往被中文用户设定成输入法热键,如果这样,C-<SPC> 就被系统拦截而无法传递
+
    org-mode:org-mode
给 Emacs 了,在这种情况下可以使用C-@。】,然后将光标移动到你准备移除的
+
    c++-mode:C++语言
文字的另一端。这个时候, Emacs 会高亮光标和你按下 C-<SPC> 之间的文本。
+
    c-mode:C语言
最后,按下 C-w 。这样就可以把位于这两点之间的所有文字移除了。
+
    latex-mode:LaTeX文件
 +
    perl-mode:Perl语言
 +
    tex-mode TeX文件
  
  
注意,“移除(kill)”和“删除(delete)”的不同在于被移除的东西可以被重新
+
C-x C-f 找不到文件时,用C-x C-v 会把查看到的文件放到当前编辑缓冲区  真
插入(在任何位置),而被删除的就不能使用相同的方法重新插入了(不过可以
+
正的含义是 把真正想要的文件找出来并要它替换现在这个
通过撤销一个删除命令来做到,后文会提到)。
 
  
  
重新插入被移除的文字称为“召回(yank)
 
  
 +
调整容器的大小
 +
C-x  ^ 加高当前窗口
 +
C-X  } 加宽
  
召回的命令是 C-y。它会在光标所在处插入你最后移除的文字。
+
C-x { 水平方向上收缩
  
 +
C-u C-x ^ 一次4行 or 4列的扩展
  
C-y 可以召回最近一次移除的内容,那如何召回前几次移除的内容呢?它们当然
+
C-x - 窗口收缩到非常小
没有丢,你可以用 M-y 来召回它们。在用 C-y 召回最近移除的文字之后,紧接
+
C-x + 变成同样的大小
着再按 M-y 就可以召回再前一次被移除的内容,再按一次 M-y 又可以召回再上
 
一次的……连续使用 M-y 直到找到你想要召回的东西,然后什么也不用做,继续
 
编辑就行了。
 
  
如果连续按 M-y 很多次,你可能会回到起始点,也就是最近移除的文字。
 
【看得出这实际上是一个环。】
 
  
>> 移除一行,移动一下光标,然后再移除另外一行。
+
对其它窗口进行操作的快捷命令
  按 C-y 将第二次移除的那行召回来。
 
  紧接着再按 M-y,它将会被第一次移除的那行取代。
 
  试着再按几下 M-y 看看会发生什么。
 
  再继续,直到第二行被召回来,然后再做个几次。
 
  如果感兴趣,你可以试着给 M-y 指定一个正的或负的参数。
 
  
 +
C-x 4 f 在另外一个窗口查找并打开一个文件
 +
C-x 4 b 在另外一个窗口里选择另一个缓冲区
  
* 撤销(UNDO)
+
em file1 file2
--------------
+
M-x (ESC x) compare-windows
如果你修改了一段文字,又觉得改得不好,可以用 undo 命令进行撤销:C-/。
+
C-x o 看出这两个文件什么不同
另外, C-x u 和 C-/ 完全一样,但是按起来有些麻烦。
 
  
* 文件(FILE)
+
C-x C-b 缓冲区清单列表
--------------
 
  
 +
与缓冲区清单有关的操作
  
* 缓冲区(BUFFER)
+
与缓冲区相关速查表 p139
------------------
 
  
你可以用 C-x C-f 找到并打开第二个文件,但第一个文件仍然在 Emacs 中。要
+
</pre>
切回第一个文件,一种办法是再用一次 C-x C-f。这样,你就可以在 Emacs 中同
+
几个快捷键:
时打开多个文件。
+
<pre>
不过还有一个更简单的办法,那就是用 C-x b。用这条命
 
令,你必须输入缓冲区的名称。(如果是返回默认的第一个不用名称)
 
  
  
>> 通过输入 C-x C-f foo <Return> 创建一个名为“foo”的文件。
+
  然后输入 C-x b TUTORIAL.cn <Return> 回到这里。
+
快捷键 命令 功能
 +
C-x b    创建缓冲区或者切换缓冲区(由输入的缓冲区名字是否存在决定)
 +
C-x f   打开文件并将其读到缓冲区中
  
 +
C-x s
 +
  保存缓冲区('-'存缓冲区,'n'-不保存缓冲区,'!'-保存所有缓冲区,'.'-只保存当前缓冲区缓冲区,'q'-取消保存指令,且不保存当前缓冲区。
 +
C-x s后执行C-r   只读的的方式查看缓冲区内容,按C-c返回到保存操作
 +
C-x k   删除当前缓冲区
 +
  kill-some-buffers 依次列出所有缓冲区,逐个询问是否要删除
 +
  rename-buffer 修改缓冲区名字
 +
C-x C-v   使用文件内容替换缓冲区中的内容
  
 +
C-x C-q
 +
  缓冲区只读/读写模式切换
  
  C-x s  保存多个缓冲区
+
  C-x 0
 +
  删除当前窗口
 +
C-x 1   删除当前窗口外的所有窗口
 +
C-x 2   当前窗口分割为上下2个
 +
C-x 3   当前窗口分割为左右2个
 +
  delete-windows-on 删除某个特定编辑缓冲区上的全部窗口
 +
C-x o   切换到下一个窗口
 +
M-n C-x o   执行切换到下一个窗口操作n次
 +
C-x ^   高亮当前窗口
 +
C-}   水平加宽当前窗口
 +
C-{   水平缩小当前窗口
 +
  shrink-window 垂直方向上收缩窗口
 +
C-u   一次以四倍方式执行以上扩大或者缩小、高亮等命令
 +
C-{   水平缩小当前窗口
 +
C-{   水平缩小当前窗口
 +
C-{   水平缩小当前窗口
 +
C-{   水平缩小当前窗口
 +
C-{   水平缩小当前窗口
 +
C-{   水平缩小当前窗口
 +
C-{   水平缩小当前窗口
 +
C-{   水平缩小当前窗口
 +
</pre>
 +
[https://www.cnblogs.com/cc981/p/4299625.html  关于emacs的缓冲区与窗口 ]
  
 +
[https://blog.csdn.net/wangcg123/article/details/77864592  emacs快捷键-缓冲区的操作]
  
  输入 C-x 1 离开缓冲区列表
+
[https://blog.csdn.net/lhq9220/article/details/6611402 Emacs编辑缓冲区]
 
 
 
* 命令集扩展(EXTENDING THE COMMAND SET)
 
-----------------------------------------
 
        C-x    字符扩展。  C-x 之后输入另一个字符或者组合键。
 
        M-x    命令名扩展。M-x 之后输入一个命令名。
 
  
C-z 可以暂时离开 Emacs――当然,你还可以再回来。
+
=== 文本编辑的正确姿势===
+
用 Emacs 的正确姿势应该是永远保持能不用鼠标就不用鼠标的姿势!因此,你需要学会用键盘来控制光标在窗口中的位置。
C-x 的扩展命令有很多,下面列出的是你已经学过的:
+
<pre>
 +
最基本的光标位置控制键如下所示:
  
        C-x C-f        寻找文件。
+
              上一行 C-p
C-x C-s        保存文件。
+
                    :
        C-x C-b        列出缓冲区。
+
                    :
        C-x C-c        离开 Emacs。
+
向左移 C-b .... 目前光标位置 .... 向右移 C-f
C-x 1          关掉其它所有窗格,只保留一个。
+
                    :
        C-x u          撤销。
+
                    :
 +
              下一行 C-n</span>
 +
要记忆这几个键并不困难。 p 就是 previous(在...之前), n 就是 next, b 就是 backward, f 就是 forward,而 C 就是 Control……美国人民真会玩!
 +
</pre>
  
  
 +
上述按键虽然简单易懂,但它们只适合小范围移动光标。在行内,可以用 <span style="color:red;">M-f 与 M-b </span>前后大步移动光标,步进单位对于英文而言是单词的长度,对于中文而言是两个标点符号的间距。
  
* 自动保存(AUTO SAVE)
+
对于英文文本,若将光标快速移到行首或行尾,标准按键是<span style="color:red;"> C-a 或 C-e </span>但是对于中文而言,这对按键有着将光标被移到段首或段尾的奇异效果……如果偶尔忘记了这对按键,用 Home 或 End 键也未尝不可。<span style="color:red;"> M-a 与 M-e </span>则分别可将光标移动到句首或句尾。
-----------------------
 
  
所以,假如不幸真的发生了,你大可以从容地打开原来的文件(注意不是自动保
+
如果文档很长,用 <span style="color:red;">C-v 或 M-v </span>可实现向下或向上翻屏。如果偶尔忘记了这对按键,用键盘上的 PgUp 与 PgDn 翻页键也可行。
存文件)然后输入 M-x recover file <Return> 来恢复你的自动保存文件。在
 
提示确认的时候,输入 yes<Return>
 
  
 +
跨度最大的光标移动键是 M-< 与 M-> ,可分别将光标移动到缓冲区的首部与尾部。
  
* 状态栏(MODE LINE)
+
一旦掌握了上述这几个控制光标位置的按键,在 Emacs 中鼠标基本上就变得不是那么不可或缺了,更重要的是,这些按键能够帮助你更快速的选择文本。对于文档中的待选文本区域,用上述按键将光标移动到该区域的起始位置,然后用<span style="color:red;"> C-@ </span>标定选区之首,然后继续用上述按键将光标移动到选区之尾,这样就完成了文本的选取。
---------------------
 
  
“L” 和其后的数字给出了光标所在行的行号。
 
  
最开头的星号(*)表示你已经对文字做过改动。刚刚打开的文件肯定没有被改动
+
 你可能不知道怎么产生 C-@ 按键序列。普通键盘上,应该是摁住 Ctrl 键,然后再摁住 Shift 键,最后摁下数字 2 键,然后松开手。因为 @ 在 2 上面,需要 Shift 切换……
过,所以状态栏上显示的不是星号而是短线(-)。
 
  
状态栏上小括号里的内容告诉你当前正在使用的编辑模式。缺省的模式是
+
对于选中的文本,随后的操作无非是剪切、复制或删除。剪切,请用 C-w;复制,请用 M-w;删除,请用 Backspace。对于剪切或复制的文本,要粘帖在光标所在位置,请用 C-y……或者你也可以试着看看 C-y 之后再 M-y 有什么效果!
Fundamental,就是你现在正在使用的这个。它是一种“主模式”。
 
  
 +
对文本进行了一段时间的编辑之后,要反悔的话,就用 C-_ 键执行 Undo 操作。
  
C-l C-l 将本行带到屏幕的最上方。
+
  要产生 C-_ 的按键序列,请参考上文所讲的 C-@ 的做法。
 +
建议现在就立刻将上述提到的每个按键都反复试验六、七次,以后就一直坚持使用它们……用不了几天也许就变成手指的本能了。忘掉鼠标吧,键盘可以解放你的双手,可以让你从畸形的鼠标手解脱,然后变成键盘手……因为你很快就会觉得左手的小指会有点酸痛!我会在下一节中拯救你的手。
  
 +
===拯救你的左手小拇指===
 +
如果感到左手的小手指有点疼,就不要再去用左手去摁 C-x C-s 这样的键了,你完全可以用右手的小指去摁键盘右侧的 Ctrl 键,然后左手相应的手指去摁 x 与 s 键
  
 +
===将一段代码向右推===
 +
[https://segmentfault.com/a/1190000003811296 将一段代码向右推20180124pm到这里 后面的还没看完]
  
* 搜索(SEARCHING)
+
===显示行号===
-------------------
+
====临时显示行号或者取消行号====
 +
在Emacs下执行 M-x linum-mode 来显示或者取消行号
 +
M-x : Alt + x
 +
输入: linum-mode
  
C-s 是向前搜索,C-r 是向后搜索。不过手别这么快!别着急试。
+
===跳转到指定行 ===
 
+
====临时====
在按下 C-s 之后,回显区里会有“I-search”字样出现,表明目前 Emacs 正处
+
M-x goto-line 然后回车  <line_number>
于“渐进搜索”状态,并等待你输入搜索字串。按 <Return> 可以结束搜索。
+
  ESC x goto-line 然后回车  <line_number>
 +
  ESC x goto-char 然后回车  char
 +
 
 +
====长期====
 +
以在.emacs文件中定制一下(添加以下一行):
  
>> 输入 C-s 开始一个搜索。注意敲慢一点,一次输入一个字符。
+
(define-key ctl-x-map "l" 'goto-line)
  慢慢输入“ccusor”这个词,每敲一个字都停顿一下并观察光标。
 
  现在你应该已曾经找到“ccusor”这个词了。
 
>> 再按一次 C-s,搜索下一个“ccusor”出现的位置。
 
>> 现在按四次 <DEL> ,看看光标是如何移动的。
 
>> 敲 <Return> 结束搜索。
 
  
看仔细了么?在一次渐进式搜索中,Emacs 会尝试跳到搜索目标出现的位置。要
+
然后每次在emacs中按C-x再按l,输入指定的行号就可以了。
跳到下一个命中位置,就再按一次 C-s。如果找不到目标,Emacs 会发出“哔”
 
的一声,告诉你搜索失败。在整个过程中,都可以用 C-g 来终止搜索。【你会发
 
现 C-g 会让光标回到搜索开始的位置,而 <Return> 则让光标留在搜索结果上,
 
这是很有用的功能。】
 
  
在渐进式搜索中,按 <DEL> 会“撤回”到最近一次搜索的命中位置。如果之前没
+
http://blog.csdn.net/grey_csdn/article/details/78905862
有一个命中, <DEL> 会抹去搜索字符串中的最后一个字符。比如你已经输入了
+
http://bbs.csdn.net/topics/60028785
“c”,光标就停在“c”第一次出现的位置,再输入“u”,光标停在“cu”第一次出现
 
的位置,这时再按 <DEL> ,“u”就从搜索字串中消失了,然后光标会回到“c”第
 
一次出现的位置。
 
  
  
* 多窗格(MULTIPLE WINDOWS)
+
=== 常用插件===
----------------------------
+
记笔记,安排日程,那么毫无疑问Org-Mode是首选
  
> 移动光标到这一行,然后输入 C-l C-l。
+
[https://liujiacai.net/blog/2020/11/25/why-emacs/ Emacs 入门指南:Why & How]
  
>> 现在输入 C-x 2,它会将屏幕划分成两个窗格。
+
====evil  ====
  这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。
+
<pre>
  
>> 试试用 C-M-v 滚动下方的窗格。
 
  (如果你并没有 META 键,用 ESC C-v 也可以。)
 
  【向上滚动是 C-M-S-v,也就是同时按住 CONTROL、META 和 SHIFT 再按 v】
 
  
>> 输入 C-x o(“o”指的是“其它(other)”),
+
还要在emacs和vim模式里面切换:C-z,换来换去啊  能直接进入的么 
  将光标转移到下方的窗格。
+
不过进入后 org  有时不好用
  
>> 在下方的窗格中,用 C-v 和 M-v 来滚动。
 
  同时继续在上方的窗格里阅读这些指导。
 
  
 +
;; dec 22  2021
 +
;; evil
 +
;; Set up package.el to work with MELPA
 +
(require 'package)
 +
(add-to-list 'package-archives
 +
            '("melpa" . "https://melpa.org/packages/"))
 +
(package-initialize)
 +
(package-refresh-contents)
  
C-M-v 是一个 CONTROL-META 组合键。如果你有 META (或 Alt)键的话,可以
+
;; Download Evil
同时按住CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,
+
(unless (package-installed-p 'evil)
因为它们只是用来“修饰(modify)”你输入的字符的。
+
  (package-install 'evil))
  
 +
;; Enable Evil
 +
(require 'evil)
 +
(evil-mode 1)
  
>> (在上方窗格里)输入 C-x 1 关掉下方窗格。
 
  
(如果你在下方的窗格里输入 C-x 1,那么就会关掉上方的窗格。你可以把这个
 
命令看成是“只保留一个窗格”――就是我们正在编辑的这个。)
 
  
不同的窗格可以显示不同的缓冲区。如果你在一个窗格里用 C-x C-f 打开了一个
 
文件,另一个窗格并不会发生什么变化。任何一个窗格里都可以用来打开文件。
 
  
  
* 多窗口(MULTIPLE FRAMES)
 
------------------
 
  
  
* 更多精彩(MORE FEATURES)
 
---------------------------
 
  
想学习更多的使用技巧,Emacs 使用手册(manual)值得一读。你可以读纸版的
 
书,也可以在 Emacs 中读(可以从 Help 菜单进入或者按 C-h r)。提两个你
 
可能会很感兴趣的功能吧,一个是可以帮你少敲键盘的 completion(自动补全),
 
另一个是方便文件处理的 dired(目录编辑)。
 
  
Completion 可以替你节省不必要的键盘输入。比如说你想切换到 *Message* 缓
+
;;#添加到配置文件 例如 .emacs
冲区,你就可以用 C-x b *M<Tab> 来完成。只要 Emacs 能够根据你已经输入的
+
  (setq package-archives '(("gnu"  . "http://elpa.emacs-china.org/gnu/")
文字确定你想要输入的内容,它就会自动帮你补齐。Completion 也可用于命令
+
                          ("melpa" . "http://elpa.emacs-china.org/melpa/")))
名和文件名。有关 Completion 的详细说明可以在 Emacs Info 中的
+
 
“Completion”一节里找到。
+
 
 +
第二步安装
 +
M-x package-refresh-contents
 +
M-x package-install RET evil RE
 +
 
 +
 
 +
; 最后一步是配置
 +
;Finally, add the following lines to your Emacs init file:
 +
 
 +
(require 'evil)
 +
(evil-mode 1)
 +
 
 +
;这个是打开文件后默认进入emacs模式
 +
;我还要在emacs和vim模式里面切换:C-z,换来换去啊
 +
(setq evil-default-state 'emacs)
  
Dired 能够在一个缓冲区里列出一个目录下的所有文件(可以选择是否也列出子
 
目录),然后你可以在这个文件列表上完成对文件的移动、访问、重命名或删除
 
等等操作。Dired 也在 Emacs 使用手册中有详细介绍,参见“Dired”一节。
 
  
 +
</pre>
  
下面列出主要术语的译词对照,并给出注释说明:
+
[https://evil.readthedocs.io/en/latest/overview.html#installation-via-package-el evil install ]
  
    command              命令
+
[https://www.douban.com/group/topic/34775654/  Emacs,咱就推荐一个插件:Evil(件如其名,够邪恶) ]
    cursor                光标
+
 
    scrolling            滚动
+
https://www.emacswiki.org/emacs/EvilZH
    numeric argument      数字参数
 
    window                窗格 [1]
 
    insert                插入
 
    delete                删除 [2]
 
    kill                  移除 [2]
 
    yank                  召回 [2]
 
    undo                  撤销
 
    file                  文件
 
    buffer                缓冲区
 
    minibuffer            小缓冲
 
    echo area            回显区
 
    mode line            状态栏
 
    search                搜索
 
    incremental search    渐进式搜索 [3]
 
  
 +
====Magit  ====
  
20180313 ln 792
+
Magit 为 Emacs 用户提供操作 git 的接口,是我第一个重度依赖的 Emacs 插件,也是社区内排行第二的插件。Magit 深度整合到 Emacs 的快捷键中,一切 git 操作都如流水行云般,没有它的话,我连 rebase 都不会。
here
 
  
 +
https://magit.vc/
 +
====文件管理 Dired ====
 +
Dired 是 directory editor 的缩写,是 Emacs 内置的插件,类似 macOS 上的文件管理器 Finder
  
M-x replace-string ENTER search-string ENTER 替换
 
 
  
 +
C-x d 进入Dired Mode  or emacs dirname
  
用 <Return> 结束文件名的输入
+
https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html
Return 这里是什么意思呢  回车么 
 
  
 +
[https://blog.csdn.net/u014801157/article/details/80894703  Emacs必修:使用dired管理文件]
  
Alt + x
+
[https://blog.csdn.net/fanfan4569/article/details/79516611  【Emacs】Dired Mode(文件管理)]
输入: linum-mode
 
  
 +
[https://blog.csdn.net/fanfan4569/article/details/79516611 Dired Mode(文件管理)]
  
  
emacs中如何跳到指定行
+
[https://blog.lujun9972.win/blog/2016/12/10/emacs%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86%E7%A5%9E%E5%99%A8--dired%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C%E8%AF%B4%E6%98%8E/ Emacs文件管理神器--dired常用操作说明]
  
M-x goto-line 然后回车  <line_number>
+
[https://www.jianshu.com/p/abc5c866dfc9 Emacs入坑之旅——用dired模式做文件管理]
  
以在.emacs文件中定制一下(添加以下一行):
+
[https://elloop.github.io/tools/2016-03-01/emacs-accumulate-5-packages-extensions Markdown]
  
(define-key ctl-x-map "l" 'goto-line)
+
[https://zhuanlan.zhihu.com/p/156907392 Emacs Workflow - 文件管理]
  
 +
==== UndoTree ====
 +
<pre>
  
然后每次在emacs中按C-x再按l,输入指定的行号就可以了。
+
  ‘M-x package-install undo-tree’
  
http://blog.csdn.net/grey_csdn/article/details/78905862
+
    (global-undo-tree-mode);;To enable it
http://bbs.csdn.net/topics/60028785
+
 
</pre>
+
undo-tree 都是只读了 为什么 呢 
==package ==
+
init.el 开启
<pre>
+
 
 +
/.emacs.d/lisp$ vim init-edit.el
  
也可以使用命令M-x list-packages获取插件列表,使用C-s找到 软件名    i  - 选择要安装的包  例如叫 elpy 来安装
+
注释原来的  算了 我还是先关掉 undo-tree 吧 有空再看一下 这样就原来的配置用起来不错了
  
 +
undo-tree-0.7.5$ vim undo-tree.el
  
;内置的package管理,emacs24以上的版本有用
+
我的配置暂时去掉了 有空要处理完为什么 C-s 为什么不是保存而是另存为再加上
(require 'package)
 
;;将melpa仓库地址加入到package-archives这个列表变量里面
 
(add-to-list 'package-archives
 
    '("melpa" . "http://melpa.org/packages/") t)
 
;;这个是国内一个elpa仓库镜像,速度更快一些,你懂得
 
(add-to-list 'package-archives
 
    '("popkit" . "http://elpa.popkit.org/packages/") t)
 
;;初始化package
 
(package-initialize)
 
;;更新仓库里面的package
 
(when (not package-archive-contents)
 
  (package-refresh-contents))
 
 
</pre>
 
</pre>
 +
https://www.emacswiki.org/emacs/UndoTree
  
===常用操作===
+
[[C/C++ Development Environment for Emacs|https://elpa.gnu.org/packages/undo-tree.html]]
<pre>
+
==== avy====
#软件包安装
+
 
Alt+x list-packages
+
https://github.com/abo-abo/avy
 +
介绍
 +
 
 +
光标跳转一直是 终端编辑器 的软肋,想要把光标移动到任意指定位置,就算是用 vim,平均也需要按很多次快捷键,并且每次跳转,都需要眼睛进行大量跟踪工作,负担很大。以 vim 为例(不考虑仅使用hjkl或方向键这种最低效的方式),要把光标移动到任意指定位置,首先我们需要先确认指定位置所在行的行号,然后使用命令跳转到指定行,最后再应用w/f键若干次,把光标移动到指定列。这期间的行号确认和每次光标移动,眼睛都得一直跟踪,累人且效率低。
  
可以先用C-s向下搜索  autopair
+
于是,光标跳转插件出现了,它们能让我们的眼睛只看着要跳转到的位置这一处即可,视线完全不需要移动,即可快速完成跳转,而 avy 则是 emacs 上的一个优秀的光标跳转插件。这类插件的使用方式大致为:假设当前屏幕的某处有一段文字This is a test.,要把光标移动到test单词的开头,那么我们只需要完成以下三步,并且,在这过程中我们只需要看着test的开头处,视线无需移动:
找到后 回来后 按i再按x就下载到本地了。然后打开emacs的配置文件init.el,在里面添加下面:
 
  
常用快捷键
+
    按快捷键激活插件。
i  - 选择要安装的包
+
    按t键(即test的开头字母),这时候屏幕上所有的t都会高亮,并且显示它们各自对应的快捷键,这里假设test开头的t对应的快捷键为gj。
d - 选择要删除的包
+
    按g键然后按j键,光标即跳转到了test的开头。
U - 升级已安装的包
 
x  - 执行操作
 
d - 选择要删除的包
 
</pre>
 
  
[http://longlycode.github.io/2016/02/02/emacs%E5%AE%8C%E5%85%A8%E8%A1%A5%E5%AE%8C%E8%AE%A1%E5%88%92-%E4%B8%89/ emacs完全补完计划(三)——package的引入和管理]
+
==== 多窗口操作====
  
 +
安装不成功要求什么 dash 又没安装上  melpa.org 443又不通什么的 可能我原来的配置就有了呢
  
==emacs-gtk==
 
<pre>
 
让选中可以高亮
 
自己打开随便看下 居然就看到了 不错
 
emacs-gtk  --> Options --> customize emacs  --> custom themes  -->  个人感觉 adwaita 还不错
 
save theme settings
 
</pre>
 
== 高级==
 
  
 +
https://github.com/nschum/window-numbering.el
  
[https://panqiincs.me/2015/06/15/edit-markdown-with-emacs/ 用Emacs编辑Markdown ]
+
https://github.com/deb0ch/emacs-winum
  
 +
[https://blog.csdn.net/redguardtoo/article/details/7768233 emacs 多窗口完美操作]
  
[https://www.jianshu.com/p/e4e015096fb4 Emacs有这些配置足矣]
+
https://github.com/magnars/dash.el#installation
  
  
===Edit mediawiki sites from emacs ===
+
[https://www.jianshu.com/p/c0b72c78a1fe emacs效率插件推荐]
[https://github.com/hexmode/mediawiki-el mediawiki.el -- Edit mediawiki sites from emacs]
 
  
==emacs 学习==
+
[https://www.zhihu.com/question/379313632 大家都来说说自己常用的emacs插件有哪些?]
  
https://link.zhihu.com/?target=https%3A//github.com/emacs-tw/awesome-emacs
+
=== 快捷键===
0.我雖然是看man過來的,但是這份名單,如果早知道應該會輕鬆很多。--- update1.從starter-kit入手把,爬梯子出去看redguardtoo的獨立博客,你會發現吊爆了。當然他的一年的文章一定要看。而且可以git下來,revert到剛開始的commit,一個個commit看。2. 還有就是各種折騰。各種動手把,拒絕其他一切的編輯器。3.改鍵位,乾脆去買了HHKB也可以,如你很土豪。4.看書呀,學elisp,這個階段你要看田春冰河的,李殺的博客了。學着寫個插件把。PS.學習emacs會改變你編程思維的,包括你軟件開發的工作流。lisp系各種優雅.上面編號不分先後。
+
<pre>
 +
M-s : 新建一个buffer(缓冲区)
  
[https://www.zhihu.com/question/19783016 怎样学习 Emacs]
+
C-x O : 注意是大写的O,不是零,所以需要按住shift键再按o键。用于在缓冲区之间切换
  
 +
C-g : 取消当前操作
  
 +
C-x u : 回到上一步,相当于Undo
  
 +
C-x  C-x : 变大写
  
[https://www.cnblogs.com/holbrook/archive/2012/02/15/2357336.html Emacs学习笔记(1):初学者的学习计划]
+
C-x 3 : 把缓冲区(buffer)分为左右两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口)
  
[https://www.cnblogs.com/holbrook/archive/2012/03/06/2381636.html Emacs学习笔记(7):简单的配置]
+
C-x 2 : 把缓冲区(buffer)分为上下两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口)
  
[https://www.cnblogs.com/holbrook/archive/2012/02/15/2357335.html Emacs学习笔记(2): 初识Emacs]
+
M-w : 选中文字的情况是复制文字,而如果没有选中文字则是复制当前的一行
  
[https://www.cnblogs.com/holbrook/tag/emacs/ emacs 学习标签 ]
+
C-w : 选中文字的情况是剪切文字,而如果没有选中文字则是剪切当前的一行
  
 +
M-x : 调出命令输入,可以在后面接命令,比如man,svn-status,等
  
[https://zklhp.github.io/2016/06/18/What-I-do-with-Emacs/ 我用Emacs干什么?为什么用Emacs?]
+
C-y : 黏贴
  
== 参考==
+
C-x C-s : 保存文本
[https://my.oschina.net/alphajay/blog/7737 Emacs快捷键的总结]
 
  
[https://segmentfault.com/a/1190000003811296 走近emacs 201801]
+
C-x C-f : 打开文件,如果文件不存在,则新建文件
  
[http://blog.csdn.net/cherylnatsu/article/details/6536959  Emacs常用命令快速参考]
+
C-x C-v : 打开一个文件,取代当前缓冲区
  
[https://www.ibm.com/developerworks/cn/education/aix/emacs1-1/index.html 学习 Emacs 的基础知识]
+
C-x k : 关闭当前缓冲区(buffer)
  
[https://github.com/redguardtoo/mastering-emacs-in-one-year-guide 一年成为 Emacs 高手 ]
+
C-s : 向前搜索
  
http://emacser.com/
+
C-r : 向后搜索
  
[https://linux265.com/soft/3857.html  Emacs - 代码编辑神器之一]
+
C-x h : 全选
  
 +
C-v : 向下翻页
  
Emacs 入门
+
M-v : 向上翻页
https://i.linuxtoy.org/docs/guide/ch25.html
 
  
[https://www.emacswiki.org/emacs/%E9%A6%96%E9%A1%B5 emacswiki]
+
C-f : 前进一个字符
  
[https://www.jianshu.com/p/732157b02ecc Emacs,最强编辑器,没有之一]
+
C-b : 后退一个字符
  
Emacs org mode
+
M-f : 前进一个单词
https://i.linuxtoy.org/docs/guide/ch32s03.html#id3155525
 
  
 +
M-b : 后退一个单词
  
https://www.emacswiki.org/emacs?interface=zh-cn
+
C-@ : 标记开始区域
  
https://www.cnblogs.com/blfshiye/p/4566900.html
+
C-a : 移到行首
  
 +
C-e : 移到行尾
  
https://www.gnu.org/software/emacs/manual/html_node/efaq/Installing-Emacs.html
+
M-a : 移到句首
  
[https://www.gnu.org/software/emacs/tour/index.html  A Guided Tour of Emacs]
+
M-e : 移到句尾
  
Emacs - the Best Python Editor https://realpython.com/blog/python/emacs-the-best-python-editor/
+
M-< : 缓冲区头部
  
Emacs:最好的Python编辑器  http://codingpy.com/article/emacs-the-best-python-editor/
+
M-> : 缓冲区尾部
  
[https://wiki.archlinux.org/index.php/Emacs_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#.E8.BF.90.E8.A1.8CEmacs Emacs (简体中文)]
+
M-g M-g,再输入数字 : 跳转到文本的第几行
  
[http://ergoemacs.org/emacs/emacs_package_system.html How to Install Packages Using ELPA, MELPA]
+
C-x 0 : 关闭当前缓冲区
  
[http://www.cnblogs.com/xiaosha/p/3366422.html emacs python 配置]
+
C-x C-c : 退出Emacs
  
[https://maskray.me/blog/2015-09-18-conversion-to-emacs 皈依Emacs]
 
  
[https://elloop.github.io/tools/2016-03-01/emacs-accumulate-5-packages-extensions  【积水成渊-逐步定制自己的Emacs神器】3:为Emacs安装扩展]
+
emacs buffer read only
 +
Ctrl-x Ctrl-q
 +
 
 +
</pre>
 +
 
 +
[https://aifreedom.com/technology/112 Emacs快捷键列表]
 +
 
 +
链接:https://www.jianshu.com/p/732157b02ecc
 +
 
 +
==多窗口 ==
 +
 
 +
 首先先明确下Emacs窗口的概念,我们双击Emacs图标打开程序见到的Windows窗口叫做Frame,包含了标题栏,菜单栏,工具栏,最下面的Mode Line和回显区域,而中间一大块显示文本的区域则是Window,实际上每个窗口都有自己的Mode Line。下文中我将称Frame为框,Window为窗口,这里和我们平时理解的Windows窗口有点区别。
 +
 
 +
  在Emacs里面,一个框可以分割出多个窗口,多个窗口可以显示同一个或者不同Buffer,但是一个窗口只能属于一个Frame。一个窗口同时也只能显示一个Buffer,但是同时打开两个窗口也能显示一个Buffer的不同部分,这两个窗口是同步的,就是说如果在一个窗口中对Buffer做了修改,在另一个窗口中可以立即表现出来。但在一个窗口中移动光标之类的操作不会影响另一个窗口。多缓冲中有当前缓冲这个概念,同样对于多窗口也有当前窗口,对于当前选中的窗口其Mode Line相对于其它窗口颜色会深一些。
 +
 
 +
 +
===显示窗口===
 +
<span style="color:red;">
 +
 
 +
  命令<span style="color:red;">C-x 2  (split-window-vertically) </span>垂直拆分窗口,就是把一个窗口上下等分为两个,拆分出来的窗口默认是显示当前Buffer。可以多次使用这个命令,会把一个窗口不停的两等分。
 +
        对应也有水平拆分窗口的命令C-x 3 (split-window-horizontally),这两个命令也可以混合使用,如果你屏幕够大画个迷宫出来也不是不可能的。拆分命令还可以加参数,比如M-5 C-x 2就是说上面那个窗口只占5行,其余的位置都给下面的窗口。
 +
<pre>
 +
  C-x o (other-window) 可以在多个窗口中切换,从上到下一个一个的来。使用参数来控制选中下面第几个窗口,想往回选的话参数设为负数。
 +
 
 +
  C-M-v (scroll-other-window),用来滚动下一个窗口。
 +
 
 +
  上一章我们看到有些命令加了C-x 4这个前缀,这一类命令都是用来操作多窗口的。
  
===wiki ===
+
  C-x 4 b bufname (switch-to-buffer-other-window) 在另一个窗口打开缓冲。
Wiki编辑器, 通过 Yaoddmuse 几乎能支持所有的Wiki格式, 实时语法高亮, 你不用担心保存以后确发现格式错了
+
 
 
+
  C-x 4 C-o bufname (display-buffer) 在另一个窗口打开缓冲,但不选中那个窗口。
https://www.emacswiki.org/emacs/Yaoddmuse
+
 
 
+
  C-x 4 f filename (find-file-other-window) 在另一个窗口打开文件。
[https://blog.csdn.net/freexploit/article/details/572224 用Emacs Wiki帮你写Blog]
+
 
 
+
  C-x 4 d directory (dired-other-window) 在另一个窗口打开文件夹。
===2019===
+
 
 
+
  C-x 4 m (mail-other-window) 在另一个窗口写邮件。
[https://www.cnblogs.com/robertzml/archive/2009/09/10/1564108.html 学习Emacs系列教程(一):基本使用]
+
 
 
+
  C-x 4 r filename (find-file-read-only-other-window) 在另一个窗口以只读方式打开文件。
[http://longlycode.github.io/2016/01/28/emacs%E5%AE%8C%E5%85%A8%E8%A1%A5%E5%AE%8C%E8%AE%A1%E5%88%92-%E4%B8%80-1/ emacs完全补完计划(一)——嘴炮和入门]
+
 
 
+
  这一类的命令默认是垂直拆分窗口。</pre>
[http://jixiuf.github.io/blog/emacs-%E8%87%AA%E5%B8%A6%E7%9A%84%E7%AE%80%E5%8D%95%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B%28tutorial%29/ emacs 自带的简单入门教程(TUTORIAL)]
+
 
 
+
===重排窗口===
[http://www.cnblogs.com/Open_Source/archive/2011/07/17/2108747.html Org-mode 简明手册]
+
 
 
+
  窗口排的密密麻麻看上去肯定不舒服,这时使用    <span style="color:red;">C-x 0 (delete-window) </span> 来关闭当前窗口,需要注意的是窗口和缓冲是两个概念,关闭一个窗口对缓冲,或者我们正在编辑的文件没有任何影响。也可以使用C-x 1 (delete-other-windows) 关闭其它所有窗口。如果想连窗口打开的缓冲一并关掉使用C-x 4 0 (kill-buffer-and-window)。
[http://blog.csdn.net/grey_csdn/article/category/7131378/5 小灰笔记 emacs]
+
<pre>
 +
  我们还可以对窗口的大小做些改变:
 +
        C-x ^ (enlarge-window)让窗口变得高点,
 +
        C-x { (shrink-window-horizontally) 这个是把窗口变窄,变宽的话是C-x } (enlarge-window-horizontally) ,C-x - (shrink-window-if-larger-than-buffer)这个看字面意思就能理解,如果窗口比缓冲大就缩小点,C-x + (balance-windows)这个命令和前面那个没有任何关系是将所有窗口变得一样高。
 +
 
 +
  最后再说一个在窗口中切换的命令,有时候窗口开的太多自己也记不住顺序,使用C-x o就会很麻烦。有一类命令能让你在上下左右切换当前窗口,M-x windmove-right 就是移到右边那个窗口,对应的"left","up“, "down",向四个方向都能移。</pre>
 +
 
 +
===小结 ===
 +
<pre>
 +
 
 +
 
 +
 
 +
</pre>
 +
 
 +
 
 +
[https://www.cnblogs.com/robertzml/archive/2010/03/24/1692737.html学习Emacs系列教程(十):多窗口]
 +
==Emacs Shell Mode ==
 +
 
 +
[https://blog.csdn.net/ruglcc/article/details/7830518  大话Emacs Shell Mode:让工作更轻松的技巧]
 +
 
 +
==org mode==
 +
Emacs 的 Org-mode 在一定程度上可以替代 OneNote,有些方面甚至更好
 +
[[Org-mode]]
 +
 
 +
 
 +
 
 +
==配置==
 +
<pre>
 +
https://github.com/gabrielelanaro/emacs-for-python
 +
https://github.com/jorgenschaefer/elpy
 +
http://www.jesshamrick.com/2012/09/18/emacs-as-a-python-ide/
 +
https://realpython.com/blog/python/emacs-the-best-python-editor
 +
 
 +
*day1
 +
pass 20170610
 +
有空再详细的再看
 +
 
 +
:
 +
记得要添加在公司作的相关的emacs 笔记
 +
 
 +
 
 +
=======
 +
这几天常用的几个重要使命
 +
 
 +
 
 +
 
 +
 
 +
重要快捷键(Important)
 +
C-k 删除一行
 +
C-g 停止当前运行/输入的命令
 +
C-x u 撤销前一个命令
 +
 
 +
c-j 下称整个文件内容
 +
 
 +
emacs 菜单 用F10或者M-`。
 +
 
 +
ctrl+g  q 退出 快速说明
 +
 
 +
编辑器内显示行号可使用 M-x linum-mode 来开启。
 +
M-x 然后在最下面 输入 linum-mode
 +
not try
 +
q
 +
 
 +
获取帮助
 +
ctrl+h  k  要查看的快捷键盘
 +
 
 +
 
 +
 
 +
 
 +
学习基础 Elisp
 +
 
 +
ctrl+x  ctrl +b
 +
 
 +
 
 +
C-x o:把光标在屏幕上的窗口间进行切换。记忆方法:其它(Other)窗口。
 +
 
 +
然后选择 *scratch*
 +
 
 +
运算 C-X  c - E
 +
 
 +
插件管理
 +
 
 +
c-x  o  other window  install
 +
 
 +
company
 +
f2 打开配置文件
 +
 
 +
org-mode
 +
 
 +
major mode and minor mode (C-h m)
 +
 
 +
 
 +
 
 +
 
 +
;;evan配置文件
 +
;;  ~/.emacs  行号什么 的 我是加到这个文件生效的
 +
;;  ~/.emacs.d/emacs
 +
 
 +
;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
 +
(tool-bar-mode -1)
 +
 
 +
;; 关闭文件滑动控件
 +
(scroll-bar-mode -1)
 +
 
 +
;; 显示行号 试过 这个一定有效果
 +
(global-linum-mode 1)
 +
 
 +
;; 更改光标的样式(不能生效,解决方案见第二集)
 +
(setq cursor-type 'bar)
 +
 
 +
;; 关闭启动帮助画面
 +
(setq inhibit-splash-screen 1)
 +
 
 +
;; 关闭缩进 (第二天中被去除)
 +
;; (electric-indent-mode -1)
 +
 
 +
;; 更改显示字体大小 16pt
 +
;; http://stackoverflow.com/questions/294664/how-to-set-the-font-size-in-emacs
 +
(set-face-attribute 'default nil :height 160)
 +
 
 +
;; 快速打开配置文件
 +
(defun open-init-file()
 +
  (interactive)
 +
  (find-file "~/.emacs.d/init.el"))
 +
 
 +
;; 这一行代码,将函数 open-init-file 绑定到 <f2> 键上
 +
(global-set-key (kbd "<f2>") 'open-init-file)
 +
 
 +
; 开启全局 Company 补全
 +
(global-company-mode 1)
 +
 
 +
;; 作者用的  是t
 +
3(global-company-mode t)
 +
 
 +
 
 +
;; ~/.emacs  生效的居然是这个 2018
 +
;; 在 mode line 上显示行列号
 +
(setq column-number-mode 1)
 +
(setq line-number-mode 1)
 +
 
 +
;;显示列号
 +
(setq column-number-mode t)
 +
 
 +
;; 显示行号
 +
(global-linum-mode 1)
 +
 
 +
;; 取消滚动栏,工具栏
 +
(tool-bar-mode 0)
 +
(menu-bar-mode 0)
 +
(scroll-bar-mode 0)
 +
 
 +
;; 关闭emacs启动时的页面
 +
(setq inhibit-startup-message 1)
 +
(setq gnus-inhibit-startup-message 1)
 +
;; 以 y/n代表 yes/no
 +
(fset 'yes-or-no-p 'y-or-n-p)
 +
;;; 设置备份策略
 +
(setq make-backup-files t)
 +
(setq kept-old-versions 2)
 +
(setq kept-new-versions 2)
 +
(setq delete-old-versions t)
 +
(setq backup-directory-alist '(("" . "~/.emacsbackup")))
 +
 
 +
;; 公共插件配置
 +
;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
 +
(require 'package)
 +
(add-to-list 'package-archives
 +
            '("melpa" . "http://melpa.milkbox.net/packages/") t)
 +
(package-initialize)
 +
 
 +
;;内置的package管理,emacs24以上的版本有用
 +
(require 'package)
 +
;;将melpa仓库地址加入到package-archives这个列表变量里面
 +
(add-to-list 'package-archives
 +
    '("melpa" . "http://melpa.org/packages/") t)
 +
;;这个是国内一个elpa仓库镜像,速度更快一些,你懂得
 +
(add-to-list 'package-archives
 +
    '("popkit" . "http://elpa.popkit.org/packages/") t)
 +
;;初始化package
 +
(package-initialize)
 +
;;更新仓库里面的package
 +
(when (not package-archive-contents)
 +
  (package-refresh-contents))
 +
(custom-set-variables
 +
;; custom-set-variables was added by Custom.
 +
;; If you edit it by hand, you could mess it up, so be careful.
 +
;; Your init file should contain only one such instance.
 +
;; If there is more than one, they won't work right.
 +
'(package-selected-packages (quote (company auto-complete autopair))))
 +
(custom-set-faces
 +
;; custom-set-faces was added by Custom.
 +
;; If you edit it by hand, you could mess it up, so be careful.
 +
;; Your init file should contain only one such instance.
 +
;; If there is more than one, they won't work right.
 +
)
 +
 
 +
 
 +
 
 +
I. 显示时间
 +
.emacs加上:
 +
(display-time-mode 1) ;; 常显
 +
(setq display-time-24hr-format t) ;;格式
 +
(setq display-time-day-and-date t) ;;显示时间、星期、日期
 +
 
 +
II. 隐藏菜单栏工具栏滚动条
 +
.emacs加上:
 +
(tool-bar-mode 0)
 +
(menu-bar-mode 0)
 +
(scroll-bar-mode 0)
 +
;;注: 新版改成使用0,旧版使用nil的做法已失效,但 (set-scroll-bar-mode nil) 仍可使用
 +
 
 +
III. 关闭启动画面
 +
.emacs加上:
 +
(setq inhibit-startup-message t)
 +
 
 +
IV. highlight当前行
 +
.emacs加上:
 +
(global-hl-line-mode 1)
 +
;;;; c mode ;;;;
 +
(defvar xgp-cfsi-left-PAREN-old nil
 +
  "Command used to input \"(\"")
 +
(make-variable-buffer-local 'xgp-cfsi-left-PAREN-old)
 +
 
 +
(defun xgp-cfsi-modify-alist (alist term new)
 +
  (let ((tl (assq term (symbol-value alist))))
 +
    (if tl
 +
        (setcdr tl new)
 +
      (add-to-list alist (cons term new)))))
 +
 
 +
(defun xgp-cfsi (style)
 +
  "Deciding whether using CFSI."
 +
  (interactive "Style: ")
 +
  (c-set-style style)
 +
  (setq indent-tabs-mode
 +
        nil
 +
        c-hanging-semi&comma-criteria
 +
        (quote (c-semi&comma-inside-parenlist)))
 +
 
 +
  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-open nil)
 +
  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-close nil)
 +
  (local-set-key " " 'self-insert-command))
 +
 
 +
(defun xgp-cfsi-erase-blanks ()
 +
  "Erase all trivial blanks for CFSI."
 +
  (interactive)
 +
  (save-excursion
 +
    (goto-char (point-min))
 +
    (while (re-search-forward "[ \t]+$" nil t)
 +
      (replace-match "" nil nil))))
 +
 
 +
(defun linux-c-mode()
 +
  (define-key c-mode-map [return] 'newline-and-indent)
 +
  (setq imenu-sort-function 'imenu--sort-by-name)
 +
  (interactive)
 +
  (imenu-add-menubar-index)
 +
  (which-function-mode)
 +
  (c-toggle-auto-state)
 +
  (c-toggle-hungry-state)
 +
  (setq indent-tabs-mode nil)
 +
  (xgp-cfsi "linux"))
 +
(add-hook 'c-mode-common-hook 'linux-c-mode)
 +
;; 代码补全
 +
(add-hook 'c-mode-hook 'company-mode)
 +
(add-hook 'c++-mode-hook 'company-mode)
 +
 
 +
 
 +
# other
 +
如果要一次移动若干个单位,可以给命令加上数值参数,通过C-u命令,如:C-u 8 C-n就表示往下移8行,C-u 10 M-e表示往后移10句。不过C-u的参数对C-v和M-v命令而言有特殊,它不表示上下翻多少页,而是表示上下滚动多少行。注意与C-n的区别,C-u 8 C-n表示光标下移8行,屏幕不一定会滚动,而C-u 8 C-v,表示屏幕滚动8行,如果光标没有滚到屏幕外的话,光标位置不变。
 +
如果不给C-u带上数值,则默认的值是4。比如C-u C-n就表示下移4行。这一特性还可以重复使用C-u C-u C-p就表示上移16行,C-u C-u C-u C-f表示右移64个字符。
 +
前面讲了用C-g可以中断当前的命令,这次再补充一点,有时候C-g不灵时,可以按三次<Esc>键达到相同的目的。
 +
</pre>
 +
 
 +
====kali本本配置====
 +
<pre>
 +
;;cat ~/.emacs
 +
 
 +
;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
 +
(tool-bar-mode 0)
 +
(menu-bar-mode 0)
 +
(scroll-bar-mode 0)
 +
(tool-bar-mode -1)
 +
 
 +
 
 +
 
 +
(setq column-number-mode t)
 +
(setq column-number-mode 1)
 +
(setq line-number-mode 1)
 +
;; 显示行号
 +
(global-linum-mode 1)
 +
;; 在 mode line 上显示行列号
 +
(setq column-number-mode 1)
 +
(setq line-number-mode 1)
 +
 
 +
;;显示列号
 +
(setq column-number-mode t)
 +
 
 +
;; 显示行号
 +
(global-linum-mode 1)
 +
 
 +
;; 取消滚动栏,工具栏
 +
(tool-bar-mode 0)
 +
(menu-bar-mode 0)
 +
(scroll-bar-mode 0)
 +
 
 +
;; 关闭emacs启动时的页面
 +
(setq inhibit-startup-message 1)
 +
(setq gnus-inhibit-startup-message 1)
 +
;; 以 y/n代表 yes/no
 +
(fset 'yes-or-no-p 'y-or-n-p)
 +
;;; 设置备份策略
 +
(setq make-backup-files t)
 +
(setq kept-old-versions 2)
 +
(setq kept-new-versions 2)
 +
(setq delete-old-versions t)
 +
(setq backup-directory-alist '(("" . "~/.emacsbackup")))
 +
 
 +
;; 公共插件配置
 +
;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
 +
(require 'package)
 +
(add-to-list 'package-archives
 +
            '("melpa" . "http://melpa.milkbox.net/packages/") t)
 +
(package-initialize)
 +
 
 +
;;内置的package管理,emacs24以上的版本有用
 +
(require 'package)
 +
;;将melpa仓库地址加入到package-archives这个列表变量里面
 +
(add-to-list 'package-archives
 +
    '("melpa" . "http://melpa.org/packages/") t)
 +
;;这个是国内一个elpa仓库镜像,速度更快一些,你懂得
 +
(add-to-list 'package-archives
 +
    '("popkit" . "http://elpa.popkit.org/packages/") t)
 +
;;初始化package
 +
(package-initialize)
 +
;;更新仓库里面的package
 +
(when (not package-archive-contents)
 +
  (package-refresh-contents))
 +
(custom-set-variables
 +
;; custom-set-variables was added by Custom.
 +
;; If you edit it by hand, you could mess it up, so be careful.
 +
;; Your init file should contain only one such instance.
 +
;; If there is more than one, they won't work right.
 +
'(package-selected-packages (quote (company auto-complete autopair))))
 +
(custom-set-faces
 +
;; custom-set-faces was added by Custom.
 +
;; If you edit it by hand, you could mess it up, so be careful.
 +
;; Your init file should contain only one such instance.
 +
;; If there is more than one, they won't work right.
 +
)
 +
 
 +
;;;; c mode ;;;;
 +
(defvar xgp-cfsi-left-PAREN-old nil
 +
  "Command used to input \"(\"")
 +
(make-variable-buffer-local 'xgp-cfsi-left-PAREN-old)
 +
 
 +
(defun xgp-cfsi-modify-alist (alist term new)
 +
  (let ((tl (assq term (symbol-value alist))))
 +
    (if tl
 +
        (setcdr tl new)
 +
      (add-to-list alist (cons term new)))))
 +
 
 +
(defun xgp-cfsi (style)
 +
  "Deciding whether using CFSI."
 +
  (interactive "Style: ")
 +
  (c-set-style style)
 +
  (setq indent-tabs-mode
 +
        nil
 +
        c-hanging-semi&comma-criteria
 +
        (quote (c-semi&comma-inside-parenlist)))
 +
 
 +
  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-open nil)
 +
  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-close nil)
 +
  (local-set-key " " 'self-insert-command))
 +
 
 +
(defun xgp-cfsi-erase-blanks ()
 +
  "Erase all trivial blanks for CFSI."
 +
  (interactive)
 +
  (save-excursion
 +
    (goto-char (point-min))
 +
    (while (re-search-forward "[ \t]+$" nil t)
 +
      (replace-match "" nil nil))))
 +
 
 +
(defun linux-c-mode()
 +
  (define-key c-mode-map [return] 'newline-and-indent)
 +
  (setq imenu-sort-function 'imenu--sort-by-name)
 +
  (interactive)
 +
  (imenu-add-menubar-index)
 +
  (which-function-mode)
 +
  (c-toggle-auto-state)
 +
  (c-toggle-hungry-state)
 +
  (setq indent-tabs-mode nil)
 +
  (xgp-cfsi "linux"))
 +
(add-hook 'c-mode-common-hook 'linux-c-mode)
 +
;; 代码补全
 +
(add-hook 'c-mode-hook 'company-mode)
 +
(add-hook 'c++-mode-hook 'company-mode)
 +
 
 +
;; py
 +
(setq tab-width 4)
 +
(set-variable 'python-indent-offset 4)
 +
;;(set-variable 'python-indent-guess-indent-offset nil)
 +
</pre>
 +
 
 +
===reload configfile 重启===
 +
 
 +
emacs 打开~/.emacs的时候执行命令M-x eval-buffer,就可以使配置文件立即生效。
 +
 
 +
 
 +
[https://blog.csdn.net/qq_40875035/article/details/82883325 emacs配置]
 +
 
 +
[https://zhuanlan.zhihu.com/p/114329781 我的EMACS设置]
 +
 
 +
== 不错的配置 c什么都包括了 undo-tree暂时去掉 其它感觉不错 2021==
 +
<pre>
 +
mv ~/.emacs.d ~/.emacs.d.bak
 +
git clone --depth 1 https://github.com/seagle0128/.emacs.d.git ~/.emacs.d
 +
</pre>
 +
 
 +
有空好好的看一下
 +
https://github.com/seagle0128/.emacs.d
 +
 
 +
 
 +
 
 +
=== c 常用命令===
 +
emacs中很多命令都对C语言格式支持,补充几个命令M-x c-mode  当无法识别C语法格式的文件,可以强制打开C mode语法高亮C-M-p  跳转到}或)匹配的括号C-M-n  跳转到(或{匹配的括号M-x indent-region 自动缩进选定的区域C-c C-c 注释掉整个区域C-u C-c C-c 取消注释C-c C-u  跳转到前面的一个#ifdef C-c C-n  跳转到宏的开头或结尾C-c C-e 扩展宏编译排错:C-x ` (出错信息中)下一个错误,一个窗口显示错误信息,另一个显示源码的出错位置C-c C-c 转到出错位置调试:启动gdb调试器后,光标在源码文件缓冲区中时:C-x SPC 在当前行设置断点gdb在emacs中调用调试并不完美,有时候会出一些异常的情况。工作中如果emacs作为IDE用的话,一般在远程终端字符环境下更合适,如果作为专业的图形化IDE,codeblock等更合适,eclipse+CDT也是一种选择。
 +
 
 +
=== c 配置文件===
 +
<pre>
 +
;; 配置文件 for  c  or c ++
 +
;; cat ~/.emacs
 +
 
 +
;; 在 mode line 上显示行列号
 +
(setq column-number-mode 1)
 +
(setq line-number-mode 1)
 +
 
 +
;;显示列号
 +
(setq column-number-mode t)
 +
 
 +
;; 显示行号
 +
(global-linum-mode 1)
 +
 
 +
;; 取消滚动栏,工具栏
 +
;;(tool-bar-mode 0)
 +
;;(menu-bar-mode 0)
 +
;;(scroll-bar-mode 0)
 +
 
 +
;; 关闭emacs启动时的页面
 +
(setq inhibit-startup-message 1)
 +
(setq gnus-inhibit-startup-message 1)
 +
;; 以 y/n代表 yes/no
 +
(fset 'yes-or-no-p 'y-or-n-p)
 +
;;; 设置备份策略
 +
(setq make-backup-files t)
 +
(setq kept-old-versions 2)
 +
(setq kept-new-versions 2)
 +
(setq delete-old-versions t)
 +
(setq backup-directory-alist '(("" . "~/.emacsbackup")))
 +
 
 +
;; 公共插件配置
 +
;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
 +
(require 'package)
 +
(add-to-list 'package-archives
 +
            '("melpa" . "http://melpa.milkbox.net/packages/") t)
 +
(package-initialize)
 +
 
 +
 
 +
</pre>
 +
 
 +
[https://tuhdo.github.io/c-ide.html C/C++ Development Environment for Emacs]
 +
 
 +
[https://segmentfault.com/a/1190000003878553 Emacs 中 C/C++ 编程基本环境配置2018]
 +
 
 +
[https://blog.csdn.net/cuijianzhongswust/article/details/10313865 将Emacs配置成一个C/C++的IDE编程环境]
 +
 
 +
https://wikemacs.org/wiki/C-ide
 +
 
 +
[https://github.com/atilaneves/cmake-ide enable IDE-like features on Emacs]
 +
 
 +
https://www.youtube.com/watch?v=5FQwQ0QWBTU
 +
 
 +
==from tour ==
 +
<pre>
 +
#这些笔记完全作到wiki么 会不会太多 而没有重点的感觉 
 +
 
 +
* 如果 EMACS 失去响应(IF EMACS STOPS RESPONDING)
 +
-----------------------------------------------
 +
如果 Emacs 对你的命令失去响应,你可以用 C-g 来安全地终止这条命令。C-g
 +
也可以终止一条执行过久的命令。
 +
 
 +
C-g 还可以取消数字参数和只输入到一半的命令。
 +
 
 +
>> 输入 C-u 100 设定一个值为 100 的数字参数,然后按 C-g。
 +
  现在再按 C-f,光标应该只会移动一个字符,因为你已经用 C-g 取消了参数。
 +
 
 +
如果你不小心按了一下 <ESC>,你也可以用 C-g 来取消它。
 +
【这个说法似乎有问题,因为按照这个按键顺序输入的应该是 C-M-g。
 +
取消 <ESC> 的正确做法是再连按两次 <ESC>。】
 +
 
 +
 
 +
* 插入与删除(INSERTING AND DELETING)
 +
--------------------------------------
 +
 
 +
,大部分的 Emacs 命令都可以指定重复次数,这其中也包括输入字符的
 +
命令。重复执行输入字符的命令实际上就是输入多个相同的字符。
 +
 
 +
>>  试试 C-u 8 *,这将会插入 ********。
 +
 
 +
好,现在你应该已经掌握了最基本的的文本插入和修改功能,其实删除还可以
 +
“以词为单位”进行,下面是一个关于“删除”操作的小结:
 +
 
 +
        <DEL>        删除光标前的一个字符
 +
        C-d          删除光标后的一个字符
 +
 
 +
M-<DEL>      移除光标前的一个词
 +
        M-d          移除光标后的一个词
 +
 
 +
        C-k          移除从光标到“行尾”间的字符
 +
        M-k          移除从光标到“句尾”间的字符
 +
 
 +
【可能你已经注意到了“删除(delete)”和“移除(kill)”的用词区别,后
 +
文会有详细说明。】
 +
 
 +
注意“<DEL> 和 C-d”还有“M-<DEL> 和 M-d”是根据前述惯例从 C-f和 M-f 衍生的
 +
出来的(其实<DEL>不是控制字符,我们先忽略这一点)。C-k和 M-k 的关系在
 +
某种程度上与 C-e 和 M-e 一样――如果把“一行”和“一句”作一个类比的话。
 +
 
 +
 
 +
你也可以用一种通用的办法来移除缓冲区里的任何一部分:首先把光标移动到你
 +
想要移除的区域的一端,然后按 C-<SPC>(<SPC>指空格)【注意,C-<SPC> 往
 +
往被中文用户设定成输入法热键,如果这样,C-<SPC> 就被系统拦截而无法传递
 +
给 Emacs 了,在这种情况下可以使用C-@。】,然后将光标移动到你准备移除的
 +
文字的另一端。这个时候, Emacs 会高亮光标和你按下 C-<SPC> 之间的文本。
 +
最后,按下 C-w 。这样就可以把位于这两点之间的所有文字移除了。
 +
 
 +
 
 +
注意,“移除(kill)”和“删除(delete)”的不同在于被移除的东西可以被重新
 +
插入(在任何位置),而被删除的就不能使用相同的方法重新插入了(不过可以
 +
通过撤销一个删除命令来做到,后文会提到)。
 +
 
 +
 
 +
重新插入被移除的文字称为“召回(yank)
 +
 
 +
 
 +
召回的命令是 C-y。它会在光标所在处插入你最后移除的文字。
 +
 
 +
 
 +
C-y 可以召回最近一次移除的内容,那如何召回前几次移除的内容呢?它们当然
 +
没有丢,你可以用 M-y 来召回它们。在用 C-y 召回最近移除的文字之后,紧接
 +
着再按 M-y 就可以召回再前一次被移除的内容,再按一次 M-y 又可以召回再上
 +
一次的……连续使用 M-y 直到找到你想要召回的东西,然后什么也不用做,继续
 +
编辑就行了。
 +
 
 +
如果连续按 M-y 很多次,你可能会回到起始点,也就是最近移除的文字。
 +
【看得出这实际上是一个环。】
 +
 
 +
>> 移除一行,移动一下光标,然后再移除另外一行。
 +
  按 C-y 将第二次移除的那行召回来。
 +
  紧接着再按 M-y,它将会被第一次移除的那行取代。
 +
  试着再按几下 M-y 看看会发生什么。
 +
  再继续,直到第二行被召回来,然后再做个几次。
 +
  如果感兴趣,你可以试着给 M-y 指定一个正的或负的参数。
 +
 
 +
 
 +
* 撤销(UNDO)
 +
--------------
 +
如果你修改了一段文字,又觉得改得不好,可以用 undo 命令进行撤销:C-/。
 +
另外, C-x u 和 C-/ 完全一样,但是按起来有些麻烦。
 +
 
 +
* 文件(FILE)
 +
--------------
 +
 
 +
 
 +
* 缓冲区(BUFFER)
 +
------------------
 +
 
 +
你可以用 C-x C-f 找到并打开第二个文件,但第一个文件仍然在 Emacs 中。要
 +
切回第一个文件,一种办法是再用一次 C-x C-f。这样,你就可以在 Emacs 中同
 +
时打开多个文件。
 +
不过还有一个更简单的办法,那就是用 C-x b。用这条命
 +
令,你必须输入缓冲区的名称。(如果是返回默认的第一个不用名称)
 +
 
 +
 
 +
>> 通过输入 C-x C-f foo <Return> 创建一个名为“foo”的文件。
 +
  然后输入 C-x b TUTORIAL.cn <Return> 回到这里。
 +
 
 +
 
 +
 
 +
C-x s  保存多个缓冲区
 +
 
 +
 
 +
输入 C-x 1 离开缓冲区列表
 +
 +
 +
 +
* 命令集扩展(EXTENDING THE COMMAND SET)
 +
-----------------------------------------
 +
        C-x    字符扩展。  C-x 之后输入另一个字符或者组合键。
 +
        M-x    命令名扩展。M-x 之后输入一个命令名。
 +
 
 +
C-z 可以暂时离开 Emacs――当然,你还可以再回来。
 +
 +
C-x 的扩展命令有很多,下面列出的是你已经学过的:
 +
 
 +
        C-x C-f        寻找文件。
 +
C-x C-s        保存文件。
 +
        C-x C-b        列出缓冲区。
 +
        C-x C-c        离开 Emacs。
 +
C-x 1          关掉其它所有窗格,只保留一个。
 +
        C-x u          撤销。
 +
 
 +
 
 +
 
 +
* 自动保存(AUTO SAVE)
 +
-----------------------
 +
 
 +
所以,假如不幸真的发生了,你大可以从容地打开原来的文件(注意不是自动保
 +
存文件)然后输入 M-x recover file <Return> 来恢复你的自动保存文件。在
 +
提示确认的时候,输入 yes<Return>。
 +
 
 +
 
 +
* 状态栏(MODE LINE)
 +
---------------------
 +
 
 +
“L” 和其后的数字给出了光标所在行的行号。
 +
 
 +
最开头的星号(*)表示你已经对文字做过改动。刚刚打开的文件肯定没有被改动
 +
过,所以状态栏上显示的不是星号而是短线(-)。
 +
 
 +
状态栏上小括号里的内容告诉你当前正在使用的编辑模式。缺省的模式是
 +
Fundamental,就是你现在正在使用的这个。它是一种“主模式”。
 +
 
 +
 
 +
用 C-l C-l 将本行带到屏幕的最上方。
 +
 
 +
 
 +
 
 +
* 搜索(SEARCHING)
 +
-------------------
 +
 
 +
C-s 是向前搜索,C-r 是向后搜索。不过手别这么快!别着急试。
 +
 
 +
在按下 C-s 之后,回显区里会有“I-search”字样出现,表明目前 Emacs 正处
 +
于“渐进搜索”状态,并等待你输入搜索字串。按 <Return> 可以结束搜索。
 +
 
 +
>> 输入 C-s 开始一个搜索。注意敲慢一点,一次输入一个字符。
 +
  慢慢输入“ccusor”这个词,每敲一个字都停顿一下并观察光标。
 +
  现在你应该已曾经找到“ccusor”这个词了。
 +
>> 再按一次 C-s,搜索下一个“ccusor”出现的位置。
 +
>> 现在按四次 <DEL> ,看看光标是如何移动的。
 +
>> 敲 <Return> 结束搜索。
 +
 
 +
看仔细了么?在一次渐进式搜索中,Emacs 会尝试跳到搜索目标出现的位置。要
 +
跳到下一个命中位置,就再按一次 C-s。如果找不到目标,Emacs 会发出“哔”
 +
的一声,告诉你搜索失败。在整个过程中,都可以用 C-g 来终止搜索。【你会发
 +
现 C-g 会让光标回到搜索开始的位置,而 <Return> 则让光标留在搜索结果上,
 +
这是很有用的功能。】
 +
 
 +
在渐进式搜索中,按 <DEL> 会“撤回”到最近一次搜索的命中位置。如果之前没
 +
有一个命中, <DEL> 会抹去搜索字符串中的最后一个字符。比如你已经输入了
 +
“c”,光标就停在“c”第一次出现的位置,再输入“u”,光标停在“cu”第一次出现
 +
的位置,这时再按 <DEL> ,“u”就从搜索字串中消失了,然后光标会回到“c”第
 +
一次出现的位置。
 +
 
 +
 
 +
* 多窗格(MULTIPLE WINDOWS)
 +
----------------------------
 +
 
 +
> 移动光标到这一行,然后输入 C-l C-l。
 +
 
 +
>> 现在输入 C-x 2,它会将屏幕划分成两个窗格。
 +
  这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。
 +
 
 +
>> 试试用 C-M-v 滚动下方的窗格。
 +
  (如果你并没有 META 键,用 ESC C-v 也可以。)
 +
  【向上滚动是 C-M-S-v,也就是同时按住 CONTROL、META 和 SHIFT 再按 v】
 +
 
 +
>> 输入 C-x o(“o”指的是“其它(other)”),
 +
  将光标转移到下方的窗格。
 +
 
 +
>> 在下方的窗格中,用 C-v 和 M-v 来滚动。
 +
  同时继续在上方的窗格里阅读这些指导。
 +
 
 +
 
 +
C-M-v 是一个 CONTROL-META 组合键。如果你有 META (或 Alt)键的话,可以
 +
同时按住CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,
 +
因为它们只是用来“修饰(modify)”你输入的字符的。
 +
 
 +
 
 +
>> (在上方窗格里)输入 C-x 1 关掉下方窗格。
 +
 
 +
(如果你在下方的窗格里输入 C-x 1,那么就会关掉上方的窗格。你可以把这个
 +
命令看成是“只保留一个窗格”――就是我们正在编辑的这个。)
 +
 
 +
不同的窗格可以显示不同的缓冲区。如果你在一个窗格里用 C-x C-f 打开了一个
 +
文件,另一个窗格并不会发生什么变化。任何一个窗格里都可以用来打开文件。
 +
 
 +
 
 +
* 多窗口(MULTIPLE FRAMES)
 +
------------------
 +
 
 +
 
 +
* 更多精彩(MORE FEATURES)
 +
---------------------------
 +
 
 +
想学习更多的使用技巧,Emacs 使用手册(manual)值得一读。你可以读纸版的
 +
书,也可以在 Emacs 中读(可以从 Help 菜单进入或者按 C-h r)。提两个你
 +
可能会很感兴趣的功能吧,一个是可以帮你少敲键盘的 completion(自动补全),
 +
另一个是方便文件处理的 dired(目录编辑)。
 +
 
 +
Completion 可以替你节省不必要的键盘输入。比如说你想切换到 *Message* 缓
 +
冲区,你就可以用 C-x b *M<Tab> 来完成。只要 Emacs 能够根据你已经输入的
 +
文字确定你想要输入的内容,它就会自动帮你补齐。Completion 也可用于命令
 +
名和文件名。有关 Completion 的详细说明可以在 Emacs Info 中的
 +
“Completion”一节里找到。
 +
 
 +
Dired 能够在一个缓冲区里列出一个目录下的所有文件(可以选择是否也列出子
 +
目录),然后你可以在这个文件列表上完成对文件的移动、访问、重命名或删除
 +
等等操作。Dired 也在 Emacs 使用手册中有详细介绍,参见“Dired”一节。
 +
 
 +
 
 +
下面列出主要术语的译词对照,并给出注释说明:
 +
 
 +
    command              命令
 +
    cursor                光标
 +
    scrolling            滚动
 +
    numeric argument      数字参数
 +
    window                窗格 [1]
 +
    insert                插入
 +
    delete                删除 [2]
 +
    kill                  移除 [2]
 +
    yank                  召回 [2]
 +
    undo                  撤销
 +
    file                  文件
 +
    buffer                缓冲区
 +
    minibuffer            小缓冲
 +
    echo area            回显区
 +
    mode line            状态栏
 +
    search                搜索
 +
    incremental search    渐进式搜索 [3]
 +
 
 +
 
 +
20180313 ln 792
 +
here
 +
 
 +
 
 +
M-x replace-string ENTER search-string ENTER 替换
 +
 +
 
 +
 
 +
用 <Return> 结束文件名的输入
 +
Return 这里是什么意思呢  回车么 
 +
 
 +
 
 +
Alt + x
 +
输入: linum-mode
 +
 
 +
 
 +
 
 +
emacs中如何跳到指定行
 +
 
 +
M-x goto-line 然后回车  <line_number>
 +
 
 +
以在.emacs文件中定制一下(添加以下一行):
 +
 
 +
(define-key ctl-x-map "l" 'goto-line)
 +
 
 +
 
 +
然后每次在emacs中按C-x再按l,输入指定的行号就可以了。
 +
 
 +
http://blog.csdn.net/grey_csdn/article/details/78905862
 +
http://bbs.csdn.net/topics/60028785
 +
</pre>
 +
==package  ELPA中国镜像==
 +
<pre>
 +
 
 +
在配置文件中加入  ~/.emacs.d/lisp$vim  init-custom.el #可能是这个
 +
(setq package-archives '(("gnu" . "http://mirrors.ustc.edu.cn/elpa/gnu/")
 +
                        ("melpa" . "http://mirrors.ustc.edu.cn/elpa/melpa/")
 +
                        ("melpa-stable" . "http://mirrors.ustc.edu.cn/elpa/melpa-stable/")
 +
                        ("org" . "http://mirrors.ustc.edu.cn/elpa/org/")))
 +
 
 +
 
 +
也可以使用命令M-x list-packages获取插件列表,然后 使用C-s找到 软件名    i  - 选择要安装的包  例如叫 elpy 来安装
 +
 
 +
 
 +
;内置的package管理,emacs24以上的版本有用
 +
(require 'package)
 +
;;将melpa仓库地址加入到package-archives这个列表变量里面
 +
(add-to-list 'package-archives
 +
    '("melpa" . "http://melpa.org/packages/") t)
 +
;;这个是国内一个elpa仓库镜像,速度更快一些,你懂得
 +
(add-to-list 'package-archives
 +
    '("popkit" . "http://elpa.popkit.org/packages/") t)
 +
;;初始化package
 +
(package-initialize)
 +
;;更新仓库里面的package
 +
(when (not package-archive-contents)
 +
  (package-refresh-contents))
 +
</pre>
 +
 
 +
===常用操作===
 +
<pre>
 +
#软件包安装
 +
Alt+x list-packages
 +
 
 +
可以先用C-s向下搜索  autopair
 +
找到后 回来后 按i再按x就下载到本地了。然后打开emacs的配置文件init.el,在里面添加下面:
 +
 
 +
常用快捷键
 +
i  - 选择要安装的包
 +
d - 选择要删除的包
 +
U - 升级已安装的包
 +
x  - 执行操作
 +
d - 选择要删除的包
 +
</pre>
 +
 
 +
https://mirrors.ustc.edu.cn/help/elpa.html
 +
 
 +
https://mirror.tuna.tsinghua.edu.cn/help/elpa/
 +
[http://longlycode.github.io/2016/02/02/emacs%E5%AE%8C%E5%85%A8%E8%A1%A5%E5%AE%8C%E8%AE%A1%E5%88%92-%E4%B8%89/ emacs完全补完计划(三)——package的引入和管理]
 +
 
 +
[https://blog.csdn.net/MathaDora/article/details/79463046  emacs学习笔记(package列表查看&添加packages源&安装packages)]
 +
 
 +
==emacs-gtk==
 +
<pre>
 +
让选中可以高亮
 +
自己打开随便看下 居然就看到了 不错
 +
emacs-gtk  --> Options --> customize emacs  --> custom themes  -->  个人感觉 adwaita 还不错
 +
save theme settings
 +
</pre>
 +
==emacs 进阶学习==
 +
 
 +
https://link.zhihu.com/?target=https%3A//github.com/emacs-tw/awesome-emacs
 +
0.我雖然是看man過來的,但是這份名單,如果早知道應該會輕鬆很多。--- update1.從starter-kit入手把,爬梯子出去看redguardtoo的獨立博客,你會發現吊爆了。當然他的一年的文章一定要看。而且可以git下來,revert到剛開始的commit,一個個commit看。2. 還有就是各種折騰。各種動手把,拒絕其他一切的編輯器。3.改鍵位,乾脆去買了HHKB也可以,如你很土豪。4.看書呀,學elisp,這個階段你要看田春冰河的,李殺的博客了。學着寫個插件把。PS.學習emacs會改變你編程思維的,包括你軟件開發的工作流。lisp系各種優雅.上面編號不分先後。
 +
 
 +
[https://www.zhihu.com/question/19783016 怎样学习 Emacs]
 +
 
 +
[https://space.bilibili.com/6773469/video?tid=0&page=1&keyword=&order=pubdate 不错的emacs视频 ]
 +
 
 +
[https://lifegoo.pluskid.org/wiki/FasterEmacs.html 加速你的 Emacs]
 +
 
 +
[https://www.cnblogs.com/UnGeek/archive/2013/04/28/3049457.html  生活在emacs中 ]
 +
 
 +
[https://www.cnblogs.com/holbrook/archive/2012/02/15/2357336.html Emacs学习笔记(1):初学者的学习计划]
 +
 
 +
[https://www.cnblogs.com/holbrook/archive/2012/03/06/2381636.html Emacs学习笔记(7):简单的配置]
 +
 
 +
[https://www.cnblogs.com/holbrook/archive/2012/02/15/2357335.html Emacs学习笔记(2): 初识Emacs]
 +
 
 +
[https://www.cnblogs.com/holbrook/tag/emacs/ emacs 学习标签 ]
 +
 
 +
 
 +
[https://zklhp.github.io/2016/06/18/What-I-do-with-Emacs/ 我用Emacs干什么?为什么用Emacs?]
 +
 
 +
[https://zhuanlan.zhihu.com/p/56273332 作为 CEO 使用 Emacs 的两年经验之谈]
 +
 
 +
==music emms==
 +
===install===
 +
<pre>
 +
 
 +
这个方式可以安装到新 的emms 7.8
 +
使用M-X list-packages 进入package列表,如果已在这个界面,按 r 键刷新。已安装Solarized主题为例,按C-s搜索“emms”,将光标置于“solarized”那行,按下 i 键,将其标记为待安装的,然后按 x 键执行标记为 i 的待安装的项目。
 +
 
 +
 
 +
注意  一时不知如何播放quicktime 可以 Audacity 转音乐格式的嘛 文件-- 导出  --导出为MP3  flac 格式更加不错
 +
 
 +
;; For ruby begin
 +
;;#添加到配置文件 例如 .emacs
 +
  (setq package-archives '(("gnu"  . "http://elpa.emacs-china.org/gnu/")
 +
                          ("melpa" . "http://elpa.emacs-china.org/melpa/")))
 +
 
 +
 
 +
emms 在默认刚刚安装的emacs 24是有的
 +
 
 +
M-x package-install RET emms RET 好像还是有问题呢
 +
叫emms-stale
 +
 
 +
https://elpa.gnu.org/packages/emms.html
 +
https://ftp.gnu.org/gnu/emms/emms-6.00.tar.gz
 +
 
 +
 
 +
trouble
 +
 
 +
evan@myxps:~/.emacs.d/elpa$ mv emms-20210120.1745/ bak.emms-20210120.1745/
 +
 
 +
 
 +
</pre>
 +
===config===
 +
<pre>
 +
;加了这个配置后 随便玩就可以播放了,不然不行
 +
;; always start from this 默认的播放目录
 +
;;(setq emms-source-file-default-directory "/home/evan/data/music/westlife")
 +
;;(add-to-list 'load-path "/usr/share/emacs/site-lisp/emms")    ;;; emms目录
 +
(add-to-list 'exec-path "/usr/bin/mplayer/")                ;;;mplayer目录
 +
(require 'emms-setup)
 +
(emms-devel)
 +
;; players
 +
(setq emms-player-mpg321-command-name "mpg123"
 +
      emms-player-mplayer-command-name "mplayer"
 +
      emms-player-list '(emms-player-mplayer
 +
                        emms-player-mplayer-playlist
 +
                        emms-player-ogg123
 +
                        emms-player-mpg321))
 +
;; Show the current track each time EMMS
 +
;; starts to play a track with "播放 : "
 +
(add-hook 'emms-player-started-hook 'emms-show)
 +
(setq emms-show-format "播放: %s")
 +
;; When asked for emms-play-directory,
 +
;; always start from this 默认的播放目录
 +
(setq emms-source-file-default-directory "/home/evan/data/music/westlife")
 +
(setq emms-playlist-buffer-name "音乐")
 +
 
 +
;;;emms快捷键设置
 +
(global-set-key (kbd "C-c e l") 'emms-playlist-mode-go)
 +
(global-set-key (kbd "C-c e s") 'emms-start)
 +
(global-set-key (kbd "C-c e e") 'emms-stop)
 +
(global-set-key (kbd "C-c e n") 'emms-next)
 +
(global-set-key (kbd "C-c e p") 'emms-pause)
 +
(global-set-key (kbd "C-c e f") 'emms-play-playlist)
 +
(global-set-key (kbd "C-c e o") 'emms-play-file)
 +
(global-set-key (kbd "C-c e d") 'emms-play-directory-tree)
 +
(global-set-key (kbd "C-c e a") 'emms-add-directory-tree)
 +
;;(set-fontset-font "fontset-default"
 +
;;'gb18030 '("Microsoft YaHei" . "unicode-bmp"))
 +
;;(add-to-list 'load-path "/usr/share/emacs/site-lisp") ;;
 +
 
 +
(setq default-major-mode 'text-mode);;一打开就起用 text 模式。
 +
(global-font-lock-mode t);;语法高亮
 +
(auto-image-file-mode t);;打开图片显示功能
 +
(fset 'yes-or-no-p 'y-or-n-p);;以 y/n代表 yes/no,可能你觉得不需要,呵呵。
 +
(column-number-mode t);;显示列号
 +
(show-paren-mode t);;显示括号匹配
 +
(display-time-mode 1);;显示时间,格式如下
 +
(setq display-time-24hr-format t)
 +
(setq display-time-day-and-date t)
 +
(tool-bar-mode nil);;去掉那个大大的工具栏
 +
(scroll-bar-mode nil);;去掉滚动条,因为可以使用鼠标滚轮了 ^_^
 +
(mouse-avoidance-mode 'animate);;光标靠近鼠标指针时,让鼠标指针自动让开,别挡住视线。很好玩阿,这个功能
 +
(setq mouse-yank-at-point t);;支持中键粘贴
 +
(transient-mark-mode t);;这个忘了,郁闷!
 +
(setq x-select-enable-clipboard t);;支持emacs和外部程序的粘贴
 +
(setq frame-title-format "hbs@%b");;在标题栏提示你目前在什么位置。你要把hbs改成自己的用户名
 +
(setq default-fill-column 80);;默认显示 80列就换行
 +
;;(load-file "/home/hbs/myEmacs/color-theme.el")
 +
;;(color-theme-dark-blue);选择 darkblue的配色方案
 +
 
 +
;;(add-to-list 'exec-path "/usr/bin/mplayer/")
 +
 
 +
</pre>
 +
 
 +
===Usage===
 +
<pre>
 +
 
 +
;;可以设置快捷键吧
 +
;;加了这个配置后 随便玩就可以播放了,不然不行
 +
(require 'emms-setup)
 +
(emms-all)
 +
(emms-default-players)
 +
 
 +
pulseaudio 打开就知是 mpq321后端在播放
 +
 
 +
交互使用
 +
 
 +
使用 emms-playlist-mode-go 命令即可进入正在播放的播放列表的 buffer 。 在这里可以方便地控制播放上一首、下一首、随机的某一首歌等。通过 ? 可以 描述当前 mode ,并得到一份详细的可用命令列表。
 +
 
 +
我通常使用 emms-play-find 或者 emms-play-directory-tree 来打开一个播放 列表,然后用 d 删除不想要的曲目,并 C-x C-s 将其保存起来。
 +
 
 +
EMMS 还提供了打分机制。并可以设置最低分数,如果分数低于最低分数将不会 被播放。要是能像 Dired 或者 Mew 的 summary-mode 那样能够方便地贴标签并 进行批量操作就更舒服了!
 +
 
 +
如何固定播放列表
 +
 
 +
 
 +
我的初级用法
 +
 
 +
问题 这播放列表会被 rewrite
 +
emms-play-find 或者 emms-play-directory-tree 来打开一个播放 列表->  C-x C-s  -->  cat ~/myplay
 +
 
 +
alt+x  emms-next
 +
 
 +
 
 +
</pre>
 +
====Basic Commands====
 +
<pre>
 +
;;Basic Commands
 +
emms-stop  也可以直接用 s
 +
</pre>
 +
 
 +
官方文档最好了啦
 +
 
 +
https://www.gnu.org/software/emms/manual/#Quickstart-Guide[https://linux.cn/article-12868-1.html 10 个让你进入 Emacs 世界的技巧 ]
 +
 
 +
 
 +
 
 +
[https://lifegoo.pluskid.org/wiki/EMMS.html The Emacs Multimedia System]
 +
 
 +
https://www.emacswiki.org/emacs/EMMS
 +
 
 +
[https://www.cnblogs.com/jiqingwu/p/4043540.html  用Emacs看电影 ]
 +
 
 +
[https://lifegoo.pluskid.org/wiki/EMMS.html The Emacs Multimedia System]
 +
 
 +
[https://qastack.cn/emacs/3667/what-are-the-options-to-play-music-from-within-emacs 在Emacs中播放音乐有哪些选项]
 +
 
 +
==功能 ==
 +
    收发电子邮件、上新闻组(Gnus)
 +
    无缝直接编辑远程文件(Tramp)
 +
    通过Telnet登录远程主机
 +
    操作壳层(M-x EShell,Term)
 +
    结合git, mercurial等版本控制系统并直接操作(Magit,VC)
 +
    上Twitter(Twittering-mode)
 +
    登陆IRC和朋友交流(M-x ERC,rcirc)
 +
    电子数据表
 +
    模拟其他编辑器,如vi(Evil-mode)、WordStar、EDT、TPU等
 +
    编辑Wiki (Wikipedia-mode)
 +
    对多种编程语言的编辑,如C/C++、Perl、Python、Lisp等等
 +
    调试程序,结合GDB,EDebug等。
 +
    玩游戏
 +
    计算器
 +
    心理咨询(M-x doctor)
 +
    煮咖啡
 +
    记笔记、日记(Org-mode)
 +
    管理日程,Task,待办事项(ToDo),约会等GTD(Org-mode)
 +
    写作与出版(Org-mode,Muse-mode)
 +
    目录管理(Dired)
 +
    文件比较、合并(Ediff)
 +
    阅读info和man文档(M-x info,woman)
 +
    浏览网站(M-x eww)
 +
    为各种程序(TeX、LaTeX等)提供统一的操作界面
 +
    ……
 +
 
 +
此外Emacs还有如下特点:
 +
 
 +
    实时编辑器
 +
    Self-documenting
 +
    可定制性
 +
    可扩展性(集成Lisp语言)
 +
 
 +
== References 参考==
 +
 
 +
 
 +
[https://zhuanlan.51cto.com/art/201911/605577.htm 一个Emacs程序员的一天]
 +
[https://my.oschina.net/alphajay/blog/7737 Emacs快捷键的总结]
 +
 
 +
[https://segmentfault.com/a/1190000003811296 走近emacs 201801]
 +
 
 +
[http://blog.csdn.net/cherylnatsu/article/details/6536959  Emacs常用命令快速参考]
 +
 
 +
[https://www.ibm.com/developerworks/cn/education/aix/emacs1-1/index.html 学习 Emacs 的基础知识]
 +
 
 +
[https://github.com/redguardtoo/mastering-emacs-in-one-year-guide 一年成为 Emacs 高手 ]
 +
 
 +
http://emacser.com/
 +
 
 +
[https://linux265.com/soft/3857.html  Emacs - 代码编辑神器之一]
 +
 
 +
[https://www.jianshu.com/p/0fdf314713e0 为什么要用 Emacs]
 +
 
 +
Emacs 入门
 +
[https://blog.windrunner.me/tool/emacs.html Emacs 入门]
 +
 
 +
https://i.linuxtoy.org/docs/guide/ch25.html
 +
 
 +
[https://blog.csdn.net/FunLab/article/details/97142580  Emacs Tutorial 快速指南]
 +
 
 +
[https://blog.csdn.net/kewei168/article/details/103951989  Emacs配置入门]
 +
 
 +
[https://www.emacswiki.org/emacs/%E9%A6%96%E9%A1%B5 emacswiki]
 +
 
 +
[https://www.jianshu.com/p/732157b02ecc Emacs,最强编辑器,没有之一]
 +
 
 +
Emacs org mode
 +
https://i.linuxtoy.org/docs/guide/ch32s03.html#id3155525
 +
 
 +
 
 +
https://www.emacswiki.org/emacs?interface=zh-cn
 +
 
 +
https://www.cnblogs.com/blfshiye/p/4566900.html
 +
 
 +
 
 +
https://www.gnu.org/software/emacs/manual/html_node/efaq/Installing-Emacs.html
 +
 
 +
[https://www.gnu.org/software/emacs/tour/index.html  A Guided Tour of Emacs]
 +
 
 +
Emacs - the Best Python Editor https://realpython.com/blog/python/emacs-the-best-python-editor/
 +
 
 +
Emacs:最好的Python编辑器  http://codingpy.com/article/emacs-the-best-python-editor/
 +
 
 +
[https://wiki.archlinux.org/index.php/Emacs_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#.E8.BF.90.E8.A1.8CEmacs Emacs (简体中文)]
 +
 
 +
[http://ergoemacs.org/emacs/emacs_package_system.html How to Install Packages Using ELPA, MELPA]
 +
 
 +
[http://www.cnblogs.com/xiaosha/p/3366422.html emacs python 配置]
 +
 
 +
[https://maskray.me/blog/2015-09-18-conversion-to-emacs 皈依Emacs]
 +
 
 +
[https://elloop.github.io/tools/2016-03-01/emacs-accumulate-5-packages-extensions  【积水成渊-逐步定制自己的Emacs神器】3:为Emacs安装扩展]
 +
 
 +
[https://www.cnblogs.com/qazwsxedc121/p/3203361.html  我的Emacs折腾经验谈(一) 一些给新人的建议 ]
 +
 
 +
===wiki ===
 +
Wiki编辑器, 通过 Yaoddmuse 几乎能支持所有的Wiki格式, 实时语法高亮, 你不用担心保存以后确发现格式错了
 +
 
 +
https://www.emacswiki.org/emacs/Yaoddmuse
 +
 
 +
[https://blog.csdn.net/freexploit/article/details/572224 用Emacs Wiki帮你写Blog]
 +
 
 +
===2019===
 +
 
 +
[https://www.cnblogs.com/robertzml/archive/2009/09/10/1564108.html 学习Emacs系列教程(一):基本使用]
 +
 
 +
[http://longlycode.github.io/2016/01/28/emacs%E5%AE%8C%E5%85%A8%E8%A1%A5%E5%AE%8C%E8%AE%A1%E5%88%92-%E4%B8%80-1/ emacs完全补完计划(一)——嘴炮和入门]
 +
 
 +
[http://jixiuf.github.io/blog/emacs-%E8%87%AA%E5%B8%A6%E7%9A%84%E7%AE%80%E5%8D%95%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B%28tutorial%29/ emacs 自带的简单入门教程(TUTORIAL)]
 +
 
 +
[http://www.cnblogs.com/Open_Source/archive/2011/07/17/2108747.html Org-mode 简明手册]
 +
 
 +
[http://blog.csdn.net/grey_csdn/article/category/7131378/5 小灰笔记 emacs]
 +
 
 +
[https://www.jianshu.com/p/b4cf683c25f3 从零开始——Emacs 安装配置使用教程 2015]
 +
 
 +
[https://zhuanlan.zhihu.com/p/87527003 编辑器终结者:vim与emacs双剑合璧]
 +
 
 +
[https://www.zhihu.com/question/30955165 Emacs有什么优点,用Emacs写程序真的比IDE更方便吗]
 +
===2021===
 +
[https://zhuanlan.zhihu.com/p/96817849 “臃肿”的Emacs为什么性能最优]
 +
 
 +
[https://zhuanlan.zhihu.com/p/149436492 Emacs大牛李杀的快捷键优化技巧]
 +
 
 +
=== 参考 for python===
 +
[http://codingpy.com/article/emacs-the-best-python-editor/ Emacs:最好的Python编辑器]
 +
=== 参考 for c===
 +
[https://ruglcc.blog.csdn.net/article/details/7855733  将Emacs配置成一个C/C++的IDE编程环境]
 +
 
 +
[https://segmentfault.com/a/1190000003878553 Emacs 中 C/C++ 编程基本环境配置]
 +
 
 +
[http://txgcwm.github.io/blog/2013/07/20/jiang-emacspei-zhi-cheng-%5B%3F%5D-ge-c-slash-c-plus-plus-de-idebian-cheng-huan-jing/#top 将Emacs配置成一个C/C++的IDE编程环境]
 +
 
 +
[http://blog.guorongfei.com/2014/09/16/emacs-c-cpp-python-config/ Emacs C、C++、Python 编程的简单配置]
  
[https://www.jianshu.com/p/b4cf683c25f3 从零开始——Emacs 安装配置使用教程 2015]
 
 
[https://zhuanlan.zhihu.com/p/87527003 编辑器终结者:vim与emacs双剑合璧]
 
  
[https://www.zhihu.com/question/30955165 Emacs有什么优点,用Emacs写程序真的比IDE更方便吗]
+
[https://blog.csdn.net/m0_37386518/article/details/105905755  Emacs安装配置yasnippet]
  
=== 参考 for python===
+
[https://www.cnblogs.com/halberd-lee/p/10784494.html yasnippet]
[http://codingpy.com/article/emacs-the-best-python-editor/ Emacs:最好的Python编辑器]
 
=== 参考 for c===
 
[https://segmentfault.com/a/1190000003878553 Emacs 中 C/C++ 编程基本环境配置]
 
  
[http://txgcwm.github.io/blog/2013/07/20/jiang-emacspei-zhi-cheng-%5B%3F%5D-ge-c-slash-c-plus-plus-de-idebian-cheng-huan-jing/#top 将Emacs配置成一个C/C++的IDE编程环境]
+
[https://www.cnblogs.com/qazwsxedc121/p/3285552.html  我的Emacs折腾经验谈(四) 也谈Yasnippet ]
  
[http://blog.guorongfei.com/2014/09/16/emacs-c-cpp-python-config/ Emacs C、C++、Python 编程的简单配置]
+
https://www.emacswiki.org/emacs/Yasnippet
 
[[category:ops]] [[category:emacs]]
 
[[category:ops]] [[category:emacs]]

2022年10月12日 (三) 01:43的最新版本

目录

进阶

用emacs 让你每天都有新发现和小开心

http://ergoemacs.org/emacs/emacs_make_modern.html

Emacs之怒

https://www.cnblogs.com/robertzml/tag/Emacs/

推荐免费中文Emacs精品教程

Emacs的日常生活(1)

嵌入式 一年成为Emacs高手(像神一样使用编辑器)

Emacs常用快捷键


我要开发巨型项目 (需要在多个目录窗口间跳来跳去),所以装了 window-numbering.el.
巨型项目需要我同时调试多种语言,所以我装了 evil-nerd-commenter,这样不用记住特定语言的语法就可以 comment/uncomment 代码.

 要学习的 有 calendar    git   etc 

 再用上其它插件吧 比较 git 什么的 

org-mode及其拓展:单独列出来是因为org-mode太强大了,绝对的大杀器。美化:org-bullets(有一个新的叫org-superstar),番茄钟:org-pomodoro,日程管理:内置功能的配置好就很好用,嫌麻烦也可以用org-super-agenda,日志管理:org-journal .....
窗口(buffer)管理:如果你用大屏幕,窗口管理是必须的。窗口编号:winum,窗口切换 :ace-window。另外centaur-tabs配合elscreen管理buffer真的很爽,前者可以将不同类型的buffer分组切换,后者可以保存整个屏幕的布局,开启多个屏幕。





如何用orgmode 写出blog or mediawiki

模式切换命令:M-x 模式名

    shell: 终端模式(ESC+!)
    r-mode:R语言
    org-mode:org-mode
    c++-mode:C++语言
    c-mode:C语言
    latex-mode:LaTeX文件
    perl-mode:Perl语言
    tex-mode TeX文件 


代码折叠方式
M-x hs-minor-mode
M-x hs-hide-all,
用M-x 直接敲命令更方便,不用记太多快捷键 

模式切换


ERC is a powerful, modular, and extensible IRC client for Emacs


日常使用2022

evil (alx+x)

为了快速 又一次手工从0写自己的配置啦 Nov 05 2021

emacs for ruby 官方文档 https://www.ruby-lang.org/zh_cn/documentation/

https://github.com/sabof/org-bullets


emacs-配置文件放哪里

vi .emacs

;; org-mode 美化
;;一定要放这里 不然会warring 
(add-to-list 'load-path "~/.emacs.d/lisp/")

(require 'org-bullets)
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))














;;#添加到配置文件 例如 .emacs
  (setq package-archives '(("gnu"   . "http://elpa.emacs-china.org/gnu/")
                           ("melpa" . "http://elpa.emacs-china.org/melpa/")))

  (add-to-list 'auto-mode-alist
               '("\\.\\(?:cap\\|gemspec\\|irbrc\\|gemrc\\|rake\\|rb\\|ru\\|thor\\)\\'" . ruby-mode))
  (add-to-list 'auto-mode-alist
               '("\\(?:Brewfile\\|Capfile\\|Gemfile\\(?:\\.[a-zA-Z0-9._-]+\\)?\\|[rR]akefile\\)\\'" . ruby-mode))

(require 'flymake)

;; I don't like the default colors :)
(set-face-background 'flymake-errline "red4")
(set-face-background 'flymake-warnline "dark slate blue")

;; Invoke ruby with '-c' to get syntax checking
(defun flymake-ruby-init ()
  (let* ((temp-file   (flymake-init-create-temp-buffer-copy
                       'flymake-create-temp-inplace))
	 (local-file  (file-relative-name
                       temp-file
                       (file-name-directory buffer-file-name))))
    (list "ruby" (list "-c" local-file))))

(push '(".+\\.rb$" flymake-ruby-init) flymake-allowed-file-name-masks)
(push '("Rakefile$" flymake-ruby-init) flymake-allowed-file-name-masks)

(push '("^\\(.*\\):\\([0-9]+\\): \\(.*\\)$" 1 2 nil 3) flymake-err-line-patterns)

(add-hook 'ruby-mode-hook
          '(lambda ()

	     ;; Don't want flymake mode for ruby regions in rhtml files and also on read only files
	     (if (and (not (null buffer-file-name)) (file-writable-p buffer-file-name))
		 (flymake-mode))
	     ))



前提 安装 
sudo gem install rsense
#The Rsense server is started from the commandline with:
rsense start

绑定键盘

 f2现在是最近的文件

Emacs 绑定键盘的技巧

https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Commands.html


用Emacs编辑Markdown


Emacs有这些配置足矣

主题配色

https://www.cnblogs.com/eat-and-die/p/10309681.html#org8b69c89

Edit mediawiki sites from emacs

mediawiki.el -- Edit mediawiki sites from emacs

Emacs 从入门到飞天

1.Emacs Beginner's HOWTO http://jeremy.zawodny.com/emacs/

2.Learning GNU Emacs Third Edition

3.Sams Teach Yourself Emacs in 24 Hours

4.Writing GNU Emacs Extensions

5.An Introduction to Programming in Emacs Lisp

6.Gnu Emacs Lisp Reference Manual

7.GNU Emacs Manual

8.GNU Emacs Pocket Reference  

emacs用户手册

https://www.cnblogs.com/robertzml/tag/Emacs/

一年成为Emacs高手 (像神一样使用编辑器)

手把手教你从Vim迁移到Emacs+Evil

我来挖个坑:大家用 Emacs 来干嘛?

Emacs 有什么奇技淫巧?

Emacs相关中文问题以及解决方案

https://www.cnblogs.com/liweilijie/category/440232.html


Emacs 快速指南 - 原生中文手册

无知和搞笑

我为什么鄙视并抵制Emacs编辑器?

markdown

org导出md

    org-mode支持markdown格式导出,而且不需要pandoc和markdown-toc。
    从操作性上来说org-mode要好一些,功能更加强大,所以我要弃markdown了。

    配置方法

    (eval-after-load "org" '(require 'ox-md nil t))

    导出md方法

    C-c C-e m

window-numbering

    简介
    快速在window间切换。

    操作

    M-number

eg  C-x 2  切出两个窗口  然后 alt-1 alt-2 两个窗口之间来回 


emacs安装配置


emacs 学习小结

Emacs 编辑环境,第 3 部分: 高级 Emacs 文本操作

代码注释

陈斌注释代码的高级技巧

Emacs代码折叠

python折叠代码_[emacs] python代码折叠

Emacs代码折叠

Emacs 编写代码 折叠与展开

emacs中的代码折叠

emacs 代码折叠

Emacs的代码折叠

使emacs的代码折叠展开绑定键更好用一些

Centaur Emacs


Dec  29 2021 现在用19年调整出来的那个配置 emacs-gtk 改的配置也写入custom.el 


GitHub的raw.githubusercontent.com无法链接

    hosts文件添加 以下内容并保存即可恢复
    199.232.68.133 raw.githubusercontent.com


Customization
Customize Group

M-x customize-group然后选择centaur。设置并保存配置,然后重新启动Emacs。
Manual

在custom.el中添加或更改配置,然后重新启动Emacs。

默认的包归档文件是melpa。您可以在custom.el中更改,也可以随时通过M-x set-package-archives手动设置。

对于个人配置,可以设置为~/.emacs.d/custom-post.org或~/.emacs.d/custom-post.el。
Hydra
Name 	Scope 	Keybinding 	Description
toggles-hydra 	global 	<f6> 	全局选项切换
window-hydra 	global 	C-c w/C-x o w 	Window management
doom-modeline-hydra 	doom-modeline-mode 	C-<f6> 	Mode-line选项和操作
hydra-ivy 	minibuffer, ivy-mode 	C-o 	Ivy的附加密钥绑定
ivy-hydra-read-action 	minibuffer, ivy-mode 	M-o 	Actions forivy-dispatching-done
hydra-dired-qick-sort 	dired 	S 	dired-quick-sort的选项
org-hydra 	org-mode 	< 	Org template
dashboard-hydra 	dashboard-mode 	h/? 	仪表板操作
dumb-jump-hydra 	global 	C-M-j 	跳转到定义
youdao-dictionay-hydra 	youdao-dictionay-mode 	h/? 	youdao-dictionary的操作
ztreediff-hydra 	zreediff-mode 	C-<f5> 	文本模式目录树的操作
git-messenger-hydra 	global 	C-x v p 	git-messenger的操作
smerge-mode-hydra 	smerge-mode 	C-c m 	smerge-mode的操作
rect-hydra 	text-mode, prog-mode 	C-<return> 	矩形的操作
rect-hydra 	org-mode 	S-<return> 	矩形的操作
lsp-ui-hydra 	lsp-ui-mode 	M-<f6> 	lsp-ui的操作
dap-hydra 	dap-mode 	M-<f5> 	dap-debug的操作
elfeed-hydra 	elfeed 	? 	RSS阅读器elfeed的操作
xwidget-hydra 	xwidget-webkit-mode 	? 	嵌入式webkit浏览器的操作



FAQ

FAQ

    如何在Centaur Emacs中正确显示图标?all-the-icons是必需的。运行M-x all-the-icons-install-fonts安装资源字体。在Windows上,字体应该手动安装。all-the-icons仅支持GUI。如果你不喜欢彩色图标,(setq all-the-icons-color-icons nil)来禁用它。详情请参考all-the-icons.el。如果all-the-icons字体安装正确但图标显示不正确,请安装non-free字体符号。此问题通常发生在Windows上。详情请参阅#121。如果您使用cnfonts,它将与all-the-icons冲突。解决方法就在这里。为了获得更好的体验,我不建议在daemon模式下使用emacsclient的GUI。见#154。
    软件包无法安装,我该怎么办?一般是因为连接问题。请参考#98。M-x package-refresh-contents然后再试一次。(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")。使用ELPA的另一面镜子。更改另一个网络以重试。
    如何通过拼音搜索中文?在Emacs中,C-s !。如果您只想搜索!,请使用C-s \!。
    如何使用Centaur仪表板?如果centaur-dashboard是non-nil,Centaur仪表板将在启动时自动打开。启动后,您可以使用F2随时重新打开它。在仪表板中,请按?或h获取帮助。您可以轻松跳转到带有键绑定的部分或按钮,例如主页(H)、会话(R、L)、设置(S)、更新(U)、最近的文件(r)、书签(m)和项目(p)。
    Centaur Emacs是否支持语言服务器协议(LSP)?默认情况下,Centaur Emacs支持并启用LSP功能。lsp-mode是默认客户机,eglot是另一个选择。如果您不喜欢使用(setq centaur-lsp nil)来禁用LSP。要使用LSP,您应该安装语言服务器。有关详细信息,请参阅lsp-mode:supported-languages或eglot:连接到服务器。
    如何在org-mode中启用plantuml?把(setq org-plantuml-jar-path "<path of plantumx.x.x.jar>")放进custom.el。
    为什么Emacs环境变量和exec-path在GUI和终端之间是不同的?请参考第33条。您应该在启动文件中设置环境变量,比如.profile、.bash_profile或.zshenv,然后Centaur Emacs能够识别并导入环境变量。
    如何在Centaur Emacs中使用zoom-window?见#169。

https://seagle0128.github.io/.emacs.d/#customize-group

CentaurEmacs-一个奇特而快速的Emacs配置

A fast and incredible Emacs config


emacs安装与配置(Centaur Emacs)

emacs学习心得

Emacs 用户们以及他们的配置合集

优化emacs 界面显示设置

Emacs入门系列:定制Emacs的Theme

doom 另一个 Emacs Distribution

Doom Emacs就是一个Emacs+Vim的产物,其包含了Emacs和Vim的优点,

doom-emacs 配置的问题

Emacs 笔记 (一) —— 安装与配置 Doom Emacs

https://www.zhihu.com/question/60367907

请尝试使用Doom Emacs 「Emacs+Vim双强联合」

Doom-Emacs安装和基本使用方法

MediaWikiMode

编辑Wiki (Wikipedia-mode)

MediaWikiMode

https://github.com/hexmode/mediawiki-el

theme

zenburn-theme for Emacs


Download zenburn-theme.el to the directory ~/.emacs.d/themes/. Add this to your .emacs (or init.el):

(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")

临时load
Now you can load the theme with the interactive function load-theme like this:

M-x load-theme RET zenburn

永久自动生效 可能要放在最后面 june 2022
To load it automatically on Emacs startup add this to your init file:

(load-theme 'zenburn t)


https://github.com/bbatsov/zenburn-emacs

2021

pluskid.org Emacs.html

My Emacs Writing Setup


emacs 常用命令与配置

Emacs 26的多线程探索

Emacs 系列(一):抛掉一切,投入 Emacs 和 org 模式的怀抱

https://zhuanlan.zhihu.com/p/51599701

emacs注释快捷键


emacs常用命令:C Mode下批量注释、取消注释代码

C-c C-c    批量注释选中代码
C-u C-c C-c    取消注释


多行注释:
1. 选中一段区域到最后一行行首(不选中任何字符);
2. 按 Ctrl-x r t ;
3. 输入注释内容;

反多行注释:
1. 选中一段区域到最后一行,紧挨着注释字符之后的位置(不选中任何字符);
2. 按 Ctrl-x r k; 

note 2021 
前进 后退 up or donw 什么的和emacs一样的呀 emacs or  iptyhon3 中写py 代码  完成不用小键盘都行 再也不用烦那个小键盘的方向键太小了 

emacs注释快捷键

以前笔记

calendar emacs日记功能 The Calendar and the Diary

;; 设置F2快捷键指定Emacs 的日历系统,i d 新建日记,d查看日记
(global-set-key [f2] 'calendar)


To exit the calendar, type q. 要在Calendar mode(alt+x  calendar) 才能exit 在 diary 是不能exit 的

q 是exit  退出 
 M-x calendar. # M is alt 

https://www.gnu.org/software/emacs/manual/html_node/emacs/Calendar_002fDiary.html

emacs写日记

manual Commands for Binding Keys

https://www.emacswiki.org/emacs/CalendarMode

Emacs中的日程管理

Calfw

CalendarLocalization

帮你精通Emacs:配置日程,日记与日历的详细步骤

Emacs配置文件(非常酷的风格!)有很多calendar相关的

【教程】Emacs 第二十六节:Calendar 第三部分

帮你精通Emacs:配置日程,日记与日历的详细步骤

使用 Emacs 发送电子邮件和检查日历

2021问题

现在在kali里面直接打开文件没内容显示,要先打开em  Symbol's value as variable is void ispell-menu-map-needed
我结果是从另外一个方向来处理这个问题  手工编译em 27  暂时只另外了 em 为新的emacs 其它 包括emacs-gtk还没改 /usr/bin 下的还没有改

安装emacs

How to Compile Emacs on Linux

Emacs Lisp

正文

https://www.emacswiki.org/emacs?interface=zh-cn

生活在Emacs中

https://www.emacswiki.org/emacs/InitFile

成为高手笔记 Basic Emacs survival keys

即使你不打算使用 Emacs 默认快捷键, 这步也是必须的, 不要跳过!

最起码要知道以下命令,

M-x describe-variable, 快捷键 C-h v, 查看变量的文档
M-x describe-function, 快捷键 C-h f, 查看命令的文档
M-x describe-key, 快捷键 C-h k, 查看快捷键的文档


Emacs manual       C-h r        Browse manuals     C-h i
Emacs tutorial     C-h t        Undo changes       C-x u
Buy manuals        C-h RET      Exit Emacs         C-x C-c


If an Emacs session crashed recently, type M-x recover-session RET
to recover the files you were editing.


    C-g (即同时按下Control和g键) 能够取消命令提示. 后面我们会将escape键也映射成该操作以符合Vim的操作惯例.
    C-x k 杀掉(关闭)一个buffer. 那些自动打开的windows通常可以通过按下"q"键来关闭.
    C-x o (字母"o"而不是数字零) 会在window之间循环跳转.
    C-x 2 横向分割(window)
    C-x 3 竖向分割
    M-x (M = PC上的Alt键) 会显示一个"minibuffer",在那你可以调用Emacs函数. 后面我会展示如何让它更好用.
    要切换long lines wrapping功能 (类似Vim中:set wrap/nowrap), 执行 M-x visual-line-mode RET.
    C-y: yank/paste. 粘贴,它在你开启Evil功能时依然有效.




以实际问题作为切入点

努力能很快得到回报, 你会越学越有乐趣, 进入感情上的正反馈.

要成为高手, 兴趣是最重要的.

以我为例, 我急需 GTD 的工具, 而 Emacs 的 Org-mode 是同类软件中最好的 (没有之一). 用 Org-mode 节省了时间后, 我对 Emacs 爱屋及乌, 兴趣高涨了 100 倍.

反面例子是啃Lisp教程开始Emacs之旅, 坚持下来的人寥寥无几.

待解决的问题设定优先度 关键在于理性地考虑你最迫切需要解决的一个问题.以这个问题作为出发点, 除此之外都可以妥协.

虽然 Emacs 无所不能, 但是饭也要一口一口吃. 有时退一步等于进两步.

例如, 我一直以为 Emacs 的中文显示很完美, 搞不懂为什么有人在字体配置上花那么多时间.

在接到读者反馈后, 我才明白原来我一直在终端下使用Emacs, 终端软件可以完美显示中文字体, 所以就没 Emacs 什么事了. 需要配置字体的人用的是图形界面 Emacs.

当初只在终端下使用 Emacs 是因为需连接到远程服务器. 我认为这是重点. 甚至为此放弃了漂亮的配色主题 (后来发觉此牺牲毫无必要). 塞翁失马, 由此也避免了图形界面版本的所有问题.

https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/guide-zh.org

后记

后面要把常用的这些常用快捷键写成一个短小的总结卡

模式键定义

四个模式键:C—-Ctrl;M—-Alt;s—-Super(Win);S—-Shift

比如:

C-x:表示按下ctrl键,然后按下x键。

C-x C-c:表示按下ctrl,然后按下x键,松开后再按下c键。

C-x k:表示按下ctrl,同时按下x和k键。


最常用命令 eg页开头或结尾

M-f 与 M-b   在行内, 前后大步移动光标,步进单位对于英文而言是单词的长度,对于中文而言是两个标点符号的间距。

M-{ M-}  段开头或结尾

C-x [  C-x ] or ESC < ESC > 页开头或结尾 

C-a 或 C-e  对于英文文本,若将光标快速移到行首或行尾,标准按键是 C-a 或 C-e 但是对于中文而言,这对按键有着将光标被移到段首或段尾的奇异效果……如果偶尔忘记,用 Home或End 键也未尝不可。

M-a 与 M-e 则分别可将光标移动到句首或句尾。

C-v 或 M-v 如果文档很长,用可实现向下或向上翻屏

 M-< ,移到最开始。
   然后再按几次 C-v 回到这里。

 M-> ,移到最末尾。
   然后再按几次 M-v 回到这里。

C-x 2 将屏幕划分成两个窗格。这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。

C-x o(“o”指的是“其它(other)”), 将光标转移到下方的窗格。

C-x 1  (在上方窗格里)输入 C-x 1 关掉下方窗格。

C-x C-f         寻找文件。
C-x C-s         保存文件。

打开菜单 用F10或者M-` (就是键盘输入区左上角的那个键)就可以呼出菜单了

emacs-gtk 显示菜单 etc  option -->show/hide 这样在 emacs-gtk 就有菜单了 而em还是没有的 非常 好 

Emacs的基本概念

C-x C-v	find-alternate-file	读取另一个文件来代替刚才诗篇的那一个。
C-x i		输入文件。
C-x C-f	find-file	查找文件并且打开它。
C-x C-s	save-buffer	保存文件.
C-x C-w	write-file	把缓冲区内容写入一个文件。
M-x recentf-open-files, 应该是默认绑定到C-x C-r.
C-x C-c	save-buffers-kill-emacs	退出emacs
C-h	help-command	进入emacs的在线帮助系统。

文件编辑


ESC x goto-line n RET		把光标移动到文件的第N行
ESC x goto-char n RET		把光标移动到文件的第N个字符
ESC 500 C-n		光标移动500行,ESC n 是重复执行命令的意思。
C-u		C-u 等于4, C-u C-u 等于16次重复的意思。
C-x u		撤消; 同命令还有: C-_ C-/
ESC - C-k		删除行首到光标位置之间的东西。
ESC d	kill-word	删除光标后面的单词。
ESC DEL	backward-kill-word	删除光标前面的单词。
ESC k	kill-sentence	删除光标后面的句子。
ESC y		恢复上次删除的操作内容。
C-t	transpose-chars	交换两个字符的位置。
ESC t	transpose-words	交换两个单词的位置。
C-x C-t	transpose-lines	交换两个文本行的位置。
ESC c	capitalize-word	把单词的首字母改为大写。
ESC u	upcase-word	把单词的字母全部改为大写。
ESC l	downcase-word	把单词的字母全部改为小写。
ESC - ESC c	negtive-argument; capitalize-word	把前一个单词的首字母改为大写。
ESC - ESC u	negtive-argument; upcase-word	把前一个单词的字母全部改为大写。
ESC - ESC l	negtive-argument; downcase-word	把前一个单词的字母全部改为小写。
ESC x overwirte-mode RET		文本的改写模式,再次输入则取消。实际上直接输入: ESC x ov 用TAB键可以补全。
C-x C-w		文件另存为.


C-x C-r  打开最近打开过的文件 M-x recentf-open-files, 应该是默认绑定到C-x C-r. https://www.emacswiki.org/emacs/RecentFiles

使.emacs立即生效

ESC x eval-current-buffer

查找和替换操作

学习Emacs系列教程(八):查找替换

C-s	isearch-forward	向前递增查找
C-r	isearch-backward	向后递增查找
C-s C-w		可以把从光标位置到下一个标点符号或者空格符之间的文本都复制到查找字符串里面去。
C-s C-y		光标位置到行尾之间的文本都复制到查找字符串里面去.
C-s ESC y		可以把删除环里面的文本复制到查找字符串去。而且在用过这条命令之后,还可以用 ESC p ESC n 进来上下条目查看。
C-s RET C-w	word-search-forward	单词查找。
C-r RET C-w		单词查找。
ESC x replace-string RET recieve RET receive RET		Emacs将从光标位置开始,把文件里面所有出现查找字符串(recieve)的地方都替换掉。如果想对整个文件做替换,则使用命令之前移动 ESC < 位置即可。
查询与替换 (ESC % recieve RET receive RET)

基本查找与替换操作    2021 0228                                                                                                                                                   
                                                                                                                                                                             
  M-x replace-string RETURN                                                                                                                                                  
  输入查找字符串 回车  ,再输入替换字符串(new) 回车                                                                                                                           
  如果想整个文件 全局查找 替换  在用这个命令之前用 ESC <  or home

ESC %	开始查询-替换操作。
SPACE 或 y	用新字符串替换查询字符串searchstring, 然后前进到下一个位置。
DEL 或 n	不替换; 前进到下一个位置。
.	在当前位置做替换后退出查询-替换操作。
,	替换并显示替换情况(再按空格键或 "y" 后才移动到下一个位置。)
!	对后面的文件内容全部进行替换,不再提问是否要进行替换。
^	返回上一次进行了替换的位置。
RET 或 q	退出查询-替换操作。
C-r	进入递归编辑状态。
C-w	删除此处内容并进入递归编辑状态。
ESC C-c	退出递归编辑状态,继续完成查询-替换操作。
C-]	退出递归编辑状态和查询-替换操作。

学习Emacs系列教程(八):查找替换

Emacs查找替换字符串

删除命令
C-d	向前detele字符
DEL	向后detele字符
ESC d	向前delete到字首
ESC DEL	向后delete到字尾
ESC 0 C-k	向前delte到行首
C-k	向后delete到行尾
C-x DEL	向前delete到句首
ESC k	向后delete到句尾
ESC - C-M-k	向前delete到表达式首部
C-M-k	向后delete到表达式尾部
C-w	kill 区域
marking
C-SPC (C-@)	标记当前位置
C-x C-x	以字符为单位使用移动命令动态标记区域
ESC @	以字为单位使用移动命令动态标记区域
ESC h	标记一段
C-x C-p	标记一页
ESC C-@	标记一个表达式
ESC C-h	标记一个函数
C-x h	标记整个缓冲区
缩进格式
TAB	缩进当前行(与模式有关)
ESC C-\	缩进区域(与模式有关)
ESC C-q	缩进表达式(与模式有关)
C-x TAB	Indent region rigidly arg. Columns
C-o	在光标后插入一个新的行(有点像vi的'o')
ESC C-o	静态地将一行下移
C-x C-o	删除光标附近的空行(留下一行)
ESC ^	与上一行合并成一行
ESC \	删除光标附近的所有空格
ESC SPC	删除光标附近的空格(留下一格)
ESC q	Fill paragraph
C-x f	Set fill column
C-x	设置每一行开始的前缀
递增查找
   在查找过程之中想取消查找可以需要按 C-g C-g .
   用复制办法得到的查找字符串会把原文中的大写字母都转换成小写字母。

shell Emacs 终端

要尝试 Emacs 终端,输入 Alt+x(用 Emacs 符号表示就是 M-x),然后输入 shell,然后按回车。

搜索

增量搜索 C-s 正向搜索

C-r 反向搜索

C-M-s使用正则表达式正向搜索

C-M-r 使用正则表达式反向搜索

M-p 选择上一个搜索结果

M-n 选择下一个搜索结果

RET 退出搜索并停留在当前搜索到的位置

C-g 中止当前搜索

save and exit

 
C-x C-f     按提示输入文件名,如果文件不存在则新建文件,如果文件存在则打开文件
C-x C-s    保存
C-x C-w    按提示输入文件名,另存为
M-x customize-variable 回车 make-backup-files 回车     关掉文件备份


C-x C-c:退出Emacs

C-x C-s:保存当前buffer

C-x C-w  write-file

命令的中止和 销

C-g  keyboard-quit  放弃当前命令
C-x u  advertise-undo  undo上一次 可多次用


备份文件

想恢复到的最简单的就是直接编辑备份文件

eg emacs test~ ; C-x C-w test TETURN 把他保存为一个正式文件

选中 复制 黏贴

把光标移动到区域的首字符
键入C-@(即ctrl+shift+2),以设置标记 有时是ctrl+shife +@
把光标移动到区域的最后一个字符
键入M(alt)-w,拷贝这个选定区域到粘贴板(剪切是C-w)
用光标定位将要粘贴内容的地方,然后键入C-y ,拷贝成功。

C-@ mark --> c-f or c-n --> alt-w --> c-y

C-w	剪切标记到当前光标所在处的文本  ESC w 复制文本

C-d 删除一个字符
ESC h 选中一个段落

C-x C-x 检查一下位置                                                                 
 C-w  删除文本块  

也可以可怕的用C-k 先 剪切 然后再来两个 C-y 一个是为开始的切还原 ,另外一个是你要CP去的地方

文本块的选取和粘贴

C-w 删除文本块                                                                       
 C-y  yank 粘贴                                                                       
 ESC W   or   C-INSERT    复制文本块                                                  
 ESC h  标记段落                                                                      
 C-x C-p   标记页面  mark-page                                                        
 C-x  h 标记整个缓冲区                                                                
 ESC y   在用过C-y 命令以后粘贴更早删除的文本
 C-X u  反选 其实就是undo

交换位置

字符交换 光标在第二个字符上 C-t

文本交换 光标在两个单词之间 ESC t

交换两个文本行 光标在第二个文本行的任意位置 C-x C-t

改变大小写

第一个字母改为大写  capialize   ESC  c                                               
全部改为大写 upcase    ESC u                                                         
全改为小写  ESC  l (不是 sn 1) 如果在单词中间 可以把前半部分改为小写                 
                                                                                     
加ESC - 再加上面的命令  只对 光标之前的操作

文本改写模式

文本改写模式                                                                         
 insert  overwrite mode    不要时 为  ESC x overwrite-mode RETURN                    
可用自动补足功能啦 不用全打 tab                                                      
                                                                                     
文件内容取代缓冲区                                                                   
 ESC  x  revert-buffer RETURN

查找

搜索/替换(Seach/Replace)
C-s 向后搜索
C-r 向前搜索

GNU emacs24 中如何剪切复制多行文本

替换

按M - %启动查找替换(M is alt on debian),输入要被替换的词,回车,然后输入要替换的词,再回车。
被替换的词会高亮起来,这时,输入y替换并跳到下一个,输入n忽略并跳到下一个,输入q结束,输入!替换剩下的全部。

一些常用的选项:
  C - g 中断查找替换过程。
  ^ 返回上一个替换点,按y继续下一个,如果不想替换上一个的话,用^返回到上一个,然后按 C - r 进入编辑,修改完后按C - M - c退出继续下一个。
  C - l 使当前匹配显示在文档中间。
  C - r 进入修改。

学习Emacs系列教程(八):查找替换

emacs查找替换


书签


书签

DEL


 C-d  是对字符操作                                                  
 ESC  d  对单词操作                                                 
                                                                    
 ESC D 删除光标后面的单词; ESC DEL                                  
 C-k ;                                                              
 ESC K 删除光标后面的句子;C-k del 删除光标前面的句子                
     
从自动保存文件恢复文本
ESC  x  revover-file RETURN


对emacs 进行定制

emacs -> C-x C-f ~/.emacs -> ESC > 到文件的末尾


(setq default-major-mode 'text-mode)
(add-hook 'text-mode-hook 'turn-on-auto-fill)
;; 文本模式设置为默认的主模式; 文本模式里 启用自动换行                              $
;;  ;;设置缺省主模式是text,,并进入auto-fill次模式.而不是基本模式fundamental-mode   $
;; http://blog.chinaunix.net/uid-25830557-id-317944.html



;; 不用再烦 两个 ESC ESC  or  C-x C-u
(global-unset-key "\e\e")
(global-unset-key "\C-x\C-u")





移动


M-< 到文件开头
M->   esc ->shift+> 到文件末尾



以下命令在翻页浏览时相当有用:

	C-v     向前移动一屏
	M-v     向后移动一屏
	C-l     重绘屏幕,并将光标所在行置于屏幕的中央
		(注意是 CONTROL-L,不是 CONTROL-1)


整屏的移动很有用,但是如何在文字中精确定位呢?

有几种方式可以选择。用方向键当然可以,不过更有效率的方法是保持双手位于
主键盘区,然后使用 C-p 、 C-b 、 C-f 和 C-n 这四个命令。它们的功能和方
向键是一样的,如下图所示:

                             上一行 C-p
                                  :
                                  :
            向左移 C-b .... 目前光标位置 .... 向右移 C-f
                                  :
                                  :
                             下一行 C-n
p-previous,n-next,b-backward,f-forward。
>> 用 C-n 或 C-p 将光标移到上图的中央。
   按 C-l,整幅图会被显示在屏幕的中央。



移动的单位            向后        向前
字符                  C-b          C-f



当前行开头或结尾      C-a          C-e

 C-n

M-f 如果你嫌一个字符一个字符地挪光标太慢,你还可以一个词一个词地跳。M-f
(META-f) 可以将光标往前移动一个词,而 M-b 则是往后移。【这里的“词”指
英文单词,对中文来说,则是指移动到下一个标点符号。】

类似的惯例在“行”与“句子”之间也同样适用:C-a 和 C-e 可以将光标移动到
“一行”的头部和尾部;而 M-a(和terminator冲突) 和 M-e 则将光标移动到“一句”的头部和尾部。


这里对简单的光标移动命令做一个总结,其中也包括了整词和整句的移动:

        C-f     向右移动一个字符
        C-b     向左移动一个字符

        M-f     向右移动一个词【对中文是移动到下一个标点符号】
        M-b     向左移动一个词【对中文是移动到上一个标点符号】

        C-n     移动到下一行
        C-p     移动到上一行

        C-a     移动到行首
        C-e     移动到行尾

        M-a     移动到句首
        M-e     移动到句尾



这里还要介绍两个重要的光标移动命令:M-< (META 小于号)可以将光标移动到
所有文字的最开头;M-> (META 大于号)可以将光标移动到所有文字的最末尾。

注意,在大部分键盘上,小于号(<)需要用上档键(Shift)来输入,所以在这
些键盘上你应该用 Shift 键来输入 M-<,如果不按 Shift 键,你输入的会是
M-comma(META 逗号)。

>> 试一试 M-< ,移到本快速指南的最开始。
   然后再按几次 C-v 回到这里。

>> 试一试 M-> ,移到本快速指南的最末尾。
   然后再按几次 M-v 回到这里。


如果你的键盘上有方向键的话,也可以用它们来移动光标。不过我们有三个理由
推荐你学习 C-b 、C-f 、C-n 、和 C-p:(1)它们在任何键盘上都能用。(2)
当你熟练使用 Emacs 之后,你会发现用这些组合键比用方向键要快得多,因为你
的手不需要离开打字区。(3)一旦你习惯了使用这些组合键,你也可以很容易地
适应其它更高级的光标移动命令。

大部分的 Emacs 命令接受数字参数,并且对于多数命令而言,这些数字参数的作
用是指定命令的重复次数。为一个命令指定数字参数(也就是重复次数)的方法
是:先输入 C-u,然后输入数字作为参数,最后再输入命令。如果你有META (或
EDIT 或 ALT)键,那么还有另一种办法:按住 META 键不放,然后输入数字。不
过我们还是建议你用 C-u,因为它在任何终端机上都能用。这种数字参数也称为
“前缀参数”,意思是说这个参数是先于使用它的命令而输入的。

举例来说, C-u 8 C-f 会向前移动 8 个字符。

缓冲区、窗口与窗框


2018年 01月 23日 星期二 21:03:14 CST 学习这个  我去 过了几年了才看起这个 20210129

eg  C-x 2  上下切出两个窗口  然后 alt-1 alt-2 两个窗口之间来回 
    C-x 3 : 左右分割

最大化 1 一个 如何还原回原来  暂时只能用 C-x  b 找cache list

窗口 最常用命令哦 

    C-x 3 : 左右分割
    C-x 2 : 上下分割
    C-x 1 : 将当前窗口变为最大
    C-x 0 : 关闭当前窗口

    C-x 0:关闭当前窗口
    C-x 1:关闭当前窗口以为的其他窗口
    C-x 2: 水平分割窗口(上下排列) 或者  emacs file1 file2
    C-x 3:垂直分割窗口 ,左右排列
    C-x 4 0:关闭当前窗口和缓冲 
    C-x 4 b:在另一窗口打开缓冲(如果当前只有一个窗口将分割一个新窗口)
    C-x 4 f:在另一窗口打开文件(…同上)
    C-x o:在多个窗口中循环切换  o is othre 多窗体 有是是有显示窗口号的 选择 1 , 2 ,3 对应的号就进入了


     C-x C-f 	  	打开文件并将其读到缓冲区中 如果提示只读  进去选择就行了 哈哈  .. up  Wednesday October 12 2022

Emacs 启动后,窗框中默认只有一个窗口,但是使用 C-x 1 或 C-x 2 可以将其水平或竖直一分为二,这个分割过程可以无限的进行下去。每次被分割的窗口都是输入光标所在的窗口(也称为被激活的窗口)。使用 C-x o 可以在多个窗口中跳转。

由于 Emacs 在拆分窗口时,默认是水平或竖直均分,所以如果你希望将某个窗口调的宽一些,可 C-x } ;要使之窄一些,可 C-x { ;要使之高一些,可 C-x ^,但是要使之矮一些,貌似只能是激活该窗口下方的窗口,然后让下方的窗口高一些。这些窗口大小的调整方法,每次只能使得窗口的尺寸增大或减小一个字符的宽度或高度。如果你不想多次输入像 C-x ^ 这样的命令,那么可以用 C-u n C-x ^ 这样的组合键,其中 n 表示你要重复执行 C-x ^ 这样的命令 n 次。例如,要将当前窗口的高度增加 5 个字符的高度,只需 C-u 5 C-x ^ 即可。

C-u 最好要牢记,它的职能就是给某个组合键所绑定的 Emacs Lisp 函数传递一个参数值。 C-u 5 C-x ^ 表示向 C-x ^ 所绑定的 Emacs Lisp 函数传递参数值 5 ,而这个函数接受这个参数值之后,就会将窗口的高度增加 5 个字符的高度。
  要查看按键被绑定到了哪个 Emacs Lisp 函数,只需 C-h k <RET> 按下你要查询的键 。 <RET> 表示回车键

如果觉得窗口太多,想关掉一些,那么关闭被激活的窗口的组合键是 C-x 0 。如果是图形界面的 Emacs,只需要鼠标右键点击窗口的模式行即可将该窗口关闭。我的建议是:能用键盘就不要用鼠标。

要在某个窗口中打开或新建一个文件,可 C-x C-f 文件路径。

为了节省内存占用,请尽量使用 Emacs 的多窗口模式,不要打开一个又一个 Emacs


编辑缓冲区的删除

C-x k     输入缓冲区名称,默认当前缓冲区关闭  命令名是kill-buffer

ESC x kill-some-buffers 依次删除
M(alt)-x kill-some-buffers    依次列出所有缓冲区,逐个询问是否要删除

缓冲区列表,切换,关闭
C-x C-b    列出缓冲区,每个编辑中的文件都放在一个缓冲区中


缓冲区切换
C-x b     输入缓冲区名称并且切换过去

 当我们启动Emacs的时候,会产生*Messages*和*scratch*两个缓冲区。*Messages*是用来显示从Emacs启动开始的所有命令信息的缓冲区,*scratch*是草稿缓冲区,我们可以在其中乱写东西,但不会被保存,除非用户使用C-x C-W命令。

窗口和缓冲区切换



窗口

    C-x 0:关闭当前窗口
    C-x 1:关闭当前窗口以为的其他窗口
    C-x 2: 水平分割窗口(上下排列) 或者  emacs file1 file2
    C-x 3:垂直分割窗口 ,左右排列
    C-x 4 0:关闭当前窗口和缓冲 
    C-x 4 b:在另一窗口打开缓冲(如果当前只有一个窗口将分割一个新窗口)
    C-x 4 f:在另一窗口打开文件(…同上)
    C-x o:在多个窗口中循环切换  o is othre 多窗体 有是是有显示窗口号的 选择 1 , 2 ,3 对应的号就进入了

文本向左推 C-x <
文本向右推 C-x >

模式切换

模式切换命令:M-x 模式名

    shell: 终端模式(ESC+!)
    r-mode:R语言
    org-mode:org-mode
    c++-mode:C++语言
    c-mode:C语言
    latex-mode:LaTeX文件
    perl-mode:Perl语言
    tex-mode TeX文件


C-x C-f	找不到文件时,用C-x C-v 会把查看到的文件放到当前编辑缓冲区  真
正的含义是 把真正想要的文件找出来并要它替换现在这个



调整容器的大小
C-x  ^ 加高当前窗口
C-X  } 加宽

C-x { 水平方向上收缩

C-u C-x ^ 一次4行 or 4列的扩展

C-x - 窗口收缩到非常小
C-x + 变成同样的大小


对其它窗口进行操作的快捷命令

C-x 4 f 在另外一个窗口查找并打开一个文件
C-x 4 b 在另外一个窗口里选择另一个缓冲区

em file1 file2	
M-x (ESC x) compare-windows
C-x o 看出这两个文件什么不同

C-x C-b	缓冲区清单列表	

与缓冲区清单有关的操作

与缓冲区相关速查表 p139

几个快捷键:



 
快捷键 	 命令 	功能 
C-x b  	  	创建缓冲区或者切换缓冲区(由输入的缓冲区名字是否存在决定) 
C-x f 	  	打开文件并将其读到缓冲区中 

C-x s
	  	保存缓冲区('-'存缓冲区,'n'-不保存缓冲区,'!'-保存所有缓冲区,'.'-只保存当前缓冲区缓冲区,'q'-取消保存指令,且不保存当前缓冲区。
C-x s后执行C-r 	  	只读的的方式查看缓冲区内容,按C-c返回到保存操作 
C-x k 	  	删除当前缓冲区
  	 kill-some-buffers 	 依次列出所有缓冲区,逐个询问是否要删除
  	 rename-buffer 	 修改缓冲区名字
 C-x C-v 	  	使用文件内容替换缓冲区中的内容

 C-x C-q
	  	缓冲区只读/读写模式切换

 C-x 0
	  	删除当前窗口 
 C-x 1 	  	删除当前窗口外的所有窗口 
 C-x 2 	  	当前窗口分割为上下2个 
 C-x 3 	  	当前窗口分割为左右2个 
  	 delete-windows-on 	删除某个特定编辑缓冲区上的全部窗口
 C-x o 	  	切换到下一个窗口
M-n C-x o 	  	执行切换到下一个窗口操作n次 
 C-x ^ 	  	高亮当前窗口 
 C-} 	  	水平加宽当前窗口 
 C-{ 	  	水平缩小当前窗口 
  	 shrink-window 	垂直方向上收缩窗口
 C-u 	  	一次以四倍方式执行以上扩大或者缩小、高亮等命令
 C-{ 	  	水平缩小当前窗口 
 C-{ 	  	水平缩小当前窗口 
 C-{ 	  	水平缩小当前窗口 
 C-{ 	  	水平缩小当前窗口 
 C-{ 	  	水平缩小当前窗口 
 C-{ 	  	水平缩小当前窗口 
 C-{ 	  	水平缩小当前窗口 
 C-{ 	  	水平缩小当前窗口 

关于emacs的缓冲区与窗口

emacs快捷键-缓冲区的操作

Emacs编辑缓冲区

文本编辑的正确姿势

用 Emacs 的正确姿势应该是永远保持能不用鼠标就不用鼠标的姿势!因此,你需要学会用键盘来控制光标在窗口中的位置。

最基本的光标位置控制键如下所示:

               上一行 C-p
                    :
                    :
向左移 C-b .... 目前光标位置 .... 向右移 C-f
                    :
                    :
               下一行 C-n</span>
要记忆这几个键并不困难。 p 就是 previous(在...之前), n 就是 next, b 就是 backward, f 就是 forward,而 C 就是 Control……美国人民真会玩!


上述按键虽然简单易懂,但它们只适合小范围移动光标。在行内,可以用 M-f 与 M-b 前后大步移动光标,步进单位对于英文而言是单词的长度,对于中文而言是两个标点符号的间距。

对于英文文本,若将光标快速移到行首或行尾,标准按键是 C-a 或 C-e 但是对于中文而言,这对按键有着将光标被移到段首或段尾的奇异效果……如果偶尔忘记了这对按键,用 Home 或 End 键也未尝不可。 M-a 与 M-e 则分别可将光标移动到句首或句尾。

如果文档很长,用 C-v 或 M-v 可实现向下或向上翻屏。如果偶尔忘记了这对按键,用键盘上的 PgUp 与 PgDn 翻页键也可行。

跨度最大的光标移动键是 M-< 与 M-> ,可分别将光标移动到缓冲区的首部与尾部。

一旦掌握了上述这几个控制光标位置的按键,在 Emacs 中鼠标基本上就变得不是那么不可或缺了,更重要的是,这些按键能够帮助你更快速的选择文本。对于文档中的待选文本区域,用上述按键将光标移动到该区域的起始位置,然后用 C-@ 标定选区之首,然后继续用上述按键将光标移动到选区之尾,这样就完成了文本的选取。


 你可能不知道怎么产生 C-@ 按键序列。普通键盘上,应该是摁住 Ctrl 键,然后再摁住 Shift 键,最后摁下数字 2 键,然后松开手。因为 @ 在 2 上面,需要 Shift 切换……

对于选中的文本,随后的操作无非是剪切、复制或删除。剪切,请用 C-w;复制,请用 M-w;删除,请用 Backspace。对于剪切或复制的文本,要粘帖在光标所在位置,请用 C-y……或者你也可以试着看看 C-y 之后再 M-y 有什么效果!

对文本进行了一段时间的编辑之后,要反悔的话,就用 C-_ 键执行 Undo 操作。

  要产生 C-_ 的按键序列,请参考上文所讲的 C-@ 的做法。 建议现在就立刻将上述提到的每个按键都反复试验六、七次,以后就一直坚持使用它们……用不了几天也许就变成手指的本能了。忘掉鼠标吧,键盘可以解放你的双手,可以让你从畸形的鼠标手解脱,然后变成键盘手……因为你很快就会觉得左手的小指会有点酸痛!我会在下一节中拯救你的手。

拯救你的左手小拇指

如果感到左手的小手指有点疼,就不要再去用左手去摁 C-x C-s 这样的键了,你完全可以用右手的小指去摁键盘右侧的 Ctrl 键,然后左手相应的手指去摁 x 与 s 键

将一段代码向右推

将一段代码向右推20180124pm到这里 后面的还没看完

显示行号

临时显示行号或者取消行号

在Emacs下执行 M-x linum-mode 来显示或者取消行号 M-x : Alt + x 输入: linum-mode

跳转到指定行

临时

M-x goto-line 然后回车   <line_number>
 ESC x goto-line 然后回车   <line_number>
 ESC x goto-char 然后回车  char

长期

以在.emacs文件中定制一下(添加以下一行):

(define-key ctl-x-map "l" 'goto-line) 

然后每次在emacs中按C-x再按l,输入指定的行号就可以了。

http://blog.csdn.net/grey_csdn/article/details/78905862 http://bbs.csdn.net/topics/60028785


常用插件

记笔记,安排日程,那么毫无疑问Org-Mode是首选

Emacs 入门指南:Why & How

evil



还要在emacs和vim模式里面切换:C-z,换来换去啊  能直接进入的么   
不过进入后 org  有时不好用 


;; dec 22  2021 
;; evil 
;; Set up package.el to work with MELPA
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(package-initialize)
(package-refresh-contents)

;; Download Evil
(unless (package-installed-p 'evil)
  (package-install 'evil))

;; Enable Evil
(require 'evil)
(evil-mode 1)









;;#添加到配置文件 例如 .emacs
  (setq package-archives '(("gnu"   . "http://elpa.emacs-china.org/gnu/")
                           ("melpa" . "http://elpa.emacs-china.org/melpa/")))


第二步安装 
M-x package-refresh-contents
M-x package-install RET evil RE


; 最后一步是配置
;Finally, add the following lines to your Emacs init file:

(require 'evil)
(evil-mode 1)

;这个是打开文件后默认进入emacs模式
;我还要在emacs和vim模式里面切换:C-z,换来换去啊 
(setq evil-default-state 'emacs)


evil install

Emacs,咱就推荐一个插件:Evil(件如其名,够邪恶)

https://www.emacswiki.org/emacs/EvilZH

Magit

Magit 为 Emacs 用户提供操作 git 的接口,是我第一个重度依赖的 Emacs 插件,也是社区内排行第二的插件。Magit 深度整合到 Emacs 的快捷键中,一切 git 操作都如流水行云般,没有它的话,我连 rebase 都不会。

https://magit.vc/

文件管理 Dired

Dired 是 directory editor 的缩写,是 Emacs 内置的插件,类似 macOS 上的文件管理器 Finder


C-x d 进入Dired Mode  or emacs dirname

https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html

Emacs必修:使用dired管理文件

【Emacs】Dired Mode(文件管理)

Dired Mode(文件管理)


Emacs文件管理神器--dired常用操作说明

Emacs入坑之旅——用dired模式做文件管理

Markdown

Emacs Workflow - 文件管理

UndoTree


  ‘M-x package-install undo-tree’

    (global-undo-tree-mode);;To enable it

undo-tree 都是只读了 为什么 呢  
init.el 开启 

/.emacs.d/lisp$ vim init-edit.el

注释原来的   算了 我还是先关掉 undo-tree 吧 有空再看一下 这样就原来的配置用起来不错了 

undo-tree-0.7.5$ vim undo-tree.el

我的配置暂时去掉了 有空要处理完为什么 C-s 为什么不是保存而是另存为再加上 

https://www.emacswiki.org/emacs/UndoTree

https://elpa.gnu.org/packages/undo-tree.html

avy

https://github.com/abo-abo/avy 介绍

光标跳转一直是 终端编辑器 的软肋,想要把光标移动到任意指定位置,就算是用 vim,平均也需要按很多次快捷键,并且每次跳转,都需要眼睛进行大量跟踪工作,负担很大。以 vim 为例(不考虑仅使用hjkl或方向键这种最低效的方式),要把光标移动到任意指定位置,首先我们需要先确认指定位置所在行的行号,然后使用命令跳转到指定行,最后再应用w/f键若干次,把光标移动到指定列。这期间的行号确认和每次光标移动,眼睛都得一直跟踪,累人且效率低。

于是,光标跳转插件出现了,它们能让我们的眼睛只看着要跳转到的位置这一处即可,视线完全不需要移动,即可快速完成跳转,而 avy 则是 emacs 上的一个优秀的光标跳转插件。这类插件的使用方式大致为:假设当前屏幕的某处有一段文字This is a test.,要把光标移动到test单词的开头,那么我们只需要完成以下三步,并且,在这过程中我们只需要看着test的开头处,视线无需移动:

   按快捷键激活插件。
   按t键(即test的开头字母),这时候屏幕上所有的t都会高亮,并且显示它们各自对应的快捷键,这里假设test开头的t对应的快捷键为gj。
   按g键然后按j键,光标即跳转到了test的开头。

多窗口操作

安装不成功要求什么 dash 又没安装上 melpa.org 443又不通什么的 可能我原来的配置就有了呢


https://github.com/nschum/window-numbering.el

https://github.com/deb0ch/emacs-winum

emacs 多窗口完美操作

https://github.com/magnars/dash.el#installation


emacs效率插件推荐

大家都来说说自己常用的emacs插件有哪些?

快捷键

M-s : 新建一个buffer(缓冲区)

C-x O : 注意是大写的O,不是零,所以需要按住shift键再按o键。用于在缓冲区之间切换

C-g : 取消当前操作

C-x u : 回到上一步,相当于Undo

C-x  C-x : 变大写

C-x 3 : 把缓冲区(buffer)分为左右两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口)

C-x 2 : 把缓冲区(buffer)分为上下两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口)

M-w : 选中文字的情况是复制文字,而如果没有选中文字则是复制当前的一行

C-w : 选中文字的情况是剪切文字,而如果没有选中文字则是剪切当前的一行

M-x : 调出命令输入,可以在后面接命令,比如man,svn-status,等

C-y : 黏贴

C-x C-s : 保存文本

C-x C-f : 打开文件,如果文件不存在,则新建文件

C-x C-v : 打开一个文件,取代当前缓冲区

C-x k : 关闭当前缓冲区(buffer)

C-s : 向前搜索

C-r : 向后搜索

C-x h : 全选

C-v : 向下翻页

M-v : 向上翻页

C-f : 前进一个字符

C-b : 后退一个字符

M-f : 前进一个单词

M-b : 后退一个单词

C-@ : 标记开始区域

C-a : 移到行首

C-e : 移到行尾

M-a : 移到句首

M-e : 移到句尾

M-< : 缓冲区头部

M-> : 缓冲区尾部

M-g M-g,再输入数字 : 跳转到文本的第几行

C-x 0 : 关闭当前缓冲区

C-x C-c : 退出Emacs


emacs buffer read only
Ctrl-x Ctrl-q 

Emacs快捷键列表

链接:https://www.jianshu.com/p/732157b02ecc

多窗口

 首先先明确下Emacs窗口的概念,我们双击Emacs图标打开程序见到的Windows窗口叫做Frame,包含了标题栏,菜单栏,工具栏,最下面的Mode Line和回显区域,而中间一大块显示文本的区域则是Window,实际上每个窗口都有自己的Mode Line。下文中我将称Frame为框,Window为窗口,这里和我们平时理解的Windows窗口有点区别。

  在Emacs里面,一个框可以分割出多个窗口,多个窗口可以显示同一个或者不同Buffer,但是一个窗口只能属于一个Frame。一个窗口同时也只能显示一个Buffer,但是同时打开两个窗口也能显示一个Buffer的不同部分,这两个窗口是同步的,就是说如果在一个窗口中对Buffer做了修改,在另一个窗口中可以立即表现出来。但在一个窗口中移动光标之类的操作不会影响另一个窗口。多缓冲中有当前缓冲这个概念,同样对于多窗口也有当前窗口,对于当前选中的窗口其Mode Line相对于其它窗口颜色会深一些。


显示窗口

  命令C-x 2 (split-window-vertically) 垂直拆分窗口,就是把一个窗口上下等分为两个,拆分出来的窗口默认是显示当前Buffer。可以多次使用这个命令,会把一个窗口不停的两等分。

        对应也有水平拆分窗口的命令C-x 3 (split-window-horizontally),这两个命令也可以混合使用,如果你屏幕够大画个迷宫出来也不是不可能的。拆分命令还可以加参数,比如M-5 C-x 2就是说上面那个窗口只占5行,其余的位置都给下面的窗口。
  C-x o (other-window) 可以在多个窗口中切换,从上到下一个一个的来。使用参数来控制选中下面第几个窗口,想往回选的话参数设为负数。

  C-M-v (scroll-other-window),用来滚动下一个窗口。

  上一章我们看到有些命令加了C-x 4这个前缀,这一类命令都是用来操作多窗口的。

  C-x 4 b bufname (switch-to-buffer-other-window) 在另一个窗口打开缓冲。

  C-x 4 C-o bufname (display-buffer) 在另一个窗口打开缓冲,但不选中那个窗口。

  C-x 4 f filename (find-file-other-window) 在另一个窗口打开文件。

  C-x 4 d directory (dired-other-window) 在另一个窗口打开文件夹。

  C-x 4 m (mail-other-window) 在另一个窗口写邮件。

  C-x 4 r filename (find-file-read-only-other-window) 在另一个窗口以只读方式打开文件。

   这一类的命令默认是垂直拆分窗口。

重排窗口

  窗口排的密密麻麻看上去肯定不舒服,这时使用 C-x 0 (delete-window)  来关闭当前窗口,需要注意的是窗口和缓冲是两个概念,关闭一个窗口对缓冲,或者我们正在编辑的文件没有任何影响。也可以使用C-x 1 (delete-other-windows) 关闭其它所有窗口。如果想连窗口打开的缓冲一并关掉使用C-x 4 0 (kill-buffer-and-window)。

  我们还可以对窗口的大小做些改变:
        C-x ^ (enlarge-window)让窗口变得高点,
        C-x { (shrink-window-horizontally) 这个是把窗口变窄,变宽的话是C-x } (enlarge-window-horizontally) ,C-x - (shrink-window-if-larger-than-buffer)这个看字面意思就能理解,如果窗口比缓冲大就缩小点,C-x + (balance-windows)这个命令和前面那个没有任何关系是将所有窗口变得一样高。

  最后再说一个在窗口中切换的命令,有时候窗口开的太多自己也记不住顺序,使用C-x o就会很麻烦。有一类命令能让你在上下左右切换当前窗口,M-x windmove-right 就是移到右边那个窗口,对应的"left","up“, "down",向四个方向都能移。

小结





[1]

Emacs Shell Mode

大话Emacs Shell Mode:让工作更轻松的技巧

org mode

Emacs 的 Org-mode 在一定程度上可以替代 OneNote,有些方面甚至更好 Org-mode


配置

https://github.com/gabrielelanaro/emacs-for-python
https://github.com/jorgenschaefer/elpy
http://www.jesshamrick.com/2012/09/18/emacs-as-a-python-ide/
https://realpython.com/blog/python/emacs-the-best-python-editor

*day1
pass 20170610
有空再详细的再看

:
记得要添加在公司作的相关的emacs 笔记


=======
这几天常用的几个重要使命
  



重要快捷键(Important)
C-k 删除一行
C-g 停止当前运行/输入的命令
C-x u 撤销前一个命令

c-j 下称整个文件内容

emacs 菜单 用F10或者M-`。

ctrl+g  q 退出 快速说明

编辑器内显示行号可使用 M-x linum-mode 来开启。
M-x 然后在最下面 输入 linum-mode 
not try
q

获取帮助
ctrl+h  k  要查看的快捷键盘




学习基础 Elisp

ctrl+x  ctrl +b


C-x o:把光标在屏幕上的窗口间进行切换。记忆方法:其它(Other)窗口。

然后选择 *scratch*

运算 C-X  c - E

插件管理

c-x  o  other window  install

company 
f2 打开配置文件 

org-mode

major mode and minor mode (C-h m)




;;evan配置文件 
;;  ~/.emacs  行号什么 的 我是加到这个文件生效的
;;   ~/.emacs.d/emacs

;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
(tool-bar-mode -1)

;; 关闭文件滑动控件
(scroll-bar-mode -1)

;; 显示行号 试过 这个一定有效果
(global-linum-mode 1)

;; 更改光标的样式(不能生效,解决方案见第二集)
(setq cursor-type 'bar)

;; 关闭启动帮助画面
(setq inhibit-splash-screen 1)

;; 关闭缩进 (第二天中被去除)
;; (electric-indent-mode -1)

;; 更改显示字体大小 16pt
;; http://stackoverflow.com/questions/294664/how-to-set-the-font-size-in-emacs
(set-face-attribute 'default nil :height 160)

;; 快速打开配置文件
(defun open-init-file()
  (interactive)
  (find-file "~/.emacs.d/init.el"))

;; 这一行代码,将函数 open-init-file 绑定到 <f2> 键上
(global-set-key (kbd "<f2>") 'open-init-file)

; 开启全局 Company 补全
(global-company-mode 1)

;; 作者用的  是t
3(global-company-mode t)


;; ~/.emacs  生效的居然是这个 2018
;; 在 mode line 上显示行列号
(setq column-number-mode 1)
(setq line-number-mode 1)

;;显示列号
(setq column-number-mode t)

;; 显示行号
(global-linum-mode 1)

;; 取消滚动栏,工具栏
(tool-bar-mode 0)
(menu-bar-mode 0)
(scroll-bar-mode 0)

;; 关闭emacs启动时的页面
(setq inhibit-startup-message 1)
(setq gnus-inhibit-startup-message 1)
;; 以 y/n代表 yes/no
(fset 'yes-or-no-p 'y-or-n-p)
;;; 设置备份策略
(setq make-backup-files t)
(setq kept-old-versions 2)
(setq kept-new-versions 2)
(setq delete-old-versions t)
(setq backup-directory-alist '(("" . "~/.emacsbackup")))

;; 公共插件配置
;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)

;;内置的package管理,emacs24以上的版本有用
(require 'package)
;;将melpa仓库地址加入到package-archives这个列表变量里面
(add-to-list 'package-archives
    '("melpa" . "http://melpa.org/packages/") t)
;;这个是国内一个elpa仓库镜像,速度更快一些,你懂得
(add-to-list 'package-archives
    '("popkit" . "http://elpa.popkit.org/packages/") t)
;;初始化package
(package-initialize)
;;更新仓库里面的package
(when (not package-archive-contents)
  (package-refresh-contents))
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(package-selected-packages (quote (company auto-complete autopair))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )



I. 显示时间
.emacs加上:
(display-time-mode 1) ;; 常显
(setq display-time-24hr-format t) ;;格式
(setq display-time-day-and-date t) ;;显示时间、星期、日期

II. 隐藏菜单栏工具栏滚动条
.emacs加上:
(tool-bar-mode 0)
(menu-bar-mode 0)
(scroll-bar-mode 0)
;;注: 新版改成使用0,旧版使用nil的做法已失效,但 (set-scroll-bar-mode nil) 仍可使用

III. 关闭启动画面
.emacs加上:
(setq inhibit-startup-message t)

IV. highlight当前行
.emacs加上:
(global-hl-line-mode 1)
;;;; c mode ;;;;
(defvar xgp-cfsi-left-PAREN-old nil
  "Command used to input \"(\"")
(make-variable-buffer-local 'xgp-cfsi-left-PAREN-old)

(defun xgp-cfsi-modify-alist (alist term new)
  (let ((tl (assq term (symbol-value alist))))
    (if tl
        (setcdr tl new)
      (add-to-list alist (cons term new)))))

(defun xgp-cfsi (style)
  "Deciding whether using CFSI."
  (interactive "Style: ")
  (c-set-style style)
  (setq indent-tabs-mode
        nil
        c-hanging-semi&comma-criteria
        (quote (c-semi&comma-inside-parenlist)))

  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-open nil)
  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-close nil)
  (local-set-key " " 'self-insert-command))

(defun xgp-cfsi-erase-blanks ()
  "Erase all trivial blanks for CFSI."
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward "[ \t]+$" nil t)
      (replace-match "" nil nil))))

(defun linux-c-mode()
  (define-key c-mode-map [return] 'newline-and-indent)
  (setq imenu-sort-function 'imenu--sort-by-name)
  (interactive)
  (imenu-add-menubar-index)
  (which-function-mode)
  (c-toggle-auto-state)
  (c-toggle-hungry-state)
  (setq indent-tabs-mode nil)
  (xgp-cfsi "linux"))
(add-hook 'c-mode-common-hook 'linux-c-mode)
;; 代码补全
(add-hook 'c-mode-hook 'company-mode)
(add-hook 'c++-mode-hook 'company-mode)


# other 
如果要一次移动若干个单位,可以给命令加上数值参数,通过C-u命令,如:C-u 8 C-n就表示往下移8行,C-u 10 M-e表示往后移10句。不过C-u的参数对C-v和M-v命令而言有特殊,它不表示上下翻多少页,而是表示上下滚动多少行。注意与C-n的区别,C-u 8 C-n表示光标下移8行,屏幕不一定会滚动,而C-u 8 C-v,表示屏幕滚动8行,如果光标没有滚到屏幕外的话,光标位置不变。
如果不给C-u带上数值,则默认的值是4。比如C-u C-n就表示下移4行。这一特性还可以重复使用C-u C-u C-p就表示上移16行,C-u C-u C-u C-f表示右移64个字符。
前面讲了用C-g可以中断当前的命令,这次再补充一点,有时候C-g不灵时,可以按三次<Esc>键达到相同的目的。

kali本本配置

;;cat ~/.emacs

;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
(tool-bar-mode 0)
(menu-bar-mode 0)
(scroll-bar-mode 0)
(tool-bar-mode -1)



(setq column-number-mode t)
(setq column-number-mode 1)
(setq line-number-mode 1)
;; 显示行号
(global-linum-mode 1)
;; 在 mode line 上显示行列号
(setq column-number-mode 1)
(setq line-number-mode 1)

;;显示列号
(setq column-number-mode t)

;; 显示行号
(global-linum-mode 1)

;; 取消滚动栏,工具栏
(tool-bar-mode 0)
(menu-bar-mode 0)
(scroll-bar-mode 0)

;; 关闭emacs启动时的页面
(setq inhibit-startup-message 1)
(setq gnus-inhibit-startup-message 1)
;; 以 y/n代表 yes/no
(fset 'yes-or-no-p 'y-or-n-p)
;;; 设置备份策略
(setq make-backup-files t)
(setq kept-old-versions 2)
(setq kept-new-versions 2)
(setq delete-old-versions t)
(setq backup-directory-alist '(("" . "~/.emacsbackup")))

;; 公共插件配置
;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)

;;内置的package管理,emacs24以上的版本有用
(require 'package)
;;将melpa仓库地址加入到package-archives这个列表变量里面
(add-to-list 'package-archives
    '("melpa" . "http://melpa.org/packages/") t)
;;这个是国内一个elpa仓库镜像,速度更快一些,你懂得
(add-to-list 'package-archives
    '("popkit" . "http://elpa.popkit.org/packages/") t)
;;初始化package
(package-initialize)
;;更新仓库里面的package
(when (not package-archive-contents)
  (package-refresh-contents))
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(package-selected-packages (quote (company auto-complete autopair))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

;;;; c mode ;;;;
(defvar xgp-cfsi-left-PAREN-old nil
  "Command used to input \"(\"")
(make-variable-buffer-local 'xgp-cfsi-left-PAREN-old)

(defun xgp-cfsi-modify-alist (alist term new)
  (let ((tl (assq term (symbol-value alist))))
    (if tl
        (setcdr tl new)
      (add-to-list alist (cons term new)))))

(defun xgp-cfsi (style)
  "Deciding whether using CFSI."
  (interactive "Style: ")
  (c-set-style style)
  (setq indent-tabs-mode
        nil
        c-hanging-semi&comma-criteria
        (quote (c-semi&comma-inside-parenlist)))

  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-open nil)
  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-close nil)
  (local-set-key " " 'self-insert-command))

(defun xgp-cfsi-erase-blanks ()
  "Erase all trivial blanks for CFSI."
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward "[ \t]+$" nil t)
      (replace-match "" nil nil))))

(defun linux-c-mode()
  (define-key c-mode-map [return] 'newline-and-indent)
  (setq imenu-sort-function 'imenu--sort-by-name)
  (interactive)
  (imenu-add-menubar-index)
  (which-function-mode)
  (c-toggle-auto-state)
  (c-toggle-hungry-state)
  (setq indent-tabs-mode nil)
  (xgp-cfsi "linux"))
(add-hook 'c-mode-common-hook 'linux-c-mode)
;; 代码补全
(add-hook 'c-mode-hook 'company-mode)
(add-hook 'c++-mode-hook 'company-mode)

;; py
(setq tab-width 4)
(set-variable 'python-indent-offset 4)
;;(set-variable 'python-indent-guess-indent-offset nil)

reload configfile 重启

emacs 打开~/.emacs的时候执行命令M-x eval-buffer,就可以使配置文件立即生效。


emacs配置

我的EMACS设置

不错的配置 c什么都包括了 undo-tree暂时去掉 其它感觉不错 2021

mv ~/.emacs.d ~/.emacs.d.bak
git clone --depth 1 https://github.com/seagle0128/.emacs.d.git ~/.emacs.d

有空好好的看一下 https://github.com/seagle0128/.emacs.d


c 常用命令

emacs中很多命令都对C语言格式支持,补充几个命令M-x c-mode 当无法识别C语法格式的文件,可以强制打开C mode语法高亮C-M-p 跳转到}或)匹配的括号C-M-n 跳转到(或{匹配的括号M-x indent-region 自动缩进选定的区域C-c C-c 注释掉整个区域C-u C-c C-c 取消注释C-c C-u 跳转到前面的一个#ifdef C-c C-n 跳转到宏的开头或结尾C-c C-e 扩展宏编译排错:C-x ` (出错信息中)下一个错误,一个窗口显示错误信息,另一个显示源码的出错位置C-c C-c 转到出错位置调试:启动gdb调试器后,光标在源码文件缓冲区中时:C-x SPC 在当前行设置断点gdb在emacs中调用调试并不完美,有时候会出一些异常的情况。工作中如果emacs作为IDE用的话,一般在远程终端字符环境下更合适,如果作为专业的图形化IDE,codeblock等更合适,eclipse+CDT也是一种选择。

c 配置文件

;; 配置文件 for  c  or c ++
;; cat ~/.emacs

;; 在 mode line 上显示行列号
(setq column-number-mode 1)
(setq line-number-mode 1)

;;显示列号
(setq column-number-mode t)

;; 显示行号
(global-linum-mode 1)

;; 取消滚动栏,工具栏
;;(tool-bar-mode 0)
;;(menu-bar-mode 0)
;;(scroll-bar-mode 0)

;; 关闭emacs启动时的页面
(setq inhibit-startup-message 1)
(setq gnus-inhibit-startup-message 1)
;; 以 y/n代表 yes/no
(fset 'yes-or-no-p 'y-or-n-p)
;;; 设置备份策略
(setq make-backup-files t)
(setq kept-old-versions 2)
(setq kept-new-versions 2)
(setq delete-old-versions t)
(setq backup-directory-alist '(("" . "~/.emacsbackup")))

;; 公共插件配置
;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)


C/C++ Development Environment for Emacs

Emacs 中 C/C++ 编程基本环境配置2018

将Emacs配置成一个C/C++的IDE编程环境

https://wikemacs.org/wiki/C-ide

enable IDE-like features on Emacs

https://www.youtube.com/watch?v=5FQwQ0QWBTU

from tour

#这些笔记完全作到wiki么 会不会太多 而没有重点的感觉 

* 如果 EMACS 失去响应(IF EMACS STOPS RESPONDING)
-----------------------------------------------
如果 Emacs 对你的命令失去响应,你可以用 C-g 来安全地终止这条命令。C-g
也可以终止一条执行过久的命令。

C-g 还可以取消数字参数和只输入到一半的命令。

>> 输入 C-u 100 设定一个值为 100 的数字参数,然后按 C-g。
   现在再按 C-f,光标应该只会移动一个字符,因为你已经用 C-g 取消了参数。

如果你不小心按了一下 <ESC>,你也可以用 C-g 来取消它。
【这个说法似乎有问题,因为按照这个按键顺序输入的应该是 C-M-g。
取消 <ESC> 的正确做法是再连按两次 <ESC>。】


* 插入与删除(INSERTING AND DELETING)
--------------------------------------

,大部分的 Emacs 命令都可以指定重复次数,这其中也包括输入字符的
命令。重复执行输入字符的命令实际上就是输入多个相同的字符。

>>  试试 C-u 8 *,这将会插入 ********。

好,现在你应该已经掌握了最基本的的文本插入和修改功能,其实删除还可以
“以词为单位”进行,下面是一个关于“删除”操作的小结:

        <DEL>        删除光标前的一个字符
        C-d          删除光标后的一个字符

	M-<DEL>      移除光标前的一个词
        M-d          移除光标后的一个词

        C-k          移除从光标到“行尾”间的字符
        M-k          移除从光标到“句尾”间的字符

【可能你已经注意到了“删除(delete)”和“移除(kill)”的用词区别,后
文会有详细说明。】

注意“<DEL> 和 C-d”还有“M-<DEL> 和 M-d”是根据前述惯例从 C-f和 M-f 衍生的
出来的(其实<DEL>不是控制字符,我们先忽略这一点)。C-k和 M-k 的关系在
某种程度上与 C-e 和 M-e 一样――如果把“一行”和“一句”作一个类比的话。


你也可以用一种通用的办法来移除缓冲区里的任何一部分:首先把光标移动到你
想要移除的区域的一端,然后按 C-<SPC>(<SPC>指空格)【注意,C-<SPC> 往
往被中文用户设定成输入法热键,如果这样,C-<SPC> 就被系统拦截而无法传递
给 Emacs 了,在这种情况下可以使用C-@。】,然后将光标移动到你准备移除的
文字的另一端。这个时候, Emacs 会高亮光标和你按下 C-<SPC> 之间的文本。
最后,按下 C-w 。这样就可以把位于这两点之间的所有文字移除了。


注意,“移除(kill)”和“删除(delete)”的不同在于被移除的东西可以被重新
插入(在任何位置),而被删除的就不能使用相同的方法重新插入了(不过可以
通过撤销一个删除命令来做到,后文会提到)。


重新插入被移除的文字称为“召回(yank)


召回的命令是 C-y。它会在光标所在处插入你最后移除的文字。


C-y 可以召回最近一次移除的内容,那如何召回前几次移除的内容呢?它们当然
没有丢,你可以用 M-y 来召回它们。在用 C-y 召回最近移除的文字之后,紧接
着再按 M-y 就可以召回再前一次被移除的内容,再按一次 M-y 又可以召回再上
一次的……连续使用 M-y 直到找到你想要召回的东西,然后什么也不用做,继续 
编辑就行了。

如果连续按 M-y 很多次,你可能会回到起始点,也就是最近移除的文字。
【看得出这实际上是一个环。】

>> 移除一行,移动一下光标,然后再移除另外一行。
   按 C-y 将第二次移除的那行召回来。
   紧接着再按 M-y,它将会被第一次移除的那行取代。
   试着再按几下 M-y 看看会发生什么。
   再继续,直到第二行被召回来,然后再做个几次。
   如果感兴趣,你可以试着给 M-y 指定一个正的或负的参数。


* 撤销(UNDO)
--------------
如果你修改了一段文字,又觉得改得不好,可以用 undo 命令进行撤销:C-/。
另外, C-x u 和 C-/ 完全一样,但是按起来有些麻烦。

* 文件(FILE)
--------------


* 缓冲区(BUFFER)
------------------

你可以用 C-x C-f 找到并打开第二个文件,但第一个文件仍然在 Emacs 中。要
切回第一个文件,一种办法是再用一次 C-x C-f。这样,你就可以在 Emacs 中同
时打开多个文件。
不过还有一个更简单的办法,那就是用 C-x b。用这条命
令,你必须输入缓冲区的名称。(如果是返回默认的第一个不用名称)


>> 通过输入 C-x C-f foo <Return> 创建一个名为“foo”的文件。
   然后输入 C-x b TUTORIAL.cn <Return> 回到这里。



 C-x s   保存多个缓冲区


 输入 C-x 1 离开缓冲区列表
 
 
 
 * 命令集扩展(EXTENDING THE COMMAND SET)
-----------------------------------------
        C-x     字符扩展。  C-x 之后输入另一个字符或者组合键。
        M-x     命令名扩展。M-x 之后输入一个命令名。

 C-z 可以暂时离开 Emacs――当然,你还可以再回来。
 
 C-x 的扩展命令有很多,下面列出的是你已经学过的:

        C-x C-f         寻找文件。
	C-x C-s         保存文件。
        C-x C-b         列出缓冲区。
        C-x C-c         离开 Emacs。
	C-x 1           关掉其它所有窗格,只保留一个。
        C-x u           撤销。



* 自动保存(AUTO SAVE)
-----------------------

所以,假如不幸真的发生了,你大可以从容地打开原来的文件(注意不是自动保
存文件)然后输入 M-x recover file <Return> 来恢复你的自动保存文件。在
提示确认的时候,输入 yes<Return>。


* 状态栏(MODE LINE)
---------------------

“L” 和其后的数字给出了光标所在行的行号。

最开头的星号(*)表示你已经对文字做过改动。刚刚打开的文件肯定没有被改动
过,所以状态栏上显示的不是星号而是短线(-)。

状态栏上小括号里的内容告诉你当前正在使用的编辑模式。缺省的模式是
Fundamental,就是你现在正在使用的这个。它是一种“主模式”。


用 C-l C-l 将本行带到屏幕的最上方。



* 搜索(SEARCHING)
-------------------

C-s 是向前搜索,C-r 是向后搜索。不过手别这么快!别着急试。

在按下 C-s 之后,回显区里会有“I-search”字样出现,表明目前 Emacs 正处
于“渐进搜索”状态,并等待你输入搜索字串。按 <Return> 可以结束搜索。

>> 输入 C-s 开始一个搜索。注意敲慢一点,一次输入一个字符。
   慢慢输入“ccusor”这个词,每敲一个字都停顿一下并观察光标。
   现在你应该已曾经找到“ccusor”这个词了。
>> 再按一次 C-s,搜索下一个“ccusor”出现的位置。
>> 现在按四次 <DEL> ,看看光标是如何移动的。
>> 敲 <Return> 结束搜索。

看仔细了么?在一次渐进式搜索中,Emacs 会尝试跳到搜索目标出现的位置。要
跳到下一个命中位置,就再按一次 C-s。如果找不到目标,Emacs 会发出“哔”
的一声,告诉你搜索失败。在整个过程中,都可以用 C-g 来终止搜索。【你会发
现 C-g 会让光标回到搜索开始的位置,而 <Return> 则让光标留在搜索结果上,
这是很有用的功能。】

在渐进式搜索中,按 <DEL> 会“撤回”到最近一次搜索的命中位置。如果之前没
有一个命中, <DEL> 会抹去搜索字符串中的最后一个字符。比如你已经输入了
“c”,光标就停在“c”第一次出现的位置,再输入“u”,光标停在“cu”第一次出现 
的位置,这时再按 <DEL> ,“u”就从搜索字串中消失了,然后光标会回到“c”第
一次出现的位置。


* 多窗格(MULTIPLE WINDOWS)
----------------------------

> 移动光标到这一行,然后输入 C-l C-l。

>> 现在输入 C-x 2,它会将屏幕划分成两个窗格。
   这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。

>> 试试用 C-M-v 滚动下方的窗格。
   (如果你并没有 META 键,用 ESC C-v 也可以。)
   【向上滚动是 C-M-S-v,也就是同时按住 CONTROL、META 和 SHIFT 再按 v】

>> 输入 C-x o(“o”指的是“其它(other)”),
   将光标转移到下方的窗格。

>> 在下方的窗格中,用 C-v 和 M-v 来滚动。
   同时继续在上方的窗格里阅读这些指导。


C-M-v 是一个 CONTROL-META 组合键。如果你有 META (或 Alt)键的话,可以
同时按住CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,
因为它们只是用来“修饰(modify)”你输入的字符的。


>> (在上方窗格里)输入 C-x 1 关掉下方窗格。

(如果你在下方的窗格里输入 C-x 1,那么就会关掉上方的窗格。你可以把这个
命令看成是“只保留一个窗格”――就是我们正在编辑的这个。)

不同的窗格可以显示不同的缓冲区。如果你在一个窗格里用 C-x C-f 打开了一个
文件,另一个窗格并不会发生什么变化。任何一个窗格里都可以用来打开文件。


* 多窗口(MULTIPLE FRAMES)
------------------


* 更多精彩(MORE FEATURES)
---------------------------

想学习更多的使用技巧,Emacs 使用手册(manual)值得一读。你可以读纸版的
书,也可以在 Emacs 中读(可以从 Help 菜单进入或者按 C-h r)。提两个你
可能会很感兴趣的功能吧,一个是可以帮你少敲键盘的 completion(自动补全),
另一个是方便文件处理的 dired(目录编辑)。

Completion 可以替你节省不必要的键盘输入。比如说你想切换到 *Message* 缓
冲区,你就可以用 C-x b *M<Tab> 来完成。只要 Emacs 能够根据你已经输入的
文字确定你想要输入的内容,它就会自动帮你补齐。Completion 也可用于命令
名和文件名。有关 Completion 的详细说明可以在 Emacs Info 中的
“Completion”一节里找到。

Dired 能够在一个缓冲区里列出一个目录下的所有文件(可以选择是否也列出子
目录),然后你可以在这个文件列表上完成对文件的移动、访问、重命名或删除
等等操作。Dired 也在 Emacs 使用手册中有详细介绍,参见“Dired”一节。


下面列出主要术语的译词对照,并给出注释说明:

    command               命令
    cursor                光标
    scrolling             滚动
    numeric argument      数字参数
    window                窗格 [1]
    insert                插入
    delete                删除 [2]
    kill                  移除 [2]
    yank                  召回 [2]
    undo                  撤销
    file                  文件
    buffer                缓冲区
    minibuffer            小缓冲
    echo area             回显区
    mode line             状态栏
    search                搜索
    incremental search    渐进式搜索 [3]


20180313 ln 792
here


M-x replace-string ENTER search-string ENTER 替换
 


用 <Return> 结束文件名的输入
Return 这里是什么意思呢  回车么 


Alt + x
输入: linum-mode



emacs中如何跳到指定行

M-x goto-line 然后回车   <line_number> 

以在.emacs文件中定制一下(添加以下一行): 

(define-key ctl-x-map "l" 'goto-line) 


然后每次在emacs中按C-x再按l,输入指定的行号就可以了。

http://blog.csdn.net/grey_csdn/article/details/78905862
http://bbs.csdn.net/topics/60028785

package ELPA中国镜像


在配置文件中加入  ~/.emacs.d/lisp$vim  init-custom.el #可能是这个 
(setq package-archives '(("gnu" . "http://mirrors.ustc.edu.cn/elpa/gnu/")
                         ("melpa" . "http://mirrors.ustc.edu.cn/elpa/melpa/")
                         ("melpa-stable" . "http://mirrors.ustc.edu.cn/elpa/melpa-stable/")
                         ("org" . "http://mirrors.ustc.edu.cn/elpa/org/")))


也可以使用命令M-x list-packages获取插件列表,然后 使用C-s找到 软件名    i  - 选择要安装的包  例如叫 elpy 来安装


;内置的package管理,emacs24以上的版本有用
(require 'package)
;;将melpa仓库地址加入到package-archives这个列表变量里面
(add-to-list 'package-archives
    '("melpa" . "http://melpa.org/packages/") t)
;;这个是国内一个elpa仓库镜像,速度更快一些,你懂得
(add-to-list 'package-archives 
    '("popkit" . "http://elpa.popkit.org/packages/") t)
;;初始化package
(package-initialize)
;;更新仓库里面的package
(when (not package-archive-contents)
  (package-refresh-contents))

常用操作

#软件包安装
 Alt+x list-packages

可以先用C-s向下搜索  autopair
找到后 回来后 按i再按x就下载到本地了。然后打开emacs的配置文件init.el,在里面添加下面:

常用快捷键
i  - 选择要安装的包
d - 选择要删除的包
U - 升级已安装的包
x  - 执行操作
d - 选择要删除的包

https://mirrors.ustc.edu.cn/help/elpa.html

https://mirror.tuna.tsinghua.edu.cn/help/elpa/ emacs完全补完计划(三)——package的引入和管理

emacs学习笔记(package列表查看&添加packages源&安装packages)

emacs-gtk

让选中可以高亮
自己打开随便看下 居然就看到了 不错 
emacs-gtk  --> Options --> customize emacs   --> custom themes   -->   个人感觉 adwaita 还不错 
save theme settings

emacs 进阶学习

https://link.zhihu.com/?target=https%3A//github.com/emacs-tw/awesome-emacs 0.我雖然是看man過來的,但是這份名單,如果早知道應該會輕鬆很多。--- update1.從starter-kit入手把,爬梯子出去看redguardtoo的獨立博客,你會發現吊爆了。當然他的一年的文章一定要看。而且可以git下來,revert到剛開始的commit,一個個commit看。2. 還有就是各種折騰。各種動手把,拒絕其他一切的編輯器。3.改鍵位,乾脆去買了HHKB也可以,如你很土豪。4.看書呀,學elisp,這個階段你要看田春冰河的,李殺的博客了。學着寫個插件把。PS.學習emacs會改變你編程思維的,包括你軟件開發的工作流。lisp系各種優雅.上面編號不分先後。

怎样学习 Emacs

不错的emacs视频

加速你的 Emacs

生活在emacs中

Emacs学习笔记(1):初学者的学习计划

Emacs学习笔记(7):简单的配置

Emacs学习笔记(2): 初识Emacs

emacs 学习标签


我用Emacs干什么?为什么用Emacs?

作为 CEO 使用 Emacs 的两年经验之谈

music emms

install


这个方式可以安装到新 的emms 7.8 
使用M-X list-packages 进入package列表,如果已在这个界面,按 r 键刷新。已安装Solarized主题为例,按C-s搜索“emms”,将光标置于“solarized”那行,按下 i 键,将其标记为待安装的,然后按 x 键执行标记为 i 的待安装的项目。


注意  一时不知如何播放quicktime 可以 Audacity 转音乐格式的嘛 文件-- 导出  --导出为MP3  flac 格式更加不错 

;; For ruby begin
;;#添加到配置文件 例如 .emacs
  (setq package-archives '(("gnu"   . "http://elpa.emacs-china.org/gnu/")
                           ("melpa" . "http://elpa.emacs-china.org/melpa/")))


emms 在默认刚刚安装的emacs 24是有的

 M-x package-install RET emms RET 好像还是有问题呢 
叫emms-stale

https://elpa.gnu.org/packages/emms.html
 https://ftp.gnu.org/gnu/emms/emms-6.00.tar.gz


trouble 

evan@myxps:~/.emacs.d/elpa$ mv emms-20210120.1745/ bak.emms-20210120.1745/


config

;加了这个配置后 随便玩就可以播放了,不然不行
;; always start from this 默认的播放目录
;;(setq emms-source-file-default-directory "/home/evan/data/music/westlife")
;;(add-to-list 'load-path "/usr/share/emacs/site-lisp/emms")     ;;; emms目录
(add-to-list 'exec-path "/usr/bin/mplayer/")                ;;;mplayer目录
(require 'emms-setup)
(emms-devel)
;; players
(setq emms-player-mpg321-command-name "mpg123"
      emms-player-mplayer-command-name "mplayer"
      emms-player-list '(emms-player-mplayer
                         emms-player-mplayer-playlist
                         emms-player-ogg123
                         emms-player-mpg321))
;; Show the current track each time EMMS
;; starts to play a track with "播放 : "
(add-hook 'emms-player-started-hook 'emms-show)
(setq emms-show-format "播放: %s")
;; When asked for emms-play-directory,
;; always start from this 默认的播放目录
(setq emms-source-file-default-directory "/home/evan/data/music/westlife")
(setq emms-playlist-buffer-name "音乐")

;;;emms快捷键设置
(global-set-key (kbd "C-c e l") 'emms-playlist-mode-go)
(global-set-key (kbd "C-c e s") 'emms-start)
(global-set-key (kbd "C-c e e") 'emms-stop)
(global-set-key (kbd "C-c e n") 'emms-next)
(global-set-key (kbd "C-c e p") 'emms-pause)
(global-set-key (kbd "C-c e f") 'emms-play-playlist)
(global-set-key (kbd "C-c e o") 'emms-play-file)
(global-set-key (kbd "C-c e d") 'emms-play-directory-tree)
(global-set-key (kbd "C-c e a") 'emms-add-directory-tree)
;;(set-fontset-font "fontset-default"
;;'gb18030 '("Microsoft YaHei" . "unicode-bmp"))
;;(add-to-list 'load-path "/usr/share/emacs/site-lisp") ;;

(setq default-major-mode 'text-mode);;一打开就起用 text 模式。
(global-font-lock-mode t);;语法高亮
(auto-image-file-mode t);;打开图片显示功能
(fset 'yes-or-no-p 'y-or-n-p);;以 y/n代表 yes/no,可能你觉得不需要,呵呵。
(column-number-mode t);;显示列号
(show-paren-mode t);;显示括号匹配
(display-time-mode 1);;显示时间,格式如下
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
(tool-bar-mode nil);;去掉那个大大的工具栏
(scroll-bar-mode nil);;去掉滚动条,因为可以使用鼠标滚轮了 ^_^
(mouse-avoidance-mode 'animate);;光标靠近鼠标指针时,让鼠标指针自动让开,别挡住视线。很好玩阿,这个功能
(setq mouse-yank-at-point t);;支持中键粘贴
(transient-mark-mode t);;这个忘了,郁闷!
(setq x-select-enable-clipboard t);;支持emacs和外部程序的粘贴
(setq frame-title-format "hbs@%b");;在标题栏提示你目前在什么位置。你要把hbs改成自己的用户名
(setq default-fill-column 80);;默认显示 80列就换行
;;(load-file "/home/hbs/myEmacs/color-theme.el")
;;(color-theme-dark-blue);选择 darkblue的配色方案

;;(add-to-list 'exec-path "/usr/bin/mplayer/")

Usage


;;可以设置快捷键吧 
;;加了这个配置后 随便玩就可以播放了,不然不行 
(require 'emms-setup)
(emms-all)
(emms-default-players)

pulseaudio 打开就知是 mpq321后端在播放

交互使用

使用 emms-playlist-mode-go 命令即可进入正在播放的播放列表的 buffer 。 在这里可以方便地控制播放上一首、下一首、随机的某一首歌等。通过 ? 可以 描述当前 mode ,并得到一份详细的可用命令列表。

我通常使用 emms-play-find 或者 emms-play-directory-tree 来打开一个播放 列表,然后用 d 删除不想要的曲目,并 C-x C-s 将其保存起来。

EMMS 还提供了打分机制。并可以设置最低分数,如果分数低于最低分数将不会 被播放。要是能像 Dired 或者 Mew 的 summary-mode 那样能够方便地贴标签并 进行批量操作就更舒服了!

如何固定播放列表


我的初级用法 

问题 这播放列表会被 rewrite
emms-play-find 或者 emms-play-directory-tree 来打开一个播放 列表->   C-x C-s  -->  cat ~/myplay

 alt+x  emms-next


Basic Commands

;;Basic Commands
 emms-stop  也可以直接用 s

官方文档最好了啦

https://www.gnu.org/software/emms/manual/#Quickstart-Guide10 个让你进入 Emacs 世界的技巧


The Emacs Multimedia System

https://www.emacswiki.org/emacs/EMMS

用Emacs看电影

The Emacs Multimedia System

在Emacs中播放音乐有哪些选项

功能

   收发电子邮件、上新闻组(Gnus)
   无缝直接编辑远程文件(Tramp)
   通过Telnet登录远程主机
   操作壳层(M-x EShell,Term)
   结合git, mercurial等版本控制系统并直接操作(Magit,VC)
   上Twitter(Twittering-mode)
   登陆IRC和朋友交流(M-x ERC,rcirc)
   电子数据表
   模拟其他编辑器,如vi(Evil-mode)、WordStar、EDT、TPU等
   编辑Wiki (Wikipedia-mode)
   对多种编程语言的编辑,如C/C++、Perl、Python、Lisp等等
   调试程序,结合GDB,EDebug等。
   玩游戏
   计算器
   心理咨询(M-x doctor)
   煮咖啡
   记笔记、日记(Org-mode)
   管理日程,Task,待办事项(ToDo),约会等GTD(Org-mode)
   写作与出版(Org-mode,Muse-mode)
   目录管理(Dired)
   文件比较、合并(Ediff)
   阅读info和man文档(M-x info,woman)
   浏览网站(M-x eww)
   为各种程序(TeX、LaTeX等)提供统一的操作界面
   ……

此外Emacs还有如下特点:

   实时编辑器
   Self-documenting
   可定制性
   可扩展性(集成Lisp语言)

References 参考

一个Emacs程序员的一天 Emacs快捷键的总结

走近emacs 201801

Emacs常用命令快速参考

学习 Emacs 的基础知识

一年成为 Emacs 高手

http://emacser.com/

Emacs - 代码编辑神器之一

为什么要用 Emacs

Emacs 入门 Emacs 入门

https://i.linuxtoy.org/docs/guide/ch25.html

Emacs Tutorial 快速指南

Emacs配置入门

emacswiki

Emacs,最强编辑器,没有之一

Emacs org mode https://i.linuxtoy.org/docs/guide/ch32s03.html#id3155525


https://www.emacswiki.org/emacs?interface=zh-cn

https://www.cnblogs.com/blfshiye/p/4566900.html


https://www.gnu.org/software/emacs/manual/html_node/efaq/Installing-Emacs.html

A Guided Tour of Emacs

Emacs - the Best Python Editor https://realpython.com/blog/python/emacs-the-best-python-editor/

Emacs:最好的Python编辑器 http://codingpy.com/article/emacs-the-best-python-editor/

Emacs (简体中文)

How to Install Packages Using ELPA, MELPA

emacs python 配置

皈依Emacs

【积水成渊-逐步定制自己的Emacs神器】3:为Emacs安装扩展

我的Emacs折腾经验谈(一) 一些给新人的建议

wiki

Wiki编辑器, 通过 Yaoddmuse 几乎能支持所有的Wiki格式, 实时语法高亮, 你不用担心保存以后确发现格式错了

https://www.emacswiki.org/emacs/Yaoddmuse

用Emacs Wiki帮你写Blog

2019

学习Emacs系列教程(一):基本使用

emacs完全补完计划(一)——嘴炮和入门

emacs 自带的简单入门教程(TUTORIAL)

Org-mode 简明手册

小灰笔记 emacs

从零开始——Emacs 安装配置使用教程 2015

编辑器终结者:vim与emacs双剑合璧

Emacs有什么优点,用Emacs写程序真的比IDE更方便吗

2021

“臃肿”的Emacs为什么性能最优

Emacs大牛李杀的快捷键优化技巧

参考 for python

Emacs:最好的Python编辑器

参考 for c

将Emacs配置成一个C/C++的IDE编程环境

Emacs 中 C/C++ 编程基本环境配置

将Emacs配置成一个C/C++的IDE编程环境

Emacs C、C++、Python 编程的简单配置


Emacs安装配置yasnippet

yasnippet

我的Emacs折腾经验谈(四) 也谈Yasnippet

https://www.emacswiki.org/emacs/Yasnippet