emacs 使用集锦

声明, 主要在c/c++环境中使用!
----------------------------------------
1. emacs 中 TAGS 位置设置
----------------------------------------
a)临时使用方式:
M-x visit-tags-table

b)启动Emacs时自动加载方式:
在~/.emacs文件中加入一行,设置tags-file-name变量
(setq tags-file-name "path/TAGS")
如果要一次查找多个TAGS文件,可以设置tags-table-list变量
(setq tags-table-list '("path1/TAGS" "path2/TAGS" "path3/TAGS"))
另外,对于较大又不是经常使用的TAGS,尽量放到该list的后面,避免不必要的打开

----------------------------------------
2. emacs 中缩进的设置
----------------------------------------
emacs 中 c/c++代码缩进总是不尽人意,
这是我用的方式,跟vim 中的一致了,也是我中意的格式

;; 设置c/c++的排版方式
(add-hook `c-mode-common-hook `(lambda()
                            (c-set-style "linux")
                            (setq c-basic-offset 4)
                            (setq tab-width 4)
                            (hs-minor-mode t)
                            (modify-syntax-entry ?_ "w")
                            (linum-mode t)))
注释: 用的是linux 格式,但要重新设置偏移量,tab宽度才能满足要求
顺便再设上hs模式(隐藏显示模式),linum-mode(显示行号模式),并把下划杠当字符,这样会调整影响选词及跳转等功能.

emacs:  c模式缩进设置

默认设置,可通过C-h v c-default-style 查看,是gnu 模式
gnu模式不尽人意,它的基本偏移是2,大括号下有缩进
我需要tab 偏移为4, if,else,while 等大括号下要对齐的格式.
在初始化时加如下代码即可.
(add-hook 'c-mode-common-hook
          (lambda ()
            (setq c-basic-offset 4)
        (c-set-offset 'substatement-open 0)))

C-h v c-style-alist 可查看内置的style, 通过c-set-style 命令可以设置,
但其设置都还赶不上上面的配置好. 即在gnu格式上调整两个参数。

----------------------------------------
3. 让emacs 滚动屏幕上的代码
----------------------------------------
(global-set-key (kbd "M-<up>") (lambda () (interactive) (scroll-up 1)))
(global-set-key (kbd "M-<down>") (lambda () (interactive) (scroll-down 1)))
注意up,down 的写法,因为M 要求后面只能跟一个字符.  其实映射成M-n, M-p 更好,使用更方便,

----------------------------------------
4. 优化rgrep 功能
----------------------------------------
rgrep 需要我们输入分词及目录, 虽然它能够取到光标下的词做默认,取当前目录为默认目录,但我们还是要敲2次回车确认,
而且它默认搜索的文件类型也不尽满意,经常需要改为*.h *.cpp 以搜索.h, .cpp 结尾的文件.
怎样才能不要输入这2个确认呢? 终于找到了方法,如下:

;; 客户化rgrep
(defun my-rgrep()
  "call rgrep with default directory in c++ and h files"
    (interactive)
    (grep-compute-defaults)
    (rgrep (grep-read-regexp) "*.[ch]*" default-directory))
;; 添加快捷键
(global-set-key (kbd "C-c r") 'my-rgrep)
从此不再需要指明搜索词,搜索的文件类型和搜索的起始目录了,甚爽! 负担小了很多!

------------------------------------------------------------------------------
5. 安装noccur 插件及iedit 插件,从此重构代码就简单了.(project 多文件重构)
   安装loccur 插件, 可以立即看到本文件中对符号的使用情况,结合iedit可重构本文件
------------------------------------------------------------------------------

occur 模式真的是一种创新,它保留了grep 的那种映射关系,还能够编辑occur 缓冲的内容,

就等于直接编辑了原代码位置处内容,可以说是带编辑功能的grep模式. 是我首次在emacs中看到的.

而iedit 实际上是一种多点编辑模式,同时对多处文本进行编辑. 结合occur 会让你想到什么? 把大三角形映射到小三角形,并在小三角形中进行可视编辑.

noccur 也需要重构以简化使用,查看其调用方式,可仿照rgrep 来简化
(defun my-occur()
"call noccur with default director"
(interactive)
(grep-compute-defaults)
(noccur-project (grep-read-regexp) 0 default-directory))
;; 添加快捷键
(global-set-key (kbd "C-c o") 'my-occur)
这样,与loccur 的快捷键 C-o 还是很搭配的!

------------------------------------------------------------------------------

6. 拷贝缓冲区文件信息到剪切版,交互式,

可copy 路径,目录和文件名

------------------------------------------------------------------------------

(defun my-copy-buffer-file-name(choice)
  "Copy the buffer-file-name to the kill-ring"
  (interactive "cCopy Buffer Name (F) Full, (D) Directory, (N) Name")
  (let ((new-kill-string)
        (name (if (eq major-mode 'dired-mode)
                  (dired-get-filename)
                (or (buffer-file-name) ""))))
    (cond ((eq choice ?f)
           (setq new-kill-string name))
          ((eq choice ?d)
           (setq new-kill-string (file-name-directory name)))
          ((eq choice ?n)
           (setq new-kill-string (file-name-nondirectory name)))
          (t (message "Quit")))
    (when new-kill-string
      (message "%s copied" new-kill-string)
      (kill-new new-kill-string))))
(global-set-key (kbd "C-c b") 'my-copy-buffer-file-name)

emacs 使用集锦相关推荐

  1. Emacs Lisp 功能扩展集锦

    From 参考 Emacs Lisp 功能扩展集锦 session.el desktop.el ibuffer.el browse-kill-ring.el ido.el tabbar.el spee ...

  2. Emacs编辑器——王垠

    本文来源:http://docs.huihoo.com/homepage/shredderyin/emacs.html 更多内容详见http://docs.huihoo.com/homepage/sh ...

  3. Markdown 编辑器集锦

    1. Web App 推荐: StackEdit / Classeur Modoko 2. 客户端推荐: FoldingText+Marked2(macOS):大纲勾勒,纯文本写作,实时渲染预览. H ...

  4. emacs 搭建racket开发环境

    emacs 搭建racket开发环境 emacs下搭建开发racket的环境,笔者之前用过下面两种模式:geiser和racket-mode.相对而言,后一种方式要显得简单.本文主要介绍后一种方式环境 ...

  5. emacs python环境配置

    python作为日常用语,配置好emacs的开发环境,有效提高日后的开发效率. 几篇老外的文章作为参考: Configing emacs as a python ide python.emacs 安装 ...

  6. emacs 探索之五:latex配置

    最近需要使用Latex写论文,之前一直在用emacs,而且渐渐理解emacs的思想之后发现大多数 事情都能够在emacs中完成,那么自然会想到emacs是否能够与latex相结合. Google一下发 ...

  7. GitHub:TensorFlow、PyTorch最全资料集锦

    给各位小伙伴们推出几个深度学习框架的资料集锦,统一命名为:XXX-From-Zero-To-One.下面po一幅深度学习框架发展的重要历史点: 从上图可知,TensorFlow和PyTorch是目前深 ...

  8. emacs参考资料整理

    spacemacs dired模式用法: https://blog.slegetank.com/blog/20170106-dired.html Emacs文件管理神器--dired常用操作说明 - ...

  9. emacs按键绑定详解

    key-binding: https://crazylxr.github.io/spacemacas-zh_CH-doc/binding-keys.html 概述:Emacs的键绑定方式看起来花样繁多 ...

最新文章

  1. ScribeFireBlog 发的一篇在Cnblogs的日志
  2. springboot启动原理分析
  3. 36条网络安全术语盘点——Vecloud
  4. 学术好帮手Publons使用指南
  5. sql三张表的搜索要满足5种搜索条件的模糊搜索_面试三轮我倒在了一道 SQL 题上……| 原力计划...
  6. TextBox控件怎样赋值化学符号
  7. Nagios+zabbix+ganglia的相关参数分析和优缺点介绍
  8. linux 设置交换文件格式,使用linux的mkswap命令建立和设置SWAP交换分区
  9. 02 - 用wxStreamToTextRedirector和wxTextCtrl输出std::cout
  10. PHP-FPM,Nginx,FastCGI 之间的关系
  11. python下载-Python下载和安装图文教程[超详细]
  12. 泰山JDK8率先支持多种权重(笔画粗细)的字体绘制
  13. 分享几篇有关DO-178和GJB5000对比的论文
  14. 读《美国交通信号配时实践经验》后的感受
  15. 同步(双向)BUCK电路设计
  16. 2020如何成功注册google
  17. subclass and extends
  18. Java:Windows 10下载和配置JDK
  19. vanilla_使用Vanilla JavaScript的快速简单的搜索过滤器
  20. python解压压缩包的几种方法

热门文章

  1. matlab 函数不定参数,matlab function定义一个函数,但一直出来说输入参数数目不足。我用的是2014版本,不知道数目原因啊?...
  2. UVALive-6528 Disjoint water supply
  3. Java P1460 健康的荷斯坦奶牛 Healthy Holsteins
  4. HTML+CSS+JS个人网页设计期末课程大作业 web前端开发技术 web课程设计 网页规划与设计
  5. python2.7安装pyqt5版本,py3
  6. 红米note4 android o,小米红米Note4/mido-LOS-安卓9.0.0-稳定版Stable2.0-来去电归属-农历等-本地化增强适配...
  7. golang力扣leetcode 1823.找出游戏的获胜者
  8. STM32HAL库-移植mbedtls开源库示例(一)
  9. Docker网络、容器编排
  10. 软件测试五大特性,《软件测试52讲》——代码测试篇