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

来自linux中国网wiki
跳到导航 跳到搜索
 
(未显示同一用户的100个中间版本)
第8行: 第8行:
  
 
https://www.cnblogs.com/robertzml/tag/Emacs/
 
https://www.cnblogs.com/robertzml/tag/Emacs/
 +
 +
[https://zhuanlan.zhihu.com/p/125524093 推荐免费中文Emacs精品教程]
 +
 +
[https://blog.csdn.net/jiangli866/article/details/5366380  Emacs的日常生活(1)]
 +
 +
[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高手(像神一样使用编辑器)]
 +
 +
[https://www.cnblogs.com/kunyuanjushi/p/5951404.html  Emacs常用快捷键 ]
  
 
<pre>
 
<pre>
 +
 +
我要开发巨型项目 (需要在多个目录窗口间跳来跳去),所以装了 window-numbering.el.
 +
巨型项目需要我同时调试多种语言,所以我装了 evil-nerd-commenter,这样不用记住特定语言的语法就可以 comment/uncomment 代码.
 +
 
  要学习的 有 calendar    git  etc  
 
  要学习的 有 calendar    git  etc  
  
第47行: 第59行:
 
ERC is a powerful, modular, and extensible IRC client for Emacs
 
ERC is a powerful, modular, and extensible IRC client for Emacs
  
==绑定键盘 ==
 
  
[https://docs.huihoo.com/homepage/shredderyin/wiki/KeyBinding.html Emacs 绑定键盘的技巧]
+
==日常使用2022 ==
 +
evil (alx+x)
 +
==  为了快速  又一次手工从0写自己的配置啦 Nov 05 2021 ==
  
https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Commands.html
 
  
 +
emacs for ruby 官方文档
 +
https://www.ruby-lang.org/zh_cn/documentation/
  
[https://panqiincs.me/2015/06/15/edit-markdown-with-emacs/ 用Emacs编辑Markdown ]
+
https://github.com/sabof/org-bullets
  
  
[https://www.jianshu.com/p/e4e015096fb4 Emacs有这些配置足矣]
+
[https://boxmaking.github.io/emacs/emacs-init.html  emacs-配置文件放哪里]
 +
<pre>
 +
vi .emacs
  
==主题配色  ==
+
;; org-mode 美化
https://www.cnblogs.com/eat-and-die/p/10309681.html#org8b69c89
+
;;一定要放这里 不然会warring
 +
(add-to-list 'load-path "~/.emacs.d/lisp/")
  
==Edit mediawiki sites from emacs ==
+
(require 'org-bullets)
[https://github.com/hexmode/mediawiki-el mediawiki.el -- Edit mediawiki sites from emacs]
+
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))
  
==Emacs 从入门到飞天==
 
<pre>
 
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 
 
</pre>
 
  
[https://max.book118.com/html/2018/0327/158929840.shtm emacs用户手册]
 
  
https://www.cnblogs.com/robertzml/tag/Emacs/
 
  
[https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/guide-zh.org#%E4%BD%BF%E7%94%A8-evil 一年成为Emacs高手 (像神一样使用编辑器)]
 
  
[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]
 
  
[https://www.douban.com/group/topic/1005739/  我来挖个坑:大家用 Emacs 来干嘛? ]
 
  
[https://www.zhihu.com/question/27478438?sort=created Emacs 有什么奇技淫巧?]
+
;;#添加到配置文件 例如 .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))
  
[https://github.com/hick/emacs-chinese Emacs相关中文问题以及解决方案]
+
(require 'flymake)
  
https://www.cnblogs.com/liweilijie/category/440232.html
+
;; 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))))
  
[https://www.cnblogs.com/youge/p/4518739.html  Emacs 快速指南 - 原生中文手册 ]
+
(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)
[http://www.stallman.cn/19 我为什么鄙视并抵制Emacs编辑器?]
 
  
==markdown==
+
(add-hook 'ruby-mode-hook
<pre>
+
          '(lambda ()
org导出md
 
  
    org-mode支持markdown格式导出,而且不需要pandoc和markdown-toc。
+
    ;; Don't want flymake mode for ruby regions in rhtml files and also on read only files
    从操作性上来说org-mode要好一些,功能更加强大,所以我要弃markdown了。
+
    (if (and (not (null buffer-file-name)) (file-writable-p buffer-file-name))
 +
(flymake-mode))
 +
    ))
  
    配置方法
 
  
    (eval-after-load "org" '(require 'ox-md nil t))
 
  
    导出md方法
+
前提 安装
 +
sudo gem install rsense
 +
#The Rsense server is started from the commandline with:
 +
rsense start
  
    C-c C-e m
 
 
</pre>
 
</pre>
==window-numbering==
 
<pre>
 
    简介
 
    快速在window间切换。
 
  
    操作
+
==绑定键盘 ==
 +
  f2现在是最近的文件
  
    M-number
+
[https://docs.huihoo.com/homepage/shredderyin/wiki/KeyBinding.html Emacs 绑定键盘的技巧]
  
eg  C-x 2  切出两个窗口  然后 alt-1 alt-2 两个窗口之间来回
+
https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Commands.html
</pre>
 
  
  
[https://www.cnblogs.com/eat-and-die/p/10309681.html#org8b69c89 emacs安装配置]
+
[https://panqiincs.me/2015/06/15/edit-markdown-with-emacs/ 用Emacs编辑Markdown ]
 +
 
  
 +
[https://www.jianshu.com/p/e4e015096fb4 Emacs有这些配置足矣]
  
[https://blog.csdn.net/hejinjing_tom_com/article/details/52167009  emacs 学习小结]
+
==主题配色  ==
 +
https://www.cnblogs.com/eat-and-die/p/10309681.html#org8b69c89
  
[https://blog.csdn.net/ruglcc/article/details/7822030  Emacs 编辑环境,第 3 部分: 高级 Emacs 文本操作]
+
==Edit mediawiki sites from emacs ==
 +
[https://github.com/hexmode/mediawiki-el mediawiki.el -- Edit mediawiki sites from emacs]
  
=以前笔记=
+
==Emacs 从入门到飞天==
==calendar emacs日记功能 ==
 
 
<pre>
 
<pre>
;; 设置F2快捷键指定Emacs 的日历系统,i d 新建日记,d查看日记
+
1.Emacs Beginner's HOWTO http://jeremy.zawodny.com/emacs/
(global-set-key [f2] 'calendar)
 
  
q 是exit
+
2.Learning GNU Emacs Third Edition
  
</pre>
+
3.Sams Teach Yourself Emacs in 24 Hours
https://www.gnu.org/software/emacs/manual/html_node/emacs/Calendar_002fDiary.html
 
  
[http://blog.sina.com.cn/s/blog_4d9e0a010102weij.html emacs写日记]
+
4.Writing GNU Emacs Extensions
  
[https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Commands.html manual Commands for Binding Keys]
+
5.An Introduction to Programming in Emacs Lisp
  
https://www.emacswiki.org/emacs/CalendarMode
+
6.Gnu Emacs Lisp Reference Manual
  
[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中的日程管理]
+
7.GNU Emacs Manual
  
[https://github.com/kiwanami/emacs-calfw Calfw]
+
8.GNU Emacs Pocket Reference 
 +
</pre>
  
[https://www.emacswiki.org/emacs/CalendarLocalization#h5o-5 CalendarLocalization]
+
[https://max.book118.com/html/2018/0327/158929840.shtm emacs用户手册]
  
 +
https://www.cnblogs.com/robertzml/tag/Emacs/
  
[http://blog.chinaunix.net/uid-25830557-id-317944.html Emacs配置文件(非常酷的风格!)有很多calendar相关的]
+
[https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/guide-zh.org#%E4%BD%BF%E7%94%A8-evil 一年成为Emacs高手 (像神一样使用编辑器)]
  
==2021问题==
+
[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]
现在在kali里面直接打开文件没内容显示,要先打开em  Symbol's value as variable is void ispell-menu-map-needed
 
我结果是从另外一个方向来处理这个问题  手工编译em 27  暂时只另外了 em 为新的emacs 其它 包括emacs-gtk还没改 /usr/bin 下的还没有改
 
  
==安装emacs==
+
[https://www.douban.com/group/topic/1005739/  我来挖个坑:大家用 Emacs 来干嘛? ]
[[How to Compile Emacs on Linux]]
 
  
[http://soft.dog/2018/07/23/emacs-lisp/ Emacs Lisp]
+
[https://www.zhihu.com/question/27478438?sort=created Emacs 有什么奇技淫巧?]
  
== 正文==
+
[https://github.com/hick/emacs-chinese Emacs相关中文问题以及解决方案]
https://www.emacswiki.org/emacs?interface=zh-cn
 
  
[https://blog.csdn.net/wdkirchhoff/article/details/41623161  生活在Emacs中]
+
https://www.cnblogs.com/liweilijie/category/440232.html
  
https://www.emacswiki.org/emacs/InitFile
 
  
== 成为高手笔记 Basic Emacs survival keys==
+
[https://www.cnblogs.com/youge/p/4518739.html  Emacs 快速指南 - 原生中文手册 ]
<pre>即使你不打算使用 Emacs 默认快捷键, 这步也是必须的, 不要跳过!
 
  
最起码要知道以下命令,
+
== 无知和搞笑==
 +
[http://www.stallman.cn/19 我为什么鄙视并抵制Emacs编辑器?]
  
M-x describe-variable, 快捷键 C-h v, 查看变量的文档
+
==markdown==
M-x describe-function, 快捷键 C-h f, 查看命令的文档
+
<pre>
M-x describe-key, 快捷键 C-h k, 查看快捷键的文档
+
org导出md
  
 +
    org-mode支持markdown格式导出,而且不需要pandoc和markdown-toc。
 +
    从操作性上来说org-mode要好一些,功能更加强大,所以我要弃markdown了。
  
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
 
  
 +
    (eval-after-load "org" '(require 'ox-md nil t))
  
If an Emacs session crashed recently, type M-x recover-session RET
+
    导出md方法
to recover the files you were editing.
 
  
 +
    C-c C-e m
 +
</pre>
 +
==window-numbering==
 +
<pre>
 +
    简介
 +
    快速在window间切换。
  
     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功能时依然有效.
 
 
 
  
 +
    M-number
  
 +
eg  C-x 2  切出两个窗口  然后 alt-1 alt-2 两个窗口之间来回
 
</pre>
 
</pre>
  
  
以实际问题作为切入点
+
[https://www.cnblogs.com/eat-and-die/p/10309681.html#org8b69c89 emacs安装配置]
  
努力能很快得到回报, 你会越学越有乐趣, 进入感情上的正反馈.
 
  
要成为高手, 兴趣是最重要的.
+
[https://blog.csdn.net/hejinjing_tom_com/article/details/52167009  emacs 学习小结]
 +
 
 +
[https://blog.csdn.net/ruglcc/article/details/7822030  Emacs 编辑环境,第 3 部分: 高级 Emacs 文本操作]
 +
 
 +
==代码注释==
  
以我为例, 我急需 GTD 的工具, 而 Emacs 的 Org-mode 是同类软件中最好的 (没有之一). 用 Org-mode 节省了时间后, 我对 Emacs 爱屋及乌, 兴趣高涨了 100 倍.
+
[https://zhuanlan.zhihu.com/p/107668189 陈斌注释代码的高级技巧]
 +
==Emacs代码折叠==
  
反面例子是啃Lisp教程开始Emacs之旅, 坚持下来的人寥寥无几.
+
[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代码折叠]
  
待解决的问题设定优先度 关键在于理性地考虑你最迫切需要解决的一个问题.以这个问题作为出发点, 除此之外都可以妥协.
+
[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代码折叠]
  
虽然 Emacs 无所不能, 但是饭也要一口一口吃. 有时退一步等于进两步.
+
[https://blog.csdn.net/pfanaya/article/details/6939310  Emacs 编写代码 折叠与展开]
  
例如, 我一直以为 Emacs 的中文显示很完美, 搞不懂为什么有人在字体配置上花那么多时间.
+
[https://blog.csdn.net/tangnf/article/details/1619162  emacs中的代码折叠]
  
在接到读者反馈后, 我才明白原来我一直在终端下使用Emacs, 终端软件可以完美显示中文字体, 所以就没 Emacs 什么事了. 需要配置字体的人用的是图形界面 Emacs.
+
[https://www.cnblogs.com/cobbliu/archive/2013/03/27/2983997.html  emacs 代码折叠 ]
  
当初只在终端下使用 Emacs 是因为需连接到远程服务器. 我认为这是重点. 甚至为此放弃了漂亮的配色主题 (后来发觉此牺牲毫无必要). 塞翁失马, 由此也避免了图形界面版本的所有问题.
+
[https://www.cnblogs.com/bamanzi/archive/2011/04/11/emacs-code-folding.html  Emacs的代码折叠 ]
  
https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/guide-zh.org
+
[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的代码折叠展开绑定键更好用一些]
  
==后记==
+
==Centaur Emacs ==
<span style="color:green;">后面要把常用的这些常用快捷键写成一个短小的总结卡</span>
+
<pre>
=== 模式键定义===
 
  
四个模式键:C—-Ctrl;M—-Alt;s—-Super(Win);S—-Shift
+
Dec  29 2021 现在用19年调整出来的那个配置 emacs-gtk 改的配置也写入custom.el
  
比如:
 
  
C-x:表示按下ctrl键,然后按下x键。
+
GitHub的raw.githubusercontent.com无法链接
  
C-x  C-c:表示按下ctrl,然后按下x键,松开后再按下c键。
+
    hosts文件添加 以下内容并保存即可恢复
 +
    199.232.68.133 raw.githubusercontent.com
  
C-x k:表示按下ctrl,同时按下x和k键。
 
  
 +
Customization
 +
Customize Group
  
=== 最常用命令 eg页开头或结尾===
+
M-x customize-group然后选择centaur。设置并保存配置,然后重新启动Emacs。
 +
Manual
  
<span style="color:red;">M-f 与 M-b  </span> 在行内, 前后大步移动光标,步进单位对于英文而言是单词的长度,对于中文而言是两个标点符号的间距。
+
在custom.el中添加或更改配置,然后重新启动Emacs。
  
<span style="color:red;">M-{ M-} </span> 段开头或结尾
+
默认的包归档文件是melpa。您可以在custom.el中更改,也可以随时通过M-x set-package-archives手动设置。
  
<span style="color:red;">C-x [  C-x ] or ESC < ESC > </span>页开头或结尾 
+
对于个人配置,可以设置为~/.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浏览器的操作
  
<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> 如果文档很长,用可实现向下或向上翻屏
+
</pre>
 +
=== FAQ===
 
<pre>
 
<pre>
M-< ,移到最开始。
+
FAQ
  然后再按几次 C-v 回到这里。
+
 
 +
    如何在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。
 +
 
 +
</pre>
 +
 
 +
https://seagle0128.github.io/.emacs.d/#customize-group
  
  M-> ,移到最末尾。
+
[https://www.5axxw.com/wiki/content/ipt6q1 CentaurEmacs-一个奇特而快速的Emacs配置 ]
  然后再按几次 M-v 回到这里。
 
  
C-x 2 将屏幕划分成两个窗格。这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。
+
[https://github.com/condy0919/.emacs.d A fast and incredible Emacs config]
  
C-x o(“o”指的是“其它(other)”), 将光标转移到下方的窗格。
 
  
C-x 1  (在上方窗格里)输入 C-x 1 关掉下方窗格。
 
  
C-x C-f        寻找文件。
+
[https://blog.csdn.net/qq_33831360/article/details/107732230  emacs安装与配置(Centaur Emacs)]
C-x C-s        保存文件。
 
  
打开菜单 用F10或者M-` (就是键盘输入区左上角的那个键)就可以呼出菜单了
+
[https://lemon0910.github.io/%E5%B7%A5%E5%85%B7/emacs-usage/# emacs学习心得 ]
  
emacs-gtk 显示菜单 etc  option -->show/hide 这样在 emacs-gtk 就有菜单了 而em还是没有的 非常 好
+
[https://emacs-china.org/t/emacs/3374  Emacs 用户们以及他们的配置合集 ]
</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>
 
  
==== 文件编辑====
+
[https://blog.csdn.net/easier_life/article/details/10061935  优化emacs 界面显示设置]
<pre>
 
  
ESC x goto-line n RET 把光标移动到文件的第N行
+
[https://www.jianshu.com/p/90b0d25f32df Emacs入门系列:定制Emacs的Theme]
ESC x goto-char n RET 把光标移动到文件的第N个字符
+
 
ESC 500 C-n 光标移动500行,ESC n 是重复执行命令的意思。
+
==doom 另一个  Emacs Distribution==
C-u C-u 等于4, C-u C-u 等于16次重复的意思。
+
Doom Emacs就是一个Emacs+Vim的产物,其包含了Emacs和Vim的优点,
C-x u 撤消; 同命令还有: C-_ C-/
+
 
ESC - C-k 删除行首到光标位置之间的东西。
+
[https://cireu.github.io/2019/10/18/doom-emacs-issue/ doom-emacs 配置的问题]
ESC d kill-word 删除光标后面的单词。
+
 
ESC DEL backward-kill-word 删除光标前面的单词。
+
[https://shigaro.org/2020/07/01/emacs-1/ Emacs 笔记 (一) —— 安装与配置 Doom Emacs]
ESC k kill-sentence 删除光标后面的句子。
+
 
ESC y 恢复上次删除的操作内容。
+
https://www.zhihu.com/question/60367907
C-t transpose-chars 交换两个字符的位置。
+
 
ESC t transpose-words 交换两个单词的位置。
+
[https://www.bilibili.com/read/cv11371146/ 请尝试使用Doom Emacs 「Emacs+Vim双强联合」]
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 文件另存为.
 
</pre>
 
  
==== 使.emacs立即生效====
+
[https://blog.csdn.net/u014801157/article/details/113887821  Doom-Emacs安装和基本使用方法]
<pre>
 
ESC x eval-current-buffer
 
  
</pre>
+
==MediaWikiMode ==
==== 查找和替换操作====
+
编辑Wiki (Wikipedia-mode)
  
[https://www.cnblogs.com/robertzml/archive/2010/03/03/1675870.html  学习Emacs系列教程(八):查找替换 ]
+
[https://www.emacswiki.org/emacs/MediaWikiMode MediaWikiMode]
<pre>
+
 
C-s isearch-forward 向前递增查找
+
https://github.com/hexmode/mediawiki-el
C-r isearch-backward 向后递增查找
+
 
C-s C-w 可以把从光标位置到下一个标点符号或者空格符之间的文本都复制到查找字符串里面去。
+
==theme ==
C-s C-y 光标位置到行尾之间的文本都复制到查找字符串里面去.
+
===zenburn-theme for Emacs ===
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>
 
<pre>
  
基本查找与替换操作    2021 0228                                                                                                                                                 
+
Download zenburn-theme.el to the directory ~/.emacs.d/themes/. Add this to your .emacs (or init.el):
                                                                                                                                                                           
 
  M-x replace-string RETURN                                                                                                                                                 
 
  输入查找字符串 回车  ,再输入替换字符串(new) 回车                                                                                                                         
 
  如果想整个文件 全局查找 替换  在用这个命令之前用 ESC <  or home
 
  
ESC % 开始查询-替换操作。
+
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")
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系列教程(八):查找替换]
+
临时load
 +
Now you can load the theme with the interactive function load-theme like this:
  
[https://blog.csdn.net/a593796769/article/details/8936072 Emacs查找替换字符串]
+
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)
  
=====删除命令 =====
 
<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>
 
</pre>
  
=====缩进格式=====
 
<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 .
 
    用复制办法得到的查找字符串会把原文中的大写字母都转换成小写字母。
 
  
==== ====
+
https://github.com/bbatsov/zenburn-emacs
==== 搜索 ====
+
 
增量搜索
+
==2021==
C-s 正向搜索
+
 
 +
[https://lifegoo.pluskid.org/wiki/Emacs.html pluskid.org Emacs.html]
 +
 
 +
[https://www.cnblogs.com/UnGeek/p/4518206.html My Emacs Writing Setup]
 +
 
 +
 
 +
[https://www.cnblogs.com/UnGeek/archive/2013/04/28/3049448.html  emacs 常用命令与配置 ]
  
C-r 反向搜索
+
[https://www.jianshu.com/p/f3085de876cd Emacs 26的多线程探索]
  
C-M-s使用正则表达式正向搜索
+
[https://zhuanlan.zhihu.com/p/51305549 Emacs 系列(一):抛掉一切,投入 Emacs 和 org 模式的怀抱]
  
C-M-r 使用正则表达式反向搜索
+
https://zhuanlan.zhihu.com/p/51599701
  
M-p 选择上一个搜索结果
+
=emacs注释快捷键=
 +
<pre>
  
M-n 选择下一个搜索结果
+
emacs常用命令:C Mode下批量注释、取消注释代码
  
RET 退出搜索并停留在当前搜索到的位置
+
C-c C-c    批量注释选中代码
 +
C-u C-c C-c    取消注释
  
C-g 中止当前搜索
 
  
===save and exit ===
+
多行注释:
<pre>
+
1. 选中一段区域到最后一行行首(不选中任何字符);
C-x C-c:退出Emacs
+
2. 按 Ctrl-x r t ;
 +
3. 输入注释内容;
  
C-x C-s:保存当前buffer
+
反多行注释:
 +
1. 选中一段区域到最后一行,紧挨着注释字符之后的位置(不选中任何字符);
 +
2. 按 Ctrl-x r k;
  
C-x C-w write-file
+
note 2021
 +
前进 后退 up or donw 什么的和emacs一样的呀 emacs or iptyhon3 中写py 代码  完成不用小键盘都行 再也不用烦那个小键盘的方向键太小了
 
</pre>
 
</pre>
 +
[https://blog.csdn.net/u011508640/article/details/52809862  emacs注释快捷键]
  
===命令的中止和 销===
+
=以前笔记=
 +
==calendar emacs日记功能 The Calendar and the Diary ==
 
<pre>
 
<pre>
C-g  keyboard-quit  放弃当前命令
+
;; 设置F2快捷键指定Emacs 的日历系统,i d 新建日记,d查看日记
C-x u  advertise-undo undo上一次 可多次用
+
(global-set-key [f2] 'calendar)
 +
 
 +
 
 +
To exit the calendar, type q. 要在Calendar mode(alt+calendar) 才能exit 在 diary 是不能exit 的
  
 +
q 是exit  退出
 +
M-x calendar. # M is alt
  
 
</pre>
 
</pre>
==== 备份文件====
+
https://www.gnu.org/software/emacs/manual/html_node/emacs/Calendar_002fDiary.html
想恢复到的最简单的就是直接编辑备份文件
 
  
eg  emacs  test~  ; C-x C-w  test TETURN 把他保存为一个正式文件
+
[http://blog.sina.com.cn/s/blog_4d9e0a010102weij.html emacs写日记]
  
===选中 复制 黏贴===
+
[https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Commands.html manual Commands for Binding Keys]
<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.emacswiki.org/emacs/CalendarMode
  
C-w 剪切标记到当前光标所在处的文本  ESC w 复制文本
+
[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-d 删除一个字符
+
[https://github.com/kiwanami/emacs-calfw Calfw]
ESC h 选中一个段落
+
 
 +
[https://www.emacswiki.org/emacs/CalendarLocalization#h5o-5 CalendarLocalization]
 +
 
 +
[https://os.51cto.com/article/653887.html 帮你精通Emacs:配置日程,日记与日历的详细步骤 ]
  
C-x C-x 检查一下位置                                                               
+
[http://blog.chinaunix.net/uid-25830557-id-317944.html Emacs配置文件(非常酷的风格!)有很多calendar相关的]
C-w  删除文本块 
 
  
也可以可怕的用C-k 先 剪切 然后再来两个 C-y 一个是为开始的切还原 ,另外一个是你要CP去的地方
+
[https://www.bilibili.com/video/BV1ox411V7cX 【教程】Emacs 第二十六节:Calendar 第三部分]
</pre>
 
  
===文本块的选取和粘贴 ===
+
[https://os.51cto.com/art/202103/653887.htm 帮你精通Emacs:配置日程,日记与日历的详细步骤]
<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>
 
  
===交换位置===
+
[https://linux.cn/article-11932-1.html 使用 Emacs 发送电子邮件和检查日历 ]
字符交换 光标在第二个字符上 C-t                                                     
 
                                                                                     
 
文本交换    光标在两个单词之间 ESC t                                               
 
                                                                                     
 
交换两个文本行 光标在第二个文本行的任意位置 C-x C-t
 
  
===改变大小写 ===
+
==2021问题==
                                                                                   
+
  现在在kali里面直接打开文件没内容显示,要先打开em Symbol's value as variable is void ispell-menu-map-needed
  第一个字母改为大写 capialize  ESC  c                                             
+
  我结果是从另外一个方向来处理这个问题 手工编译em 27 暂时只另外了 em 为新的emacs 其它 包括emacs-gtk还没改 /usr/bin 下的还没有改
  全部改为大写 upcase    ESC u                                                       
 
全改为小写  ESC l (不是 sn 1) 如果在单词中间 可以把前半部分改为小写               
 
                                                                                     
 
  加ESC - 再加上面的命令  只对 光标之前的操作
 
  
===文本改写模式===
+
==安装emacs==
文本改写模式                                                                       
+
[[How to Compile Emacs on Linux]]
  insert  overwrite mode    不要时 为  ESC x overwrite-mode RETURN                   
 
可用自动补足功能啦 不用全打 tab                                                     
 
                                                                                     
 
文件内容取代缓冲区                                                                 
 
  ESC  x  revert-buffer RETURN
 
  
===查找===
+
[http://soft.dog/2018/07/23/emacs-lisp/ Emacs Lisp]
<pre>
 
搜索/替换(Seach/Replace)
 
C-s 向后搜索
 
C-r 向前搜索</pre>
 
  
[https://www.zhihu.com/question/23456580 GNU emacs24 中如何剪切复制多行文本]
+
== 正文==
 +
https://www.emacswiki.org/emacs?interface=zh-cn
  
===替换===
+
[https://blog.csdn.net/wdkirchhoff/article/details/41623161  生活在Emacs中]
<pre>
 
按M - %启动查找替换(M is alt on debian),输入要被替换的词,回车,然后输入要替换的词,再回车。
 
被替换的词会高亮起来,这时,输入y替换并跳到下一个,输入n忽略并跳到下一个,输入q结束,输入!替换剩下的全部。
 
  
一些常用的选项:
+
https://www.emacswiki.org/emacs/InitFile
  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查找替换]
+
== 成为高手笔记 Basic Emacs survival keys==
 +
<pre>即使你不打算使用 Emacs 默认快捷键, 这步也是必须的, 不要跳过!
  
 +
最起码要知道以下命令,
  
===书签===
+
M-x describe-variable, 快捷键 C-h v, 查看变量的文档
<pre>
+
M-x describe-function, 快捷键 C-h f, 查看命令的文档
 +
M-x describe-key, 快捷键 C-h k, 查看快捷键的文档
  
书签
 
</pre>
 
  
===DEL===
+
Emacs manual      C-h r        Browse manuals    C-h i
<pre>
+
Emacs tutorial    C-h t        Undo changes      C-x u
 +
Buy manuals        C-h RET      Exit Emacs        C-x C-c
  
C-d  是对字符操作                                                 
 
ESC  d  对单词操作                                               
 
                                                                   
 
ESC D 删除光标后面的单词; ESC DEL                                 
 
C-k ;                                                             
 
ESC K 删除光标后面的句子;C-k del 删除光标前面的句子               
 
   
 
</pre>
 
  
从自动保存文件恢复文本
+
If an Emacs session crashed recently, type M-x recover-session RET
ESC  x revover-file RETURN
+
to recover the files you were editing.
  
  
===对emacs 进行定制 ===
+
    C-g (即同时按下Control和g键) 能够取消命令提示. 后面我们会将escape键也映射成该操作以符合Vim的操作惯例.
<pre>
+
    C-x k 杀掉(关闭)一个buffer. 那些自动打开的windows通常可以通过按下"q"键来关闭.
emacs -> C-x C-f ~/.emacs -> ESC > 到文件的末尾
+
    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功能时依然有效.
  
  
(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
 
  
 +
</pre>
  
  
;; 不用再烦 两个 ESC ESC  or  C-x C-u
+
以实际问题作为切入点
(global-unset-key "\e\e")
 
(global-unset-key "\C-x\C-u")
 
  
 +
努力能很快得到回报, 你会越学越有乐趣, 进入感情上的正反馈.
  
 +
要成为高手, 兴趣是最重要的.
  
 +
以我为例, 我急需 GTD 的工具, 而 Emacs 的 Org-mode 是同类软件中最好的 (没有之一). 用 Org-mode 节省了时间后, 我对 Emacs 爱屋及乌, 兴趣高涨了 100 倍.
  
 +
反面例子是啃Lisp教程开始Emacs之旅, 坚持下来的人寥寥无几.
  
</pre>
+
待解决的问题设定优先度 关键在于理性地考虑你最迫切需要解决的一个问题.以这个问题作为出发点, 除此之外都可以妥协.
  
===移动 ===
+
虽然 Emacs 无所不能, 但是饭也要一口一口吃. 有时退一步等于进两步.
<pre>
+
 
 +
例如, 我一直以为 Emacs 的中文显示很完美, 搞不懂为什么有人在字体配置上花那么多时间.
 +
 
 +
在接到读者反馈后, 我才明白原来我一直在终端下使用Emacs, 终端软件可以完美显示中文字体, 所以就没 Emacs 什么事了. 需要配置字体的人用的是图形界面 Emacs.
  
M-< 到文件开头
+
当初只在终端下使用 Emacs 是因为需连接到远程服务器. 我认为这是重点. 甚至为此放弃了漂亮的配色主题 (后来发觉此牺牲毫无必要). 塞翁失马, 由此也避免了图形界面版本的所有问题.
M->  esc ->shift+> 到文件末尾
 
  
 +
https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/guide-zh.org
  
 +
==后记==
 +
<span style="color:green;">后面要把常用的这些常用快捷键写成一个短小的总结卡</span>
 +
=== 模式键定义===
  
以下命令在翻页浏览时相当有用:
+
四个模式键:C—-Ctrl;M—-Alt;s—-Super(Win);S—-Shift
  
C-v    向前移动一屏
+
比如:
M-v    向后移动一屏
 
C-l    重绘屏幕,并将光标所在行置于屏幕的中央
 
(注意是 CONTROL-L,不是 CONTROL-1)
 
  
 +
C-x:表示按下ctrl键,然后按下x键。
  
整屏的移动很有用,但是如何在文字中精确定位呢?
+
C-x  C-c:表示按下ctrl,然后按下x键,松开后再按下c键。
  
有几种方式可以选择。用方向键当然可以,不过更有效率的方法是保持双手位于
+
C-x k:表示按下ctrl,同时按下x和k键。
主键盘区,然后使用 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,整幅图会被显示在屏幕的中央。
 
  
 +
=== 最常用命令 eg页开头或结尾===
  
 +
<span style="color:red;">M-f 与 M-b  </span> 在行内, 前后大步移动光标,步进单位对于英文而言是单词的长度,对于中文而言是两个标点符号的间距。
  
移动的单位            向后        向前
+
<span style="color:red;">M-{ M-} </span> 段开头或结尾
字符                  C-b          C-f
 
  
 +
<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 键也未尝不可。
  
当前行开头或结尾      C-a         C-e
+
<span style="color:red;">M-a 与 M-e </span> 则分别可将光标移动到句首或句尾。
  
  C-n
+
<span style="color:red;"> C-v 或 M-v <span> 如果文档很长,用可实现向下或向上翻屏
 +
<pre>
 +
  M-< ,移到最开始。
 +
  然后再按几次 C-v 回到这里。
  
M-f 如果你嫌一个字符一个字符地挪光标太慢,你还可以一个词一个词地跳。M-f
+
M-> ,移到最末尾。
(META-f) 可以将光标往前移动一个词,而 M-b 则是往后移。【这里的“词”指
+
  然后再按几次 M-v 回到这里。
英文单词,对中文来说,则是指移动到下一个标点符号。】
 
  
类似的惯例在“行”与“句子”之间也同样适用:C-a 和 C-e 可以将光标移动到
+
C-x 2 将屏幕划分成两个窗格。这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。
“一行”的头部和尾部;而 M-a(和terminator冲突) 和 M-e 则将光标移动到“一句”的头部和尾部。
 
  
 +
C-x o(“o”指的是“其它(other)”), 将光标转移到下方的窗格。
  
这里对简单的光标移动命令做一个总结,其中也包括了整词和整句的移动:
+
C-x 1  (在上方窗格里)输入 C-x 1 关掉下方窗格。
  
        C-f     向右移动一个字符
+
C-x C-f         寻找文件。
        C-b    向左移动一个字符
+
C-x C-s        保存文件。
  
        M-f    向右移动一个词【对中文是移动到下一个标点符号】
+
打开菜单 用F10或者M-` (就是键盘输入区左上角的那个键)就可以呼出菜单了
        M-b    向左移动一个词【对中文是移动到上一个标点符号】
 
  
        C-n    移动到下一行
+
emacs-gtk 显示菜单 etc  option -->show/hide 这样在 emacs-gtk 就有菜单了 而em还是没有的 非常 好
        C-p    移动到上一行
+
</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>
  
        C-a    移动到行首
+
==== 文件编辑====
        C-e    移动到行尾
+
<pre>
  
        M-a    移动到句首
+
ESC x goto-line n RET 把光标移动到文件的第N行
        M-e    移动到句尾
+
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
 +
</pre>
  
这里还要介绍两个重要的光标移动命令:M-< (META 小于号)可以将光标移动到
+
==== 使.emacs立即生效====
所有文字的最开头;M-> (META 大于号)可以将光标移动到所有文字的最末尾。
+
<pre>
 +
ESC x eval-current-buffer
  
注意,在大部分键盘上,小于号(<)需要用上档键(Shift)来输入,所以在这
+
</pre>
些键盘上你应该用 Shift 键来输入 M-<,如果不按 Shift 键,你输入的会是
+
==== 查找和替换操作====
M-comma(META 逗号)。
 
  
>> 试一试 M-< ,移到本快速指南的最开始。
+
[https://www.cnblogs.com/robertzml/archive/2010/03/03/1675870.html  学习Emacs系列教程(八):查找替换 ]
  然后再按几次 C-v 回到这里。
+
<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-> ,移到本快速指南的最末尾。
+
基本查找与替换操作    2021 0228                                                                                                                                                 
  然后再按几次 M-v 回到这里。
+
                                                                                                                                                                           
 +
  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-] 退出递归编辑状态和查询-替换操作。
 +
</pre>
  
如果你的键盘上有方向键的话,也可以用它们来移动光标。不过我们有三个理由
+
[https://www.cnblogs.com/robertzml/archive/2010/03/03/1675870.html  学习Emacs系列教程(八):查找替换]
推荐你学习 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 个字符。
+
[https://blog.csdn.net/a593796769/article/details/8936072 Emacs查找替换字符串]
</pre>
 
  
===缓冲区、窗口与窗框===
+
=====删除命令 =====
 
<pre>
 
<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>
  
2018年 01月 23日 星期二 21:03:14 CST 学习这个  我去 过了几年了才看起这个 20210129
+
=====缩进格式=====
 
+
<pre>
Emacs 启动后,窗框中默认只有一个窗口,但是使用 C-x 1 或 C-x 2 可以将其水平或竖直一分为二,这个分割过程可以无限的进行下去。每次被分割的窗口都是输入光标所在的窗口(也称为被激活的窗口)。使用 C-x o 可以在多个窗口中跳转。
+
TAB 缩进当前行(与模式有关)
 
+
ESC C-\ 缩进区域(与模式有关)
由于 Emacs 在拆分窗口时,默认是水平或竖直均分,所以如果你希望将某个窗口调的宽一些,可 C-x } ;要使之窄一些,可 C-x { ;要使之高一些,可 C-x ^,但是要使之矮一些,貌似只能是激活该窗口下方的窗口,然后让下方的窗口高一些。这些窗口大小的调整方法,每次只能使得窗口的尺寸增大或减小一个字符的宽度或高度。如果你不想多次输入像 C-x ^ 这样的命令,那么可以用 C-u n C-x ^ 这样的组合键,其中 n 表示你要重复执行 C-x ^ 这样的命令 n 次。例如,要将当前窗口的高度增加 5 个字符的高度,只需 C-u 5 C-x ^ 即可。
+
ESC C-q 缩进表达式(与模式有关)
 
+
C-x TAB Indent region rigidly arg. Columns
C-u 最好要牢记,它的职能就是给某个组合键所绑定的 Emacs Lisp 函数传递一个参数值。 C-u 5 C-x ^ 表示向 C-x ^ 所绑定的 Emacs Lisp 函数传递参数值 5 ,而这个函数接受这个参数值之后,就会将窗口的高度增加 5 个字符的高度。
+
C-o 在光标后插入一个新的行(有点像vi的'o')
  要查看按键被绑定到了哪个 Emacs Lisp 函数,只需 C-h k <RET> 按下你要查询的键 。 <RET> 表示回车键
+
ESC C-o 静态地将一行下移
 
+
C-x C-o 删除光标附近的空行(留下一行)
如果觉得窗口太多,想关掉一些,那么关闭被激活的窗口的组合键是 C-x 0 。如果是图形界面的 Emacs,只需要鼠标右键点击窗口的模式行即可将该窗口关闭。我的建议是:能用键盘就不要用鼠标。
+
ESC ^ 与上一行合并成一行
 
+
ESC \ 删除光标附近的所有空格
要在某个窗口中打开或新建一个文件,可 C-x C-f 文件路径。
+
ESC SPC 删除光标附近的空格(留下一格)
 +
ESC q Fill paragraph
 +
C-x f Set fill column
 +
C-x 设置每一行开始的前缀
 +
</pre>
 +
===== 递增查找=====
 +
    在查找过程之中想取消查找可以需要按 C-g C-g .
 +
    用复制办法得到的查找字符串会把原文中的大写字母都转换成小写字母。
  
为了节省内存占用,请尽量使用 Emacs 的多窗口模式,不要打开一个又一个 Emacs
+
====shell Emacs 终端 ====
 +
要尝试 Emacs 终端,输入 Alt+x(用 Emacs 符号表示就是 M-x),然后输入 shell,然后按回车。
 +
==== 搜索 ====
 +
增量搜索
 +
C-s 正向搜索
  
 +
C-r 反向搜索
  
编辑缓冲区的删除
+
C-M-s使用正则表达式正向搜索
  
C-x k    输入缓冲区名称,默认当前缓冲区关闭  命令名是kill-buffer
+
C-M-r 使用正则表达式反向搜索
  
ESC x kill-some-buffers 依次删除
+
M-p 选择上一个搜索结果
M(alt)-x kill-some-buffers    依次列出所有缓冲区,逐个询问是否要删除
 
  
缓冲区列表,切换,关闭
+
M-n 选择下一个搜索结果
C-x C-b    列出缓冲区,每个编辑中的文件都放在一个缓冲区中
 
  
 +
RET 退出搜索并停留在当前搜索到的位置
  
缓冲区切换
+
C-g 中止当前搜索
C-x b     输入缓冲区名称并且切换过去
+
 
 +
===save and exit ===
 +
<pre>
 +
C-x C-f    按提示输入文件名,如果文件不存在则新建文件,如果文件存在则打开文件
 +
C-x C-s    保存
 +
C-x C-w    按提示输入文件名,另存为
 +
M-x customize-variable 回车 make-backup-files 回车     关掉文件备份
  
当我们启动Emacs的时候,会产生*Messages*和*scratch*两个缓冲区。*Messages*是用来显示从Emacs启动开始的所有命令信息的缓冲区,*scratch*是草稿缓冲区,我们可以在其中乱写东西,但不会被保存,除非用户使用C-x C-W命令。
 
  
窗口和缓冲区切换
+
C-x C-c:退出Emacs
  
窗口
+
C-x C-s:保存当前buffer
  
    C-x 0:关闭当前窗口
+
C-x C-w write-file
    C-x 1:关闭当前窗口以为的其他窗口
+
</pre>
    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
 
  
文本向左推 C-x <
+
===命令的中止和 销===
文本向右推 C-x >
+
<pre>
 +
C-g  keyboard-quit  放弃当前命令
 +
C-x u  advertise-undo  undo上一次 可多次用
  
模式切换
 
  
模式切换命令:M-x 模式名
+
</pre>
 +
==== 备份文件====
 +
想恢复到的最简单的就是直接编辑备份文件
  
    shell: 终端模式(ESC+!)
+
eg  emacs  test~  ; C-x C-w  test TETURN 把他保存为一个正式文件
    r-mode:R语言
 
    org-mode:org-mode
 
    c++-mode:C++语言
 
    c-mode:C语言
 
    latex-mode:LaTeX文件
 
    perl-mode:Perl语言
 
    tex-mode TeX文件
 
  
 +
===选中 复制 黏贴===
 +
<pre>
 +
把光标移动到区域的首字符
 +
键入C-@(即ctrl+shift+2),以设置标记 有时是ctrl+shife +@
 +
把光标移动到区域的最后一个字符
 +
键入M(alt)-w,拷贝这个选定区域到粘贴板(剪切是C-w)
 +
用光标定位将要粘贴内容的地方,然后键入C-y ,拷贝成功。
  
C-x C-f 找不到文件时,用C-x C-v 会把查看到的文件放到当前编辑缓冲区  真
+
C-@ mark --> c-f or c-n --> alt-w --> c-y
正的含义是 把真正想要的文件找出来并要它替换现在这个
 
  
 +
C-w 剪切标记到当前光标所在处的文本  ESC w 复制文本
  
 +
C-d 删除一个字符
 +
ESC h 选中一个段落
  
调整容器的大小
+
C-x C-x 检查一下位置                                                               
C-x  ^ 加高当前窗口
+
  C-w  删除文本块  
C-X } 加宽
 
  
C-x { 水平方向上收缩
+
也可以可怕的用C-k 先 剪切 然后再来两个 C-y 一个是为开始的切还原 ,另外一个是你要CP去的地方
 +
</pre>
  
C-u C-x ^ 一次4行 or 4列的扩展
+
===文本块的选取和粘贴 ===
 
+
<pre>
C-x - 窗口收缩到非常小
+
C-w 删除文本块                                                                     
C-x + 变成同样的大小
+
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>
  
 +
===交换位置===
 +
字符交换 光标在第二个字符上 C-t                                                     
 +
                                                                                     
 +
文本交换    光标在两个单词之间 ESC t                                               
 +
                                                                                     
 +
交换两个文本行 光标在第二个文本行的任意位置 C-x C-t
  
对其它窗口进行操作的快捷命令
+
===改变大小写 ===
 +
                                                                                   
 +
第一个字母改为大写  capialize  ESC  c                                             
 +
全部改为大写 upcase    ESC u                                                       
 +
全改为小写  ESC  l (不是 sn 1) 如果在单词中间 可以把前半部分改为小写               
 +
                                                                                     
 +
加ESC - 再加上面的命令  只对 光标之前的操作
  
C-x 4 f 在另外一个窗口查找并打开一个文件
+
===文本改写模式===
C-x 4 b 在另外一个窗口里选择另一个缓冲区
+
文本改写模式                                                                       
 
+
  insert  overwrite mode    不要时 为  ESC x overwrite-mode RETURN                   
em file1 file2
+
可用自动补足功能啦 不用全打 tab                                                     
M-x (ESC x) compare-windows
+
                                                                                     
C-x o 看出这两个文件什么不同
+
文件内容取代缓冲区                                                                 
 +
  ESC x revert-buffer RETURN
  
C-x C-b 缓冲区清单列表
+
===查找===
 +
<pre>
 +
搜索/替换(Seach/Replace)
 +
C-s 向后搜索
 +
C-r 向前搜索</pre>
  
与缓冲区清单有关的操作
+
[https://www.zhihu.com/question/23456580 GNU emacs24 中如何剪切复制多行文本]
  
与缓冲区相关速查表 p139
+
===替换===
 +
<pre>
 +
按M - %启动查找替换(M is alt on debian),输入要被替换的词,回车,然后输入要替换的词,再回车。
 +
被替换的词会高亮起来,这时,输入y替换并跳到下一个,输入n忽略并跳到下一个,输入q结束,输入!替换剩下的全部。
  
 +
一些常用的选项:
 +
  C - g 中断查找替换过程。
 +
  ^ 返回上一个替换点,按y继续下一个,如果不想替换上一个的话,用^返回到上一个,然后按 C - r 进入编辑,修改完后按C - M - c退出继续下一个。
 +
  C - l 使当前匹配显示在文档中间。
 +
  C - r 进入修改。
 
</pre>
 
</pre>
几个快捷键:
+
[https://www.cnblogs.com/robertzml/archive/2010/03/03/1675870.html 学习Emacs系列教程(八):查找替换]
<pre>
+
 
 +
[https://www.cnblogs.com/skyhacker/archive/2012/01/03/2311437.html emacs查找替换]
  
  
+
===书签===
快捷键 命令 功能
+
<pre>
C-x b    创建缓冲区或者切换缓冲区(由输入的缓冲区名字是否存在决定)
 
C-x f   打开文件并将其读到缓冲区中
 
  
C-x s
+
书签
  保存缓冲区('-'存缓冲区,'n'-不保存缓冲区,'!'-保存所有缓冲区,'.'-只保存当前缓冲区缓冲区,'q'-取消保存指令,且不保存当前缓冲区。
+
</pre>
C-x s后执行C-r   只读的的方式查看缓冲区内容,按C-c返回到保存操作
 
C-x k   删除当前缓冲区
 
  kill-some-buffers 依次列出所有缓冲区,逐个询问是否要删除
 
  rename-buffer 修改缓冲区名字
 
C-x C-v   使用文件内容替换缓冲区中的内容
 
  
C-x C-q
+
===DEL===
  缓冲区只读/读写模式切换
+
<pre>
  
  C-x 0
+
  C-d 是对字符操作                                                 
  删除当前窗口
+
  ESC d 对单词操作                                               
  C-x 1   删除当前窗口外的所有窗口
+
                                                                   
  C-x 2   当前窗口分割为上下2个
+
  ESC D 删除光标后面的单词; ESC DEL                                 
  C-x 3   当前窗口分割为左右2个
+
  C-k ;                                                             
  delete-windows-on 删除某个特定编辑缓冲区上的全部窗口
+
  ESC K 删除光标后面的句子;C-k del 删除光标前面的句子               
  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>
 
</pre>
[https://www.cnblogs.com/cc981/p/4299625.html  关于emacs的缓冲区与窗口 ]
 
  
[https://blog.csdn.net/wangcg123/article/details/77864592 emacs快捷键-缓冲区的操作]
+
  从自动保存文件恢复文本
 +
ESC  x  revover-file RETURN
  
[https://blog.csdn.net/lhq9220/article/details/6611402  Emacs编辑缓冲区]
 
  
=== 文本编辑的正确姿势===
+
===对emacs 进行定制 ===
用 Emacs 的正确姿势应该是永远保持能不用鼠标就不用鼠标的姿势!因此,你需要学会用键盘来控制光标在窗口中的位置。
 
 
<pre>
 
<pre>
最基本的光标位置控制键如下所示:
+
emacs -> C-x C-f ~/.emacs -> ESC > 到文件的末尾
 +
 
  
              上一行 C-p
+
(setq default-major-mode 'text-mode)
                    :
+
(add-hook 'text-mode-hook 'turn-on-auto-fill)
                    :
+
;; 文本模式设置为默认的主模式; 文本模式里 启用自动换行                              $
向左移 C-b .... 目前光标位置 .... 向右移 C-f
+
;;  ;;设置缺省主模式是text,,并进入auto-fill次模式.而不是基本模式fundamental-mode  $
                    :
+
;; http://blog.chinaunix.net/uid-25830557-id-317944.html
                    :
 
              下一行 C-n</span>
 
要记忆这几个键并不困难。 p 就是 previous(在...之前), n 就是 next, b 就是 backward, f 就是 forward,而 C 就是 Control……美国人民真会玩!
 
</pre>
 
  
  
上述按键虽然简单易懂,但它们只适合小范围移动光标。在行内,可以用 <span style="color:red;">M-f 与 M-b </span>前后大步移动光标,步进单位对于英文而言是单词的长度,对于中文而言是两个标点符号的间距。
 
  
对于英文文本,若将光标快速移到行首或行尾,标准按键是<span style="color:red;"> C-a 或 C-e </span>但是对于中文而言,这对按键有着将光标被移到段首或段尾的奇异效果……如果偶尔忘记了这对按键,用 Home 或 End 键也未尝不可。<span style="color:red;"> M-a 与 M-e </span>则分别可将光标移动到句首或句尾。
+
;; 不用再烦 两个 ESC ESC  or  C-x C-u
 +
(global-unset-key "\e\e")
 +
(global-unset-key "\C-x\C-u")
  
如果文档很长,用 <span style="color:red;">C-v 或 M-v </span>可实现向下或向上翻屏。如果偶尔忘记了这对按键,用键盘上的 PgUp 与 PgDn 翻页键也可行。
 
  
跨度最大的光标移动键是 M-< 与 M-> ,可分别将光标移动到缓冲区的首部与尾部。
 
  
一旦掌握了上述这几个控制光标位置的按键,在 Emacs 中鼠标基本上就变得不是那么不可或缺了,更重要的是,这些按键能够帮助你更快速的选择文本。对于文档中的待选文本区域,用上述按键将光标移动到该区域的起始位置,然后用<span style="color:red;"> C-@ </span>标定选区之首,然后继续用上述按键将光标移动到选区之尾,这样就完成了文本的选取。
 
  
  
 你可能不知道怎么产生 C-@ 按键序列。普通键盘上,应该是摁住 Ctrl 键,然后再摁住 Shift 键,最后摁下数字 2 键,然后松开手。因为 @ 在 2 上面,需要 Shift 切换……
+
</pre>
  
对于选中的文本,随后的操作无非是剪切、复制或删除。剪切,请用 C-w;复制,请用 M-w;删除,请用 Backspace。对于剪切或复制的文本,要粘帖在光标所在位置,请用 C-y……或者你也可以试着看看 C-y 之后再 M-y 有什么效果!
+
===移动 ===
 +
<pre>
  
对文本进行了一段时间的编辑之后,要反悔的话,就用 C-_ 键执行 Undo 操作。
+
M-< 到文件开头
 +
M->  esc ->shift+> 到文件末尾
  
  要产生 C-_ 的按键序列,请参考上文所讲的 C-@ 的做法。
 
建议现在就立刻将上述提到的每个按键都反复试验六、七次,以后就一直坚持使用它们……用不了几天也许就变成手指的本能了。忘掉鼠标吧,键盘可以解放你的双手,可以让你从畸形的鼠标手解脱,然后变成键盘手……因为你很快就会觉得左手的小指会有点酸痛!我会在下一节中拯救你的手。
 
  
===拯救你的左手小拇指===
 
如果感到左手的小手指有点疼,就不要再去用左手去摁 C-x C-s 这样的键了,你完全可以用右手的小指去摁键盘右侧的 Ctrl 键,然后左手相应的手指去摁 x 与 s 键
 
  
===将一段代码向右推===
+
以下命令在翻页浏览时相当有用:
[https://segmentfault.com/a/1190000003811296 将一段代码向右推20180124pm到这里 后面的还没看完]
 
  
===显示行号===
+
C-v    向前移动一屏
====临时显示行号或者取消行号====
+
M-v    向后移动一屏
在Emacs下执行 M-x linum-mode 来显示或者取消行号
+
C-l    重绘屏幕,并将光标所在行置于屏幕的中央
M-x : Alt + x
+
(注意是 CONTROL-L,不是 CONTROL-1)
输入: 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)
+
有几种方式可以选择。用方向键当然可以,不过更有效率的方法是保持双手位于
 +
主键盘区,然后使用 C-p 、 C-b 、 C-f 和 C-n 这四个命令。它们的功能和方
 +
向键是一样的,如下图所示:
  
然后每次在emacs中按C-x再按l,输入指定的行号就可以了。
+
                            上一行 C-p
 
+
                                  :
http://blog.csdn.net/grey_csdn/article/details/78905862
+
                                  :
http://bbs.csdn.net/topics/60028785
+
            向左移 C-b .... 目前光标位置 .... 向右移 C-f
 +
                                  :
 +
                                  :
 +
                            下一行 C-n
 +
p-previous,n-next,b-backward,f-forward。
 +
>> 用 C-n 或 C-p 将光标移到上图的中央。
 +
  按 C-l,整幅图会被显示在屏幕的中央。
  
  
=== 常用插件===
 
记笔记,安排日程,那么毫无疑问Org-Mode是首选
 
  
[https://liujiacai.net/blog/2020/11/25/why-emacs/ Emacs 入门指南:Why & How]
+
移动的单位            向后        向前
 +
字符                  C-b          C-f
  
====evil  ====
 
<pre>
 
;;#添加到配置文件 例如 .emacs
 
  (setq package-archives '(("gnu"  . "http://elpa.emacs-china.org/gnu/")
 
                          ("melpa" . "http://elpa.emacs-china.org/melpa/")))
 
  
  
第二步安装
+
当前行开头或结尾      C-a          C-e
M-x package-refresh-contents
+
 
M-x package-install RET evil RE
+
C-n
  
 +
M-f 如果你嫌一个字符一个字符地挪光标太慢,你还可以一个词一个词地跳。M-f
 +
(META-f) 可以将光标往前移动一个词,而 M-b 则是往后移。【这里的“词”指
 +
英文单词,对中文来说,则是指移动到下一个标点符号。】
  
; 最后一步是配置
+
类似的惯例在“行”与“句子”之间也同样适用:C-a 和 C-e 可以将光标移动到
;Finally, add the following lines to your Emacs init file:
+
“一行”的头部和尾部;而 M-a(和terminator冲突) 和 M-e 则将光标移动到“一句”的头部和尾部。
  
(require 'evil)
 
(evil-mode 1)
 
  
;这个是打开文件后默认进入emacs模式
+
这里对简单的光标移动命令做一个总结,其中也包括了整词和整句的移动:
;我还要在emacs和vim模式里面切换:C-z,换来换去啊
 
(setq evil-default-state 'emacs)
 
  
 +
        C-f    向右移动一个字符
 +
        C-b    向左移动一个字符
  
</pre>
+
        M-f    向右移动一个词【对中文是移动到下一个标点符号】
 +
        M-b    向左移动一个词【对中文是移动到上一个标点符号】
  
[https://evil.readthedocs.io/en/latest/overview.html#installation-via-package-el evil install ]
+
        C-n    移动到下一行
 +
        C-p    移动到上一行
  
[https://www.douban.com/group/topic/34775654/  Emacs,咱就推荐一个插件:Evil(件如其名,够邪恶) ]
+
        C-a    移动到行首
 +
        C-e    移动到行尾
  
https://www.emacswiki.org/emacs/EvilZH
+
        M-a    移动到句首
 +
        M-e    移动到句尾
  
====Magit  ====
 
  
Magit 为 Emacs 用户提供操作 git 的接口,是我第一个重度依赖的 Emacs 插件,也是社区内排行第二的插件。Magit 深度整合到 Emacs 的快捷键中,一切 git 操作都如流水行云般,没有它的话,我连 rebase 都不会。
 
  
https://magit.vc/
+
这里还要介绍两个重要的光标移动命令:M-< (META 小于号)可以将光标移动到
==== Dired ====
+
所有文字的最开头;M-> (META 大于号)可以将光标移动到所有文字的最末尾。
Dired 是 directory editor 的缩写,是 Emacs 内置的插件,类似 macOS 上的文件管理器 Finder
 
  
 +
注意,在大部分键盘上,小于号(<)需要用上档键(Shift)来输入,所以在这
 +
些键盘上你应该用 Shift 键来输入 M-<,如果不按 Shift 键,你输入的会是
 +
M-comma(META 逗号)。
  
C-x d 进入Dired Mode  or emacs dirname
+
>> 试一试 M-< ,移到本快速指南的最开始。
 +
  然后再按几次 C-v 回到这里。
  
https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html
+
>> 试一试 M-> ,移到本快速指南的最末尾。
 +
  然后再按几次 M-v 回到这里。
  
  
[https://blog.csdn.net/fanfan4569/article/details/79516611 Dired Mode(文件管理)]
+
如果你的键盘上有方向键的话,也可以用它们来移动光标。不过我们有三个理由
 +
推荐你学习 C-b 、C-f 、C-n 、和 C-p:(1)它们在任何键盘上都能用。(2)
 +
当你熟练使用 Emacs 之后,你会发现用这些组合键比用方向键要快得多,因为你
 +
的手不需要离开打字区。(3)一旦你习惯了使用这些组合键,你也可以很容易地
 +
适应其它更高级的光标移动命令。
  
 +
大部分的 Emacs 命令接受数字参数,并且对于多数命令而言,这些数字参数的作
 +
用是指定命令的重复次数。为一个命令指定数字参数(也就是重复次数)的方法
 +
是:先输入 C-u,然后输入数字作为参数,最后再输入命令。如果你有META (或
 +
EDIT 或 ALT)键,那么还有另一种办法:按住 META 键不放,然后输入数字。不
 +
过我们还是建议你用 C-u,因为它在任何终端机上都能用。这种数字参数也称为
 +
“前缀参数”,意思是说这个参数是先于使用它的命令而输入的。
  
[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常用操作说明]
+
举例来说, C-u 8 C-f 会向前移动 8 个字符。
 +
</pre>
  
[https://www.jianshu.com/p/abc5c866dfc9 Emacs入坑之旅——用dired模式做文件管理]
+
===缓冲区、窗口与窗框===
 
 
[https://elloop.github.io/tools/2016-03-01/emacs-accumulate-5-packages-extensions Markdown]
 
 
 
[https://zhuanlan.zhihu.com/p/156907392 Emacs Workflow - 文件管理]
 
 
 
==== UndoTree ====
 
 
<pre>
 
<pre>
  
  ‘M-x package-install undo-tree’
+
2018年 01月 23日 星期二 21:03:14 CST 学习这个  我去 过了几年了才看起这个 20210129
  
    (global-undo-tree-mode);;To enable it
+
eg  C-x 2  上下切出两个窗口  然后 alt-1 alt-2 两个窗口之间来回
 +
    C-x 3 : 左右分割
  
undo-tree 都是只读了 为什么 呢  
+
最大化 1 一个 如何还原回原来  暂时只能用 C-x b 找cache list
init.el 开启
 
  
/.emacs.d/lisp$ vim init-edit.el
+
窗口 最常用命令哦
  
注释原来的  算了 我还是先关掉 undo-tree 吧 有空再看一下 这样就原来的配置用起来不错了
+
    C-x 3 : 左右分割
 +
    C-x 2 : 上下分割
 +
    C-x 1 : 将当前窗口变为最大
 +
    C-x 0 : 关闭当前窗口
  
undo-tree-0.7.5$ vim undo-tree.el
+
    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-s 为什么不是保存而是另存为再加上
 
</pre>
 
https://www.emacswiki.org/emacs/UndoTree
 
  
[[C/C++ Development Environment for Emacs|https://elpa.gnu.org/packages/undo-tree.html]]
+
    C-x C-f   打开文件并将其读到缓冲区中 如果提示只读  进去选择就行了 哈哈  .. up  Wednesday October 12 2022
==== avy====
 
  
https://github.com/abo-abo/avy
+
Emacs 启动后,窗框中默认只有一个窗口,但是使用 C-x 1 或 C-x 2 可以将其水平或竖直一分为二,这个分割过程可以无限的进行下去。每次被分割的窗口都是输入光标所在的窗口(也称为被激活的窗口)。使用 C-x o 可以在多个窗口中跳转。
介绍
 
  
光标跳转一直是 终端编辑器 的软肋,想要把光标移动到任意指定位置,就算是用 vim,平均也需要按很多次快捷键,并且每次跳转,都需要眼睛进行大量跟踪工作,负担很大。以 vim 为例(不考虑仅使用hjkl或方向键这种最低效的方式),要把光标移动到任意指定位置,首先我们需要先确认指定位置所在行的行号,然后使用命令跳转到指定行,最后再应用w/f键若干次,把光标移动到指定列。这期间的行号确认和每次光标移动,眼睛都得一直跟踪,累人且效率低。
+
由于 Emacs 在拆分窗口时,默认是水平或竖直均分,所以如果你希望将某个窗口调的宽一些,可 C-x } ;要使之窄一些,可 C-x { ;要使之高一些,可 C-x ^,但是要使之矮一些,貌似只能是激活该窗口下方的窗口,然后让下方的窗口高一些。这些窗口大小的调整方法,每次只能使得窗口的尺寸增大或减小一个字符的宽度或高度。如果你不想多次输入像 C-x ^ 这样的命令,那么可以用 C-u n C-x ^ 这样的组合键,其中 n 表示你要重复执行 C-x ^ 这样的命令 n 次。例如,要将当前窗口的高度增加 5 个字符的高度,只需 C-u 5 C-x ^ 即可。
  
于是,光标跳转插件出现了,它们能让我们的眼睛只看着要跳转到的位置这一处即可,视线完全不需要移动,即可快速完成跳转,而 avy 则是 emacs 上的一个优秀的光标跳转插件。这类插件的使用方式大致为:假设当前屏幕的某处有一段文字This is a test.,要把光标移动到test单词的开头,那么我们只需要完成以下三步,并且,在这过程中我们只需要看着test的开头处,视线无需移动:
+
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,只需要鼠标右键点击窗口的模式行即可将该窗口关闭。我的建议是:能用键盘就不要用鼠标。
    按t键(即test的开头字母),这时候屏幕上所有的t都会高亮,并且显示它们各自对应的快捷键,这里假设test开头的t对应的快捷键为gj。
 
    按g键然后按j键,光标即跳转到了test的开头。
 
  
==== 多窗口操作====
+
要在某个窗口中打开或新建一个文件,可 C-x C-f 文件路径。
  
安装不成功要求什么 dash 又没安装上  melpa.org 443又不通什么的 可能我原来的配置就有了呢
+
为了节省内存占用,请尽量使用 Emacs 的多窗口模式,不要打开一个又一个 Emacs
  
  
https://github.com/nschum/window-numbering.el
+
编辑缓冲区的删除
  
https://github.com/deb0ch/emacs-winum
+
C-x k    输入缓冲区名称,默认当前缓冲区关闭  命令名是kill-buffer
  
[https://blog.csdn.net/redguardtoo/article/details/7768233 emacs 多窗口完美操作]
+
ESC x kill-some-buffers 依次删除
 +
M(alt)-x kill-some-buffers    依次列出所有缓冲区,逐个询问是否要删除
  
https://github.com/magnars/dash.el#installation
+
缓冲区列表,切换,关闭
 +
C-x C-b    列出缓冲区,每个编辑中的文件都放在一个缓冲区中
  
  
[https://www.jianshu.com/p/c0b72c78a1fe emacs效率插件推荐]
+
缓冲区切换
 +
C-x b    输入缓冲区名称并且切换过去
  
[https://www.zhihu.com/question/379313632 大家都来说说自己常用的emacs插件有哪些?]
+
当我们启动Emacs的时候,会产生*Messages*和*scratch*两个缓冲区。*Messages*是用来显示从Emacs启动开始的所有命令信息的缓冲区,*scratch*是草稿缓冲区,我们可以在其中乱写东西,但不会被保存,除非用户使用C-x C-W命令。
  
=== 快捷键===
+
窗口和缓冲区切换
<pre>
 
M-s : 新建一个buffer(缓冲区)
 
  
C-x O : 注意是大写的O,不是零,所以需要按住shift键再按o键。用于在缓冲区之间切换
 
  
C-g : 取消当前操作
 
  
C-x u : 回到上一步,相当于Undo
+
窗口
  
C-x  C-x : 变大写
+
    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 3 : 把缓冲区(buffer)分为左右两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口)
+
文本向左推 C-x <
 +
文本向右推 C-x >
  
C-x 2 : 把缓冲区(buffer)分为上下两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口)
+
模式切换
  
M-w : 选中文字的情况是复制文字,而如果没有选中文字则是复制当前的一行
+
模式切换命令:M-x 模式名
  
C-w : 选中文字的情况是剪切文字,而如果没有选中文字则是剪切当前的一行
+
    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 : 调出命令输入,可以在后面接命令,比如man,svn-status,等
 
  
C-y : 黏贴
+
C-x C-f 找不到文件时,用C-x C-v 会把查看到的文件放到当前编辑缓冲区  真
 +
正的含义是 把真正想要的文件找出来并要它替换现在这个
  
C-x C-s : 保存文本
 
  
C-x C-f : 打开文件,如果文件不存在,则新建文件
 
  
C-x C-v : 打开一个文件,取代当前缓冲区
+
调整容器的大小
 +
C-x ^ 加高当前窗口
 +
C-X  } 加宽
  
C-x k : 关闭当前缓冲区(buffer)
+
C-x { 水平方向上收缩
  
C-s : 向前搜索
+
C-u C-x ^ 一次4行 or 4列的扩展
  
C-r : 向后搜索
+
C-x - 窗口收缩到非常小
 +
C-x + 变成同样的大小
  
C-x h : 全选
 
  
C-v : 向下翻页
+
对其它窗口进行操作的快捷命令
  
M-v : 向上翻页
+
C-x 4 f 在另外一个窗口查找并打开一个文件
 +
C-x 4 b 在另外一个窗口里选择另一个缓冲区
  
C-f : 前进一个字符
+
em file1 file2
 +
M-x (ESC x) compare-windows
 +
C-x o 看出这两个文件什么不同
  
C-b : 后退一个字符
+
C-x C-b 缓冲区清单列表
  
M-f : 前进一个单词
+
与缓冲区清单有关的操作
  
M-b : 后退一个单词
+
与缓冲区相关速查表 p139
  
C-@ : 标记开始区域
+
</pre>
 +
几个快捷键:
 +
<pre>
  
C-a : 移到行首
 
  
C-e : 移到行尾
+
 +
快捷键 命令 功能
 +
C-x b    创建缓冲区或者切换缓冲区(由输入的缓冲区名字是否存在决定)
 +
C-x f   打开文件并将其读到缓冲区中
  
M-a : 移到句首
+
C-x s
 
+
  保存缓冲区('-'存缓冲区,'n'-不保存缓冲区,'!'-保存所有缓冲区,'.'-只保存当前缓冲区缓冲区,'q'-取消保存指令,且不保存当前缓冲区。
M-e : 移到句尾
+
C-x s后执行C-r   只读的的方式查看缓冲区内容,按C-c返回到保存操作
 +
C-x k   删除当前缓冲区
 +
  kill-some-buffers 依次列出所有缓冲区,逐个询问是否要删除
 +
  rename-buffer 修改缓冲区名字
 +
C-x C-v   使用文件内容替换缓冲区中的内容
  
M-< : 缓冲区头部
+
C-x C-q
 
+
  缓冲区只读/读写模式切换
M-> : 缓冲区尾部
 
 
 
M-g M-g,再输入数字 : 跳转到文本的第几行
 
 
 
C-x 0 : 关闭当前缓冲区
 
 
 
C-x C-c : 退出Emacs
 
 
 
 
 
emacs buffer read only
 
Ctrl-x Ctrl-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-{   水平缩小当前窗口
 
</pre>
 
</pre>
 +
[https://www.cnblogs.com/cc981/p/4299625.html  关于emacs的缓冲区与窗口 ]
  
[https://aifreedom.com/technology/112 Emacs快捷键列表]
+
[https://blog.csdn.net/wangcg123/article/details/77864592  emacs快捷键-缓冲区的操作]
  
链接:https://www.jianshu.com/p/732157b02ecc
+
[https://blog.csdn.net/lhq9220/article/details/6611402  Emacs编辑缓冲区]
  
==多窗口 ==
+
=== 文本编辑的正确姿势===
 +
用 Emacs 的正确姿势应该是永远保持能不用鼠标就不用鼠标的姿势!因此,你需要学会用键盘来控制光标在窗口中的位置。
 +
<pre>
 +
最基本的光标位置控制键如下所示:
  
 首先先明确下Emacs窗口的概念,我们双击Emacs图标打开程序见到的Windows窗口叫做Frame,包含了标题栏,菜单栏,工具栏,最下面的Mode Line和回显区域,而中间一大块显示文本的区域则是Window,实际上每个窗口都有自己的Mode Line。下文中我将称Frame为框,Window为窗口,这里和我们平时理解的Windows窗口有点区别。
+
              上一行 C-p
 +
                    :
 +
                    :
 +
向左移 C-b .... 目前光标位置 .... 向右移 C-f
 +
                    :
 +
                    :
 +
              下一行 C-n</span>
 +
要记忆这几个键并不困难。 p 就是 previous(在...之前), n 就是 next, b 就是 backward, f 就是 forward,而 C 就是 Control……美国人民真会玩!
 +
</pre>
  
  在Emacs里面,一个框可以分割出多个窗口,多个窗口可以显示同一个或者不同Buffer,但是一个窗口只能属于一个Frame。一个窗口同时也只能显示一个Buffer,但是同时打开两个窗口也能显示一个Buffer的不同部分,这两个窗口是同步的,就是说如果在一个窗口中对Buffer做了修改,在另一个窗口中可以立即表现出来。但在一个窗口中移动光标之类的操作不会影响另一个窗口。多缓冲中有当前缓冲这个概念,同样对于多窗口也有当前窗口,对于当前选中的窗口其Mode Line相对于其它窗口颜色会深一些。
 
  
+
上述按键虽然简单易懂,但它们只适合小范围移动光标。在行内,可以用 <span style="color:red;">M-f 与 M-b </span>前后大步移动光标,步进单位对于英文而言是单词的长度,对于中文而言是两个标点符号的间距。
===显示窗口===
 
<span style="color:red;">
 
  
  命令<span style="color:red;">C-x 2  (split-window-vertically) </span>垂直拆分窗口,就是把一个窗口上下等分为两个,拆分出来的窗口默认是显示当前Buffer。可以多次使用这个命令,会把一个窗口不停的两等分。
+
对于英文文本,若将光标快速移到行首或行尾,标准按键是<span style="color:red;"> C-a 或 C-e </span>但是对于中文而言,这对按键有着将光标被移到段首或段尾的奇异效果……如果偶尔忘记了这对按键,用 Home 或 End 键也未尝不可。<span style="color:red;"> M-a 与 M-e </span>则分别可将光标移动到句首或句尾。
        对应也有水平拆分窗口的命令C-x 3 (split-window-horizontally),这两个命令也可以混合使用,如果你屏幕够大画个迷宫出来也不是不可能的。拆分命令还可以加参数,比如M-5 C-x 2就是说上面那个窗口只占5行,其余的位置都给下面的窗口。
 
<pre>
 
  C-x o (other-window) 可以在多个窗口中切换,从上到下一个一个的来。使用参数来控制选中下面第几个窗口,想往回选的话参数设为负数。
 
  
  C-M-v (scroll-other-window),用来滚动下一个窗口。
+
如果文档很长,用 <span style="color:red;">C-v 或 M-v </span>可实现向下或向上翻屏。如果偶尔忘记了这对按键,用键盘上的 PgUp 与 PgDn 翻页键也可行。
  
  上一章我们看到有些命令加了C-x 4这个前缀,这一类命令都是用来操作多窗口的。
+
跨度最大的光标移动键是 M-< 与 M-> ,可分别将光标移动到缓冲区的首部与尾部。
  
  C-x 4 b bufname (switch-to-buffer-other-window) 在另一个窗口打开缓冲。
+
一旦掌握了上述这几个控制光标位置的按键,在 Emacs 中鼠标基本上就变得不是那么不可或缺了,更重要的是,这些按键能够帮助你更快速的选择文本。对于文档中的待选文本区域,用上述按键将光标移动到该区域的起始位置,然后用<span style="color:red;"> C-@ </span>标定选区之首,然后继续用上述按键将光标移动到选区之尾,这样就完成了文本的选取。
  
  C-x 4 C-o bufname (display-buffer) 在另一个窗口打开缓冲,但不选中那个窗口。
 
  
  C-x 4 f filename (find-file-other-window) 在另一个窗口打开文件。
+
 你可能不知道怎么产生 C-@ 按键序列。普通键盘上,应该是摁住 Ctrl 键,然后再摁住 Shift 键,最后摁下数字 2 键,然后松开手。因为 @ 在 2 上面,需要 Shift 切换……
  
  C-x 4 d directory (dired-other-window) 在另一个窗口打开文件夹。
+
对于选中的文本,随后的操作无非是剪切、复制或删除。剪切,请用 C-w;复制,请用 M-w;删除,请用 Backspace。对于剪切或复制的文本,要粘帖在光标所在位置,请用 C-y……或者你也可以试着看看 C-y 之后再 M-y 有什么效果!
  
  C-x 4 m (mail-other-window) 在另一个窗口写邮件。
+
对文本进行了一段时间的编辑之后,要反悔的话,就用 C-_ 键执行 Undo 操作。
  
  C-x 4 r filename (find-file-read-only-other-window) 在另一个窗口以只读方式打开文件。
+
  要产生 C-_ 的按键序列,请参考上文所讲的 C-@ 的做法。
 +
建议现在就立刻将上述提到的每个按键都反复试验六、七次,以后就一直坚持使用它们……用不了几天也许就变成手指的本能了。忘掉鼠标吧,键盘可以解放你的双手,可以让你从畸形的鼠标手解脱,然后变成键盘手……因为你很快就会觉得左手的小指会有点酸痛!我会在下一节中拯救你的手。
  
  这一类的命令默认是垂直拆分窗口。</pre>
+
===拯救你的左手小拇指===
 +
如果感到左手的小手指有点疼,就不要再去用左手去摁 C-x C-s 这样的键了,你完全可以用右手的小指去摁键盘右侧的 Ctrl 键,然后左手相应的手指去摁 x 与 s 键
  
===重排窗口===
+
===将一段代码向右推===
 +
[https://segmentfault.com/a/1190000003811296 将一段代码向右推20180124pm到这里 后面的还没看完]
  
  窗口排的密密麻麻看上去肯定不舒服,这时使用    <span style="color:red;">C-x 0 (delete-window) </span> 来关闭当前窗口,需要注意的是窗口和缓冲是两个概念,关闭一个窗口对缓冲,或者我们正在编辑的文件没有任何影响。也可以使用C-x 1 (delete-other-windows) 关闭其它所有窗口。如果想连窗口打开的缓冲一并关掉使用C-x 4 0 (kill-buffer-and-window)。
+
===显示行号===
<pre>
+
====临时显示行号或者取消行号====
  我们还可以对窗口的大小做些改变:
+
在Emacs下执行 M-x linum-mode 来显示或者取消行号
        C-x ^ (enlarge-window)让窗口变得高点,
+
M-x : Alt + x
        C-x { (shrink-window-horizontally) 这个是把窗口变窄,变宽的话是C-x } (enlarge-window-horizontally) ,C-x - (shrink-window-if-larger-than-buffer)这个看字面意思就能理解,如果窗口比缓冲大就缩小点,C-x + (balance-windows)这个命令和前面那个没有任何关系是将所有窗口变得一样高。
+
输入: linum-mode
  
  最后再说一个在窗口中切换的命令,有时候窗口开的太多自己也记不住顺序,使用C-x o就会很麻烦。有一类命令能让你在上下左右切换当前窗口,M-x windmove-right 就是移到右边那个窗口,对应的"left","up“, "down",向四个方向都能移。</pre>
+
===跳转到指定行 ===
 +
====临时====
 +
M-x goto-line 然后回车  <line_number>
 +
  ESC x goto-line 然后回车  <line_number>
 +
  ESC x goto-char 然后回车  char
  
===小结 ===
+
====长期====
<pre>
+
以在.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是首选
  
 +
[https://liujiacai.net/blog/2020/11/25/why-emacs/ Emacs 入门指南:Why & How]
  
 +
====evil  ====
 +
<pre>
  
  
</pre>
+
还要在emacs和vim模式里面切换:C-z,换来换去啊  能直接进入的么 
 +
不过进入后 org  有时不好用
  
  
[https://www.cnblogs.com/robertzml/archive/2010/03/24/1692737.html学习Emacs系列教程(十):多窗口]
+
;; 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)
  
==org mode==
+
;; Download Evil
Emacs 的 Org-mode 在一定程度上可以替代 OneNote,有些方面甚至更好
+
(unless (package-installed-p 'evil)
[[Org-mode]]
+
  (package-install 'evil))
  
 +
;; Enable Evil
 +
(require 'evil)
 +
(evil-mode 1)
  
  
==配置==
 
<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)
+
;;#添加到配置文件 例如 .emacs
C-k 删除一行
+
  (setq package-archives '(("gnu"  . "http://elpa.emacs-china.org/gnu/")
C-g 停止当前运行/输入的命令
+
                          ("melpa" . "http://elpa.emacs-china.org/melpa/")))
C-x u 撤销前一个命令
 
  
c-j 下称整个文件内容
 
  
emacs 菜单 用F10或者M-`。
+
第二步安装
 +
M-x package-refresh-contents
 +
M-x package-install RET evil RE
  
ctrl+g  q 退出 快速说明
 
  
编辑器内显示行号可使用 M-x linum-mode 来开启。
+
; 最后一步是配置
M-x 然后在最下面 输入 linum-mode
+
;Finally, add the following lines to your Emacs init file:
not try
 
q
 
  
获取帮助
+
(require 'evil)
ctrl+h  k  要查看的快捷键盘
+
(evil-mode 1)
  
 +
;这个是打开文件后默认进入emacs模式
 +
;我还要在emacs和vim模式里面切换:C-z,换来换去啊
 +
(setq evil-default-state 'emacs)
  
  
 +
</pre>
  
学习基础 Elisp
+
[https://evil.readthedocs.io/en/latest/overview.html#installation-via-package-el evil install ]
  
ctrl+x ctrl +b
+
[https://www.douban.com/group/topic/34775654/ Emacs,咱就推荐一个插件:Evil(件如其名,够邪恶) ]
  
 +
https://www.emacswiki.org/emacs/EvilZH
  
C-x o:把光标在屏幕上的窗口间进行切换。记忆方法:其它(Other)窗口。
+
====Magit  ====
  
然后选择 *scratch*
+
Magit 为 Emacs 用户提供操作 git 的接口,是我第一个重度依赖的 Emacs 插件,也是社区内排行第二的插件。Magit 深度整合到 Emacs 的快捷键中,一切 git 操作都如流水行云般,没有它的话,我连 rebase 都不会。
  
运算 C-X  c - E
+
https://magit.vc/
 +
====文件管理 Dired ====
 +
Dired 是 directory editor 的缩写,是 Emacs 内置的插件,类似 macOS 上的文件管理器 Finder
  
插件管理
 
  
c-x  o  other window  install
+
C-x d 进入Dired Mode or emacs dirname
  
company
+
https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html
f2 打开配置文件
 
  
org-mode
+
[https://blog.csdn.net/u014801157/article/details/80894703  Emacs必修:使用dired管理文件]
  
major mode and minor mode (C-h m)
+
[https://blog.csdn.net/fanfan4569/article/details/79516611  【Emacs】Dired Mode(文件管理)]
  
 +
[https://blog.csdn.net/fanfan4569/article/details/79516611 Dired Mode(文件管理)]
  
  
 +
[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常用操作说明]
  
;;evan配置文件
+
[https://www.jianshu.com/p/abc5c866dfc9 Emacs入坑之旅——用dired模式做文件管理]
;;  ~/.emacs  行号什么 的 我是加到这个文件生效的
 
;;  ~/.emacs.d/emacs
 
  
;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
+
[https://elloop.github.io/tools/2016-03-01/emacs-accumulate-5-packages-extensions Markdown]
(tool-bar-mode -1)
 
  
;; 关闭文件滑动控件
+
[https://zhuanlan.zhihu.com/p/156907392 Emacs Workflow - 文件管理]
(scroll-bar-mode -1)
 
  
;; 显示行号 试过 这个一定有效果
+
==== UndoTree ====
(global-linum-mode 1)
+
<pre>
  
;; 更改光标的样式(不能生效,解决方案见第二集)
+
  ‘M-x package-install undo-tree’
(setq cursor-type 'bar)
 
  
;; 关闭启动帮助画面
+
    (global-undo-tree-mode);;To enable it
(setq inhibit-splash-screen 1)
 
  
;; 关闭缩进 (第二天中被去除)
+
undo-tree 都是只读了 为什么 呢 
;; (electric-indent-mode -1)
+
init.el 开启
  
;; 更改显示字体大小 16pt
+
/.emacs.d/lisp$ vim init-edit.el
;; http://stackoverflow.com/questions/294664/how-to-set-the-font-size-in-emacs
 
(set-face-attribute 'default nil :height 160)
 
  
;; 快速打开配置文件
+
注释原来的   算了 我还是先关掉 undo-tree 吧 有空再看一下 这样就原来的配置用起来不错了
(defun open-init-file()
 
  (interactive)
 
   (find-file "~/.emacs.d/init.el"))
 
  
;; 这一行代码,将函数 open-init-file 绑定到 <f2> 键上
+
undo-tree-0.7.5$ vim undo-tree.el
(global-set-key (kbd "<f2>") 'open-init-file)
 
  
; 开启全局 Company 补全
+
我的配置暂时去掉了 有空要处理完为什么 C-s 为什么不是保存而是另存为再加上
(global-company-mode 1)
+
</pre>
 +
https://www.emacswiki.org/emacs/UndoTree
  
;; 作者用的  是t
+
[[C/C++ Development Environment for Emacs|https://elpa.gnu.org/packages/undo-tree.html]]
3(global-company-mode t)
+
==== avy====
  
 +
https://github.com/abo-abo/avy
 +
介绍
  
;; ~/.emacs  生效的居然是这个 2018
+
光标跳转一直是 终端编辑器 的软肋,想要把光标移动到任意指定位置,就算是用 vim,平均也需要按很多次快捷键,并且每次跳转,都需要眼睛进行大量跟踪工作,负担很大。以 vim 为例(不考虑仅使用hjkl或方向键这种最低效的方式),要把光标移动到任意指定位置,首先我们需要先确认指定位置所在行的行号,然后使用命令跳转到指定行,最后再应用w/f键若干次,把光标移动到指定列。这期间的行号确认和每次光标移动,眼睛都得一直跟踪,累人且效率低。
;; 在 mode line 上显示行列号
 
(setq column-number-mode 1)
 
(setq line-number-mode 1)
 
  
;;显示列号
+
于是,光标跳转插件出现了,它们能让我们的眼睛只看着要跳转到的位置这一处即可,视线完全不需要移动,即可快速完成跳转,而 avy 则是 emacs 上的一个优秀的光标跳转插件。这类插件的使用方式大致为:假设当前屏幕的某处有一段文字This is a test.,要把光标移动到test单词的开头,那么我们只需要完成以下三步,并且,在这过程中我们只需要看着test的开头处,视线无需移动:
(setq column-number-mode t)
 
  
;; 显示行号
+
    按快捷键激活插件。
(global-linum-mode 1)
+
    按t键(即test的开头字母),这时候屏幕上所有的t都会高亮,并且显示它们各自对应的快捷键,这里假设test开头的t对应的快捷键为gj。
 +
    按g键然后按j键,光标即跳转到了test的开头。
  
;; 取消滚动栏,工具栏
+
==== 多窗口操作====
(tool-bar-mode 0)
 
(menu-bar-mode 0)
 
(scroll-bar-mode 0)
 
  
;; 关闭emacs启动时的页面
+
安装不成功要求什么 dash 又没安装上  melpa.org 443又不通什么的 可能我原来的配置就有了呢
(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以上的版本有用
+
https://github.com/nschum/window-numbering.el
(require 'package)
+
 
;;将melpa仓库地址加入到package-archives这个列表变量里面
+
https://github.com/deb0ch/emacs-winum
(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.
 
)
 
  
 +
[https://blog.csdn.net/redguardtoo/article/details/7768233 emacs 多窗口完美操作]
  
 +
https://github.com/magnars/dash.el#installation
  
I. 显示时间
 
.emacs加上:
 
(display-time-mode 1) ;; 常显
 
(setq display-time-24hr-format t) ;;格式
 
(setq display-time-day-and-date t) ;;显示时间、星期、日期
 
  
II. 隐藏菜单栏工具栏滚动条
+
[https://www.jianshu.com/p/c0b72c78a1fe emacs效率插件推荐]
.emacs加上:
 
(tool-bar-mode 0)
 
(menu-bar-mode 0)
 
(scroll-bar-mode 0)
 
;;注: 新版改成使用0,旧版使用nil的做法已失效,但 (set-scroll-bar-mode nil) 仍可使用
 
  
III. 关闭启动画面
+
[https://www.zhihu.com/question/379313632 大家都来说说自己常用的emacs插件有哪些?]
.emacs加上:
 
(setq inhibit-startup-message t)
 
  
IV. highlight当前行
+
=== 快捷键===
.emacs加上:
+
<pre>
(global-hl-line-mode 1)
+
M-s : 新建一个buffer(缓冲区)
;;;; 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)
+
C-x O : 注意是大写的O,不是零,所以需要按住shift键再按o键。用于在缓冲区之间切换
  (let ((tl (assq term (symbol-value alist))))
 
    (if tl
 
        (setcdr tl new)
 
      (add-to-list alist (cons term new)))))
 
  
(defun xgp-cfsi (style)
+
C-g : 取消当前操作
  "Deciding whether using CFSI."
+
 
  (interactive "Style: ")
+
C-x u : 回到上一步,相当于Undo
  (c-set-style style)
+
 
  (setq indent-tabs-mode
+
C-x  C-x : 变大写
        nil
+
 
        c-hanging-semi&comma-criteria
+
C-x 3 : 把缓冲区(buffer)分为左右两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口)
        (quote (c-semi&comma-inside-parenlist)))
 
  
  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-open nil)
+
C-x 2 : 把缓冲区(buffer)分为上下两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口)
  (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-close nil)
 
  (local-set-key " " 'self-insert-command))
 
  
(defun xgp-cfsi-erase-blanks ()
+
M-w : 选中文字的情况是复制文字,而如果没有选中文字则是复制当前的一行
  "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()
+
C-w : 选中文字的情况是剪切文字,而如果没有选中文字则是剪切当前的一行
  (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)
 
  
 +
M-x : 调出命令输入,可以在后面接命令,比如man,svn-status,等
  
# other
+
C-y : 黏贴
如果要一次移动若干个单位,可以给命令加上数值参数,通过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本本配置====
+
C-x C-s : 保存文本
<pre>
 
;;cat ~/.emacs
 
  
;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
+
C-x C-f : 打开文件,如果文件不存在,则新建文件
(tool-bar-mode 0)
 
(menu-bar-mode 0)
 
(scroll-bar-mode 0)
 
(tool-bar-mode -1)
 
  
 +
C-x C-v : 打开一个文件,取代当前缓冲区
  
 +
C-x k : 关闭当前缓冲区(buffer)
  
(setq column-number-mode t)
+
C-s : 向前搜索
(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)
 
  
;;显示列号
+
C-r : 向后搜索
(setq column-number-mode t)
 
  
;; 显示行号
+
C-x h : 全选
(global-linum-mode 1)
 
  
;; 取消滚动栏,工具栏
+
C-v : 向下翻页
(tool-bar-mode 0)
 
(menu-bar-mode 0)
 
(scroll-bar-mode 0)
 
  
;; 关闭emacs启动时的页面
+
M-v : 向上翻页
(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-f : 前进一个字符
;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
+
 
(require 'package)
+
C-b : 后退一个字符
(add-to-list 'package-archives
+
 
            '("melpa" . "http://melpa.milkbox.net/packages/") t)
+
M-f : 前进一个单词
(package-initialize)
+
 
 +
M-b : 后退一个单词
 +
 
 +
C-@ : 标记开始区域
 +
 
 +
C-a : 移到行首
 +
 
 +
C-e : 移到行尾
  
;;内置的package管理,emacs24以上的版本有用
+
M-a : 移到句首
(require 'package)
+
 
;;将melpa仓库地址加入到package-archives这个列表变量里面
+
M-e : 移到句尾
(add-to-list 'package-archives
+
 
    '("melpa" . "http://melpa.org/packages/") t)
+
M-< : 缓冲区头部
;;这个是国内一个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 ;;;;
+
M-> : 缓冲区尾部
(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)
+
M-g M-g,再输入数字 : 跳转到文本的第几行
  (let ((tl (assq term (symbol-value alist))))
 
    (if tl
 
        (setcdr tl new)
 
      (add-to-list alist (cons term new)))))
 
  
(defun xgp-cfsi (style)
+
C-x 0 : 关闭当前缓冲区
  "Deciding whether using CFSI."
+
 
  (interactive "Style: ")
+
C-x C-c : 退出Emacs
  (c-set-style style)
+
 
  (setq indent-tabs-mode
+
 
        nil
+
emacs buffer read only
        c-hanging-semi&comma-criteria
+
Ctrl-x Ctrl-q
        (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 ()
+
[https://aifreedom.com/technology/112 Emacs快捷键列表]
  "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()
+
链接:https://www.jianshu.com/p/732157b02ecc
  (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图标打开程序见到的Windows窗口叫做Frame,包含了标题栏,菜单栏,工具栏,最下面的Mode Line和回显区域,而中间一大块显示文本的区域则是Window,实际上每个窗口都有自己的Mode Line。下文中我将称Frame为框,Window为窗口,这里和我们平时理解的Windows窗口有点区别。
  
emacs 打开~/.emacs的时候执行命令M-x eval-buffer,就可以使配置文件立即生效。
+
  在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) 可以在多个窗口中切换,从上到下一个一个的来。使用参数来控制选中下面第几个窗口,想往回选的话参数设为负数。
  
[https://blog.csdn.net/qq_40875035/article/details/82883325 emacs配置]
+
  C-M-v (scroll-other-window),用来滚动下一个窗口。
  
[https://zhuanlan.zhihu.com/p/114329781 我的EMACS设置]
+
  上一章我们看到有些命令加了C-x 4这个前缀,这一类命令都是用来操作多窗口的。
  
== 不错的配置 c什么都包括了 undo-tree暂时去掉 其它感觉不错 2021==
+
  C-x 4 b bufname (switch-to-buffer-other-window) 在另一个窗口打开缓冲。
<pre>
 
mv ~/.emacs.d ~/.emacs.d.bak
 
git clone --depth 1 https://github.com/seagle0128/.emacs.d.git ~/.emacs.d
 
</pre>
 
  
有空好好的看一下
+
  C-x 4 C-o bufname (display-buffer) 在另一个窗口打开缓冲,但不选中那个窗口。
https://github.com/seagle0128/.emacs.d
 
  
 +
  C-x 4 f filename (find-file-other-window) 在另一个窗口打开文件。
  
 +
  C-x 4 d directory (dired-other-window) 在另一个窗口打开文件夹。
  
=== c 常用命令===
+
  C-x 4 m (mail-other-window) 在另一个窗口写邮件。
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 配置文件===
+
  C-x 4 r filename (find-file-read-only-other-window) 在另一个窗口以只读方式打开文件。
<pre>
 
;; 配置文件 for  c  or c ++
 
;; cat ~/.emacs
 
  
;; 在 mode line 上显示行列号
+
  这一类的命令默认是垂直拆分窗口。</pre>
(setq column-number-mode 1)
 
(setq line-number-mode 1)
 
  
;;显示列号
+
===重排窗口===
(setq column-number-mode t)
 
  
;; 显示行号
+
  窗口排的密密麻麻看上去肯定不舒服,这时使用    <span style="color:red;">C-x 0 (delete-window) </span> 来关闭当前窗口,需要注意的是窗口和缓冲是两个概念,关闭一个窗口对缓冲,或者我们正在编辑的文件没有任何影响。也可以使用C-x 1 (delete-other-windows) 关闭其它所有窗口。如果想连窗口打开的缓冲一并关掉使用C-x 4 0 (kill-buffer-and-window)。
(global-linum-mode 1)
+
<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>
;;(tool-bar-mode 0)
 
;;(menu-bar-mode 0)
 
;;(scroll-bar-mode 0)
 
  
;; 关闭emacs启动时的页面
+
===小结 ===
(setq inhibit-startup-message 1)
+
<pre>
(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>
 
</pre>
  
[https://tuhdo.github.io/c-ide.html C/C++ Development Environment for Emacs]
 
  
[https://segmentfault.com/a/1190000003878553 Emacs 中 C/C++ 编程基本环境配置2018]
+
[https://www.cnblogs.com/robertzml/archive/2010/03/24/1692737.html学习Emacs系列教程(十):多窗口]
 +
==Emacs Shell Mode ==
  
[https://blog.csdn.net/cuijianzhongswust/article/details/10313865 将Emacs配置成一个C/C++的IDE编程环境]
+
[https://blog.csdn.net/ruglcc/article/details/7830518  大话Emacs Shell Mode:让工作更轻松的技巧]
  
https://wikemacs.org/wiki/C-ide
+
==org mode==
 +
Emacs 的 Org-mode 在一定程度上可以替代 OneNote,有些方面甚至更好
 +
[[Org-mode]]
  
[https://github.com/atilaneves/cmake-ide enable IDE-like features on Emacs]
 
  
https://www.youtube.com/watch?v=5FQwQ0QWBTU
 
  
==from tour ==
+
==配置==
 
<pre>
 
<pre>
#这些笔记完全作到wiki么 会不会太多 而没有重点的感觉 
+
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
  
* 如果 EMACS 失去响应(IF EMACS STOPS RESPONDING)
+
*day1
-----------------------------------------------
+
pass 20170610
如果 Emacs 对你的命令失去响应,你可以用 C-g 来安全地终止这条命令。C-g
+
有空再详细的再看
也可以终止一条执行过久的命令。
 
  
C-g 还可以取消数字参数和只输入到一半的命令。
+
:
 +
记得要添加在公司作的相关的emacs 笔记
  
>> 输入 C-u 100 设定一个值为 100 的数字参数,然后按 C-g。
 
  现在再按 C-f,光标应该只会移动一个字符,因为你已经用 C-g 取消了参数。
 
  
如果你不小心按了一下 <ESC>,你也可以用 C-g 来取消它。
+
=======
【这个说法似乎有问题,因为按照这个按键顺序输入的应该是 C-M-g。
+
这几天常用的几个重要使命
取消 <ESC> 的正确做法是再连按两次 <ESC>。】
+
 
  
  
* 插入与删除(INSERTING AND DELETING)
 
--------------------------------------
 
  
,大部分的 Emacs 命令都可以指定重复次数,这其中也包括输入字符的
+
重要快捷键(Important)
命令。重复执行输入字符的命令实际上就是输入多个相同的字符。
+
C-k 删除一行
 +
C-g 停止当前运行/输入的命令
 +
C-x u 撤销前一个命令
 +
 
 +
c-j 下称整个文件内容
  
>>  试试 C-u 8 *,这将会插入 ********
+
emacs 菜单 用F10或者M-`
  
好,现在你应该已经掌握了最基本的的文本插入和修改功能,其实删除还可以
+
ctrl+g  q 退出 快速说明
“以词为单位”进行,下面是一个关于“删除”操作的小结:
 
  
        <DEL>        删除光标前的一个字符
+
编辑器内显示行号可使用 M-x linum-mode 来开启。
        C-d          删除光标后的一个字符
+
M-x 然后在最下面 输入 linum-mode
 +
not try
 +
q
  
M-<DEL>      移除光标前的一个词
+
获取帮助
        M-d          移除光标后的一个词
+
ctrl+h  k  要查看的快捷键盘
  
        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 一样――如果把“一行”和“一句”作一个类比的话。
 
  
 +
学习基础 Elisp
  
你也可以用一种通用的办法来移除缓冲区里的任何一部分:首先把光标移动到你
+
ctrl+x  ctrl +b
想要移除的区域的一端,然后按 C-<SPC>(<SPC>指空格)【注意,C-<SPC> 往
+
 
往被中文用户设定成输入法热键,如果这样,C-<SPC> 就被系统拦截而无法传递
+
 
给 Emacs 了,在这种情况下可以使用C-@。】,然后将光标移动到你准备移除的
+
C-x o:把光标在屏幕上的窗口间进行切换。记忆方法:其它(Other)窗口。
文字的另一端。这个时候, Emacs 会高亮光标和你按下 C-<SPC> 之间的文本。
+
 
最后,按下 C-w 。这样就可以把位于这两点之间的所有文字移除了。
+
然后选择 *scratch*
  
 +
运算 C-X  c - E
  
注意,“移除(kill)”和“删除(delete)”的不同在于被移除的东西可以被重新
+
插件管理
插入(在任何位置),而被删除的就不能使用相同的方法重新插入了(不过可以
 
通过撤销一个删除命令来做到,后文会提到)。
 
  
 +
c-x  o  other window  install
  
重新插入被移除的文字称为“召回(yank)
+
company
 +
f2 打开配置文件
  
 +
org-mode
  
召回的命令是 C-y。它会在光标所在处插入你最后移除的文字。
+
major mode and minor mode (C-h m)
  
  
C-y 可以召回最近一次移除的内容,那如何召回前几次移除的内容呢?它们当然
 
没有丢,你可以用 M-y 来召回它们。在用 C-y 召回最近移除的文字之后,紧接
 
着再按 M-y 就可以召回再前一次被移除的内容,再按一次 M-y 又可以召回再上
 
一次的……连续使用 M-y 直到找到你想要召回的东西,然后什么也不用做,继续
 
编辑就行了。
 
  
如果连续按 M-y 很多次,你可能会回到起始点,也就是最近移除的文字。
 
【看得出这实际上是一个环。】
 
  
>> 移除一行,移动一下光标,然后再移除另外一行。
+
;;evan配置文件
  按 C-y 将第二次移除的那行召回来。
+
;;  ~/.emacs  行号什么 的 我是加到这个文件生效的
  紧接着再按 M-y,它将会被第一次移除的那行取代。
+
;;  ~/.emacs.d/emacs
  试着再按几下 M-y 看看会发生什么。
+
 
  再继续,直到第二行被召回来,然后再做个几次。
+
;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
  如果感兴趣,你可以试着给 M-y 指定一个正的或负的参数。
+
(tool-bar-mode -1)
  
 +
;; 关闭文件滑动控件
 +
(scroll-bar-mode -1)
  
* 撤销(UNDO)
+
;; 显示行号 试过 这个一定有效果
--------------
+
(global-linum-mode 1)
如果你修改了一段文字,又觉得改得不好,可以用 undo 命令进行撤销:C-/。
 
另外, C-x u 和 C-/ 完全一样,但是按起来有些麻烦。
 
  
* 文件(FILE)
+
;; 更改光标的样式(不能生效,解决方案见第二集)
--------------
+
(setq cursor-type 'bar)
  
 +
;; 关闭启动帮助画面
 +
(setq inhibit-splash-screen 1)
  
* 缓冲区(BUFFER)
+
;; 关闭缩进 (第二天中被去除)
------------------
+
;; (electric-indent-mode -1)
  
你可以用 C-x C-f 找到并打开第二个文件,但第一个文件仍然在 Emacs 中。要
+
;; 更改显示字体大小 16pt
切回第一个文件,一种办法是再用一次 C-x C-f。这样,你就可以在 Emacs 中同
+
;; http://stackoverflow.com/questions/294664/how-to-set-the-font-size-in-emacs
时打开多个文件。
+
(set-face-attribute 'default nil :height 160)
不过还有一个更简单的办法,那就是用 C-x b。用这条命
 
令,你必须输入缓冲区的名称。(如果是返回默认的第一个不用名称)
 
  
 +
;; 快速打开配置文件
 +
(defun open-init-file()
 +
  (interactive)
 +
  (find-file "~/.emacs.d/init.el"))
  
>> 通过输入 C-x C-f foo <Return> 创建一个名为“foo”的文件。
+
;; 这一行代码,将函数 open-init-file 绑定到 <f2> 键上
  然后输入 C-x b TUTORIAL.cn <Return> 回到这里。
+
(global-set-key (kbd "<f2>") 'open-init-file)
  
 +
; 开启全局 Company 补全
 +
(global-company-mode 1)
  
 +
;; 作者用的  是t
 +
3(global-company-mode t)
  
C-x s  保存多个缓冲区
 
  
 +
;; ~/.emacs  生效的居然是这个 2018
 +
;; 在 mode line 上显示行列号
 +
(setq column-number-mode 1)
 +
(setq line-number-mode 1)
  
输入 C-x 1 离开缓冲区列表
+
;;显示列号
+
(setq column-number-mode t)
+
 
+
;; 显示行号
* 命令集扩展(EXTENDING THE COMMAND SET)
+
(global-linum-mode 1)
-----------------------------------------
 
        C-x    字符扩展。  C-x 之后输入另一个字符或者组合键。
 
        M-x    命令名扩展。M-x 之后输入一个命令名。
 
  
C-z 可以暂时离开 Emacs――当然,你还可以再回来。
+
;; 取消滚动栏,工具栏
+
(tool-bar-mode 0)
C-x 的扩展命令有很多,下面列出的是你已经学过的:
+
(menu-bar-mode 0)
 
+
(scroll-bar-mode 0)
        C-x C-f        寻找文件。
 
C-x C-s        保存文件。
 
        C-x C-b        列出缓冲区。
 
        C-x C-c        离开 Emacs。
 
C-x 1          关掉其它所有窗格,只保留一个。
 
        C-x u          撤销。
 
  
 +
;; 关闭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)
  
* 自动保存(AUTO SAVE)
+
;;内置的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.
 +
)
  
所以,假如不幸真的发生了,你大可以从容地打开原来的文件(注意不是自动保
 
存文件)然后输入 M-x recover file <Return> 来恢复你的自动保存文件。在
 
提示确认的时候,输入 yes<Return>。
 
  
  
* 状态栏(MODE LINE)
+
I. 显示时间
---------------------
+
.emacs加上:
 +
(display-time-mode 1) ;; 常显
 +
(setq display-time-24hr-format t) ;;格式
 +
(setq display-time-day-and-date t) ;;显示时间、星期、日期
  
“L” 和其后的数字给出了光标所在行的行号。
+
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当前行
Fundamental,就是你现在正在使用的这个。它是一种“主模式”。
+
.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)))))
  
用 C-l C-l 将本行带到屏幕的最上方。
+
(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)
  
* 搜索(SEARCHING)
 
-------------------
 
 
C-s 是向前搜索,C-r 是向后搜索。不过手别这么快!别着急试。
 
  
在按下 C-s 之后,回显区里会有“I-search”字样出现,表明目前 Emacs 正处
+
# other
于“渐进搜索”状态,并等待你输入搜索字串。按 <Return> 可以结束搜索。
+
如果要一次移动若干个单位,可以给命令加上数值参数,通过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>
  
>> 输入 C-s 开始一个搜索。注意敲慢一点,一次输入一个字符。
+
====kali本本配置====
  慢慢输入“ccusor”这个词,每敲一个字都停顿一下并观察光标。
+
<pre>
  现在你应该已曾经找到“ccusor”这个词了。
+
;;cat ~/.emacs
>> 再按一次 C-s,搜索下一个“ccusor”出现的位置。
 
>> 现在按四次 <DEL> ,看看光标是如何移动的。
 
>> 敲 <Return> 结束搜索。
 
  
看仔细了么?在一次渐进式搜索中,Emacs 会尝试跳到搜索目标出现的位置。要
+
;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
跳到下一个命中位置,就再按一次 C-s。如果找不到目标,Emacs 会发出“哔”
+
(tool-bar-mode 0)
的一声,告诉你搜索失败。在整个过程中,都可以用 C-g 来终止搜索。【你会发
+
(menu-bar-mode 0)
现 C-g 会让光标回到搜索开始的位置,而 <Return> 则让光标留在搜索结果上,
+
(scroll-bar-mode 0)
这是很有用的功能。】
+
(tool-bar-mode -1)
  
在渐进式搜索中,按 <DEL> 会“撤回”到最近一次搜索的命中位置。如果之前没
 
有一个命中, <DEL> 会抹去搜索字符串中的最后一个字符。比如你已经输入了
 
“c”,光标就停在“c”第一次出现的位置,再输入“u”,光标停在“cu”第一次出现
 
的位置,这时再按 <DEL> ,“u”就从搜索字串中消失了,然后光标会回到“c”第
 
一次出现的位置。
 
  
  
* 多窗格(MULTIPLE WINDOWS)
+
(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)
  
> 移动光标到这一行,然后输入 C-l C-l。
+
;;显示列号
 +
(setq column-number-mode t)
  
>> 现在输入 C-x 2,它会将屏幕划分成两个窗格。
+
;; 显示行号
  这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。
+
(global-linum-mode 1)
  
>> 试试用 C-M-v 滚动下方的窗格。
+
;; 取消滚动栏,工具栏
  (如果你并没有 META 键,用 ESC C-v 也可以。)
+
(tool-bar-mode 0)
  【向上滚动是 C-M-S-v,也就是同时按住 CONTROL、META 和 SHIFT 再按 v】
+
(menu-bar-mode 0)
 +
(scroll-bar-mode 0)
  
>> 输入 C-x o(“o”指的是“其它(other)”),
+
;; 关闭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")))
  
>> 在下方的窗格中,用 C-v 和 M-v 来滚动。
+
;; 公共插件配置
  同时继续在上方的窗格里阅读这些指导。
+
;; 设置 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-M-v 是一个 CONTROL-META 组合键。如果你有 META (或 Alt)键的话,可以
+
;;;; c mode ;;;;
同时按住CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,
+
(defvar xgp-cfsi-left-PAREN-old nil
因为它们只是用来“修饰(modify)”你输入的字符的。
+
  "Command used to input \"(\"")
 
+
(make-variable-buffer-local 'xgp-cfsi-left-PAREN-old)
  
>> (在上方窗格里)输入 C-x 1 关掉下方窗格。
+
(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)))))
  
(如果你在下方的窗格里输入 C-x 1,那么就会关掉上方的窗格。你可以把这个
+
(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)))
  
不同的窗格可以显示不同的缓冲区。如果你在一个窗格里用 C-x C-f 打开了一个
+
  (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))))
  
* 多窗口(MULTIPLE FRAMES)
+
(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)
  
* 更多精彩(MORE FEATURES)
+
;; py
---------------------------
+
(setq tab-width 4)
 +
(set-variable 'python-indent-offset 4)
 +
;;(set-variable 'python-indent-guess-indent-offset nil)
 +
</pre>
  
想学习更多的使用技巧,Emacs 使用手册(manual)值得一读。你可以读纸版的
+
===reload configfile 重启===
书,也可以在 Emacs 中读(可以从 Help 菜单进入或者按 C-h r)。提两个你
 
可能会很感兴趣的功能吧,一个是可以帮你少敲键盘的 completion(自动补全),
 
另一个是方便文件处理的 dired(目录编辑)。
 
  
Completion 可以替你节省不必要的键盘输入。比如说你想切换到 *Message* 缓
+
emacs 打开~/.emacs的时候执行命令M-x eval-buffer,就可以使配置文件立即生效。
冲区,你就可以用 C-x b *M<Tab> 来完成。只要 Emacs 能够根据你已经输入的
 
文字确定你想要输入的内容,它就会自动帮你补齐。Completion 也可用于命令
 
名和文件名。有关 Completion 的详细说明可以在 Emacs Info 中的
 
“Completion”一节里找到。
 
  
Dired 能够在一个缓冲区里列出一个目录下的所有文件(可以选择是否也列出子
 
目录),然后你可以在这个文件列表上完成对文件的移动、访问、重命名或删除
 
等等操作。Dired 也在 Emacs 使用手册中有详细介绍,参见“Dired”一节。
 
  
 +
[https://blog.csdn.net/qq_40875035/article/details/82883325 emacs配置]
  
下面列出主要术语的译词对照,并给出注释说明:
+
[https://zhuanlan.zhihu.com/p/114329781 我的EMACS设置]
  
    command              命令
+
== 不错的配置 c什么都包括了 undo-tree暂时去掉 其它感觉不错 2021==
    cursor                光标
+
<pre>
    scrolling            滚动
+
mv ~/.emacs.d ~/.emacs.d.bak
    numeric argument      数字参数
+
git clone --depth 1 https://github.com/seagle0128/.emacs.d.git ~/.emacs.d
    window                窗格 [1]
+
</pre>
    insert                插入
 
    delete                删除 [2]
 
    kill                  移除 [2]
 
    yank                  召回 [2]
 
    undo                  撤销
 
    file                  文件
 
    buffer                缓冲区
 
    minibuffer            小缓冲
 
    echo area            回显区
 
    mode line            状态栏
 
    search                搜索
 
    incremental search    渐进式搜索 [3]
 
  
 +
有空好好的看一下
 +
https://github.com/seagle0128/.emacs.d
  
20180313 ln 792
 
here
 
  
  
M-x replace-string ENTER search-string ENTER 替换
+
=== 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
  
用 <Return> 结束文件名的输入
+
;; 在 mode line 上显示行列号
Return 这里是什么意思呢  回车么 
+
(setq column-number-mode 1)
 +
(setq line-number-mode 1)
  
 +
;;显示列号
 +
(setq column-number-mode t)
  
Alt + x
+
;; 显示行号
输入: linum-mode
+
(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")))
  
emacs中如何跳到指定行
+
;; 公共插件配置
 +
;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
 +
(require 'package)
 +
(add-to-list 'package-archives
 +
            '("melpa" . "http://melpa.milkbox.net/packages/") t)
 +
(package-initialize)
  
M-x goto-line 然后回车  <line_number>
 
  
以在.emacs文件中定制一下(添加以下一行):
+
</pre>
  
(define-key ctl-x-map "l" 'goto-line)
+
[https://tuhdo.github.io/c-ide.html C/C++ Development Environment for Emacs]
  
 +
[https://segmentfault.com/a/1190000003878553 Emacs 中 C/C++ 编程基本环境配置2018]
  
然后每次在emacs中按C-x再按l,输入指定的行号就可以了。
+
[https://blog.csdn.net/cuijianzhongswust/article/details/10313865 将Emacs配置成一个C/C++的IDE编程环境]
  
http://blog.csdn.net/grey_csdn/article/details/78905862
+
https://wikemacs.org/wiki/C-ide
http://bbs.csdn.net/topics/60028785
 
</pre>
 
==package  ELPA中国镜像==
 
<pre>
 
  
在配置文件中加入
+
[https://github.com/atilaneves/cmake-ide enable IDE-like features on Emacs]
(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/")))
 
  
 +
https://www.youtube.com/watch?v=5FQwQ0QWBTU
  
也可以使用命令M-x list-packages获取插件列表,然后 使用C-s找到 软件名    i  - 选择要安装的包  例如叫 elpy 来安装
+
==from tour ==
 +
<pre>
 +
#这些笔记完全作到wiki么 会不会太多 而没有重点的感觉 
  
 +
* 如果 EMACS 失去响应(IF EMACS STOPS RESPONDING)
 +
-----------------------------------------------
 +
如果 Emacs 对你的命令失去响应,你可以用 C-g 来安全地终止这条命令。C-g
 +
也可以终止一条执行过久的命令。
 +
 +
C-g 还可以取消数字参数和只输入到一半的命令。
  
;内置的package管理,emacs24以上的版本有用
+
>> 输入 C-u 100 设定一个值为 100 的数字参数,然后按 C-g。
(require 'package)
+
  现在再按 C-f,光标应该只会移动一个字符,因为你已经用 C-g 取消了参数。
;;将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>
 
  
===常用操作===
+
如果你不小心按了一下 <ESC>,你也可以用 C-g 来取消它。
<pre>
+
【这个说法似乎有问题,因为按照这个按键顺序输入的应该是 C-M-g。
#软件包安装
+
取消 <ESC> 的正确做法是再连按两次 <ESC>。】
Alt+x list-packages
 
  
可以先用C-s向下搜索  autopair
 
找到后 回来后 按i再按x就下载到本地了。然后打开emacs的配置文件init.el,在里面添加下面:
 
  
常用快捷键
+
* 插入与删除(INSERTING AND DELETING)
- 选择要安装的包
+
--------------------------------------
d - 选择要删除的包
 
U - 升级已安装的包
 
- 执行操作
 
d - 选择要删除的包
 
</pre>
 
  
https://mirrors.ustc.edu.cn/help/elpa.html
+
,大部分的 Emacs 命令都可以指定重复次数,这其中也包括输入字符的
 +
命令。重复执行输入字符的命令实际上就是输入多个相同的字符。
  
https://mirror.tuna.tsinghua.edu.cn/help/elpa/
+
>>  试试 C-u 8 *,这将会插入 ********。
[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的引入和管理]
 
  
==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
+
        <DEL>        删除光标前的一个字符
0.我雖然是看man過來的,但是這份名單,如果早知道應該會輕鬆很多。--- update1.從starter-kit入手把,爬梯子出去看redguardtoo的獨立博客,你會發現吊爆了。當然他的一年的文章一定要看。而且可以git下來,revert到剛開始的commit,一個個commit看。2. 還有就是各種折騰。各種動手把,拒絕其他一切的編輯器。3.改鍵位,乾脆去買了HHKB也可以,如你很土豪。4.看書呀,學elisp,這個階段你要看田春冰河的,李殺的博客了。學着寫個插件把。PS.學習emacs會改變你編程思維的,包括你軟件開發的工作流。lisp系各種優雅.上面編號不分先後。
+
        C-d          删除光标后的一个字符
  
[https://www.zhihu.com/question/19783016 怎样学习 Emacs]
+
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://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://lifegoo.pluskid.org/wiki/EMMS.html The Emacs Multimedia System]
  
[https://www.cnblogs.com/holbrook/archive/2012/02/15/2357335.html Emacs学习笔记(2): 初识Emacs]
+
https://www.emacswiki.org/emacs/EMMS
  
[https://www.cnblogs.com/holbrook/tag/emacs/ emacs 学习标签 ]
+
[https://www.cnblogs.com/jiqingwu/p/4043540.html  用Emacs看电影 ]
  
 +
[https://lifegoo.pluskid.org/wiki/EMMS.html The Emacs Multimedia System]
  
[https://zklhp.github.io/2016/06/18/What-I-do-with-Emacs/ 我用Emacs干什么?为什么用Emacs?]
+
[https://qastack.cn/emacs/3667/what-are-the-options-to-play-music-from-within-emacs 在Emacs中播放音乐有哪些选项]
 
 
[https://zhuanlan.zhihu.com/p/56273332 作为 CEO 使用 Emacs 的两年经验之谈]
 
  
==music==
+
==功能 ==
===install===
+
    收发电子邮件、上新闻组(Gnus)
M-x package-install RET emms RET
+
    无缝直接编辑远程文件(Tramp)
https://elpa.gnu.org/packages/emms.html
+
    通过Telnet登录远程主机
===Usage===
+
    操作壳层(M-x EShell,Term)
<pre>
+
    结合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还有如下特点:
;;加了这个配置后 随便玩就可以播放了,不然不行
 
(require 'emms-setup)
 
(emms-all)
 
(emms-default-players)
 
  
交互使用
+
    实时编辑器
 +
    Self-documenting
 +
    可定制性
 +
    可扩展性(集成Lisp语言)
  
使用 emms-playlist-mode-go 命令即可进入正在播放的播放列表的 buffer 。 在这里可以方便地控制播放上一首、下一首、随机的某一首歌等。通过 ? 可以 描述当前 mode ,并得到一份详细的可用命令列表。
+
== References 参考==
  
我通常使用 emms-play-find 或者 emms-play-directory-tree 来打开一个播放 列表,然后用 d 删除不想要的曲目,并 C-x C-s 将其保存起来。
 
  
EMMS 还提供了打分机制。并可以设置最低分数,如果分数低于最低分数将不会 被播放。要是能像 Dired 或者 Mew 的 summary-mode 那样能够方便地贴标签并 进行批量操作就更舒服了!
+
[https://zhuanlan.51cto.com/art/201911/605577.htm 一个Emacs程序员的一天]
 
 
</pre>
 
====Basic Commands====
 
<pre>
 
;;Basic Commands
 
emms-stop  也可以直接用 s
 
</pre>
 
 
 
官方文档最好了啦
 
 
 
https://www.gnu.org/software/emms/manual/#Quickstart-Guide
 
 
 
[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中播放音乐有哪些选项]
 
 
 
== 参考==
 
 
[https://my.oschina.net/alphajay/blog/7737 Emacs快捷键的总结]
 
[https://my.oschina.net/alphajay/blog/7737 Emacs快捷键的总结]
  
第2,032行: 第2,532行:
 
[https://linux265.com/soft/3857.html  Emacs - 代码编辑神器之一]
 
[https://linux265.com/soft/3857.html  Emacs - 代码编辑神器之一]
  
 +
[https://www.jianshu.com/p/0fdf314713e0 为什么要用 Emacs]
  
 
Emacs 入门
 
Emacs 入门
 +
[https://blog.windrunner.me/tool/emacs.html Emacs 入门]
 +
 
https://i.linuxtoy.org/docs/guide/ch25.html
 
https://i.linuxtoy.org/docs/guide/ch25.html
  
 
[https://blog.csdn.net/FunLab/article/details/97142580  Emacs Tutorial 快速指南]
 
[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.emacswiki.org/emacs/%E9%A6%96%E9%A1%B5 emacswiki]
第2,068行: 第2,573行:
  
 
[https://elloop.github.io/tools/2016-03-01/emacs-accumulate-5-packages-extensions  【积水成渊-逐步定制自己的Emacs神器】3:为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 ===
第2,101行: 第2,608行:
 
[http://codingpy.com/article/emacs-the-best-python-editor/ Emacs:最好的Python编辑器]
 
[http://codingpy.com/article/emacs-the-best-python-editor/ Emacs:最好的Python编辑器]
 
=== 参考 for c===
 
=== 参考 for c===
 +
[https://ruglcc.blog.csdn.net/article/details/7855733  将Emacs配置成一个C/C++的IDE编程环境]
 +
 
[https://segmentfault.com/a/1190000003878553 Emacs 中 C/C++ 编程基本环境配置]
 
[https://segmentfault.com/a/1190000003878553 Emacs 中 C/C++ 编程基本环境配置]
  

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