firemail
标题: emacs [打印本页]
作者: firemail 时间: 2017-9-11 16:37
标题: emacs
将以下内容添加到.zshrc或者.bashrc,取决于你用什么shell- # alias emacs
- alias emacsd='emacs --daemon'
- alias e='emacsclient -t'
- alias ec='emacsclient -c'
- # run emacs daemon
- [[ -z $(ps -C 'emacs --daemon' -o pid=) ]] && emacsd
- # add kill emacs function
- function kill-emacs(){
- emacsclient -e "(kill-emacs)"
- emacs_pid=$( ps -C 'emacs --daemon' -o pid= )
- if [[ -n "${emacs_pid}" ]];then
- kill -9 "${emacs_pid}"
- fi
- }
复制代码
打开终端会自动运行emacsd启动emacs daemon server。后面都使用ec来编辑文件,使用c在终端编辑文件。 emacs daemon模式下emacs会一直在后台以服务的方式运行,ec会启动一个客户端连接到这个服务。所以会非常快。
当你插件非常多时,启动一次是很耗时的。我的emacs daemon启动一次大概要20s,但使用ec都是瞬开。
关闭emacs,在终端调用kill-emacs即可。
作者: firemail 时间: 2017-9-11 16:44
本帖最后由 firemail 于 2017-9-12 20:23 编辑
终端下打开emacs
emacs -nw
焦点移动到下一窗口(常用)
M-x other-window,快捷键是`C-x o`.
关闭当前缓冲区是 c-x k。
切换多个Buffer
C-x b
C-x [ 到页首
C-x ] 到页尾
M-< 到缓冲首部 Alt +Shift + <
M-> 到缓冲尾部
C-v 向下翻页
M-v 向上翻页
帮助
C-h t 入门指南
C-h v 查看变量
C-h f 查看函数
C-h ? 查看帮助列表
作者: firemail 时间: 2017-9-12 11:32
本帖最后由 firemail 于 2017-9-12 11:55 编辑
在Emacs(终端)中使用树形“资源管理器”——Sr-Speedbarsr-speedbar可以让speedbar嵌入当前frame中,而不是以单独一个frame的形态游离在外. 这样可以方便地操作speedbar
『1』下载
使用Sr Speedbar可以在Emacs中“造”出一个树形资源管理器。在这个页面下载到 sr-speedbar.el
『2』创建一个Emacs的load path
我在我放置Emacs插件的总目录 ~/.emacs.d/ 下创建了一个“extra”目录,用于放置其他我自己下载的插件,于是我把上面下载的 sr-speedbar.el 也放到这个extra目录下了。
『3』配置Emacs
修改 ~/.emacs 文件,添加如下两行:
- (add-to-list 'load-path "~/.emacs.d/extra/")
- (require 'sr-speedbar)
- (setq speedbar-show-unknown-files t)
- (setq speedbar-use-images nil)
- (setq sr-speedbar-width 30)
- (setq sr-speedbar-right-side nil)
-
- (global-set-key (kbd "<f5>") (lambda()
- (interactive)
- (sr-speedbar-toggle)))
复制代码
其中,第一句是将上面创建的extra目录加入到load-path中,这样Emacs启动时就会从extra目录加载插件。
第二句是加载 Sr Speedbar 插件。
文章来源:http://www.codelast.com/
『4』使用
非常简单。进入Emacs,输入:
然后按TAB进行自动补全,即可显示 Sr Speedbar 的全部命令。或参考官方网页获取全部命令。
最主要的命令就是 sr-speedbar-open 了,执行之后,会在窗口右边打开一个树形结构的资源管理器,把光标移动到其中,在哪一项上按回车,就可以打开哪一个文件/目录。
『5』感受
树形资源管理窗口显示在右边,不如左边方便(因人而异),而且某些目录下的文件(非隐藏的)竟然无法显示——只显示子目录,也不知道Sr Speedbar抽了什么风。所以整体感觉不好。
如上图所示,本来“article”目录下有三个 .txt 文件,一个子目录“test-directory”,但是它只显示了“test-directory”,没有显示三个 .txt 文件。
配色看不太清楚
使用- sr-speedbar-open
打开sr-speedbar窗口 - sr-speedbar-close
关闭sr-speedbar窗口 - sr-speedbar-toggle
切换打开/关闭sr-speedbar窗口 - sr-speedbar-select-window
选中sr-speedbar窗口 - sr-speedbar-refresh-turn-on
开启自动刷新 - sr-speedbar-refresh-turn-off
关闭自动刷新 - sr-speedbar-refresh-toggle
切换开启/关闭自动刷新
4 定制- sr-speedbar-width-x
图形界面下sr-speedbar窗口的宽度 - sr-speedbar-width-console
console界面下,sr-speedbar窗口的宽度 - sr-speedbar-max-width
允许存储的最大宽度,若设置sr-speedbar-width-x超过此宽度,则该值并不永久生效 - sr-speedbar-delete-windows
打开sr-speedbar时,是否移除其他的window - sr-speedbar-skip-other-window-p
当使用命令`other-window`遍历window是,是否跳过‘sr-speedbar’ window - sr-speedbar-auto-refresh
是否自动刷新sr-speedbar的内容 - sr-speedbar-right-side
nil表示sr-speedbar显示在左列, t表示显示在右列
5 QA当在Emacs24.4上加载sr-speedbar时,可能会报找不到函数ad-advised-definition-p,这时需要加上
- (defalias 'ad-advised-definition-p #'ad-advice-p)
复制代码
- 当在Emacs24上,点击speedbar中的一个文件后,总是会弹出一个新window来打开这个文件,而不是在之前编辑的那个窗口中打开这个文件.
设置`pop-up-windows'为nil可以解决这个问题 - 如何设置让speedbar中不显示图标
(setq speedbar-use-images nil) - 如何为speedbar设置自己的face
- (make-face 'speedbar-face)
- (set-face-font 'speedbar-face "Inconsolata-12")
- (setq speedbar-mode-hook '(lambda () (buffer-face-set 'speedbar-face)))
复制代码
https://www.emacswiki.org/emacs/SrSpeedbar#toc3
作者: firemail 时间: 2017-9-12 12:58
修改配色方案 color-theme
下载地址:
http://ftp.twaren.net/Unix/NonGNU/color-theme/color-theme-6.6.0.tar.gz
把主题下载下来后 解压,然后将文件夹整个复制到到我们的load-path中。
我们使用emacs打开我们的.emacs文件在该文件下加入以下代码:
- ;;================================
- ;;为我的emacs配置主题色彩 (color-theme-色彩名称)
- ;;================================
- (require 'color-theme)
- (color-theme-initialize)
- (color-theme-calm-forest)
复制代码 打开Emacs输入M-x命令,然后输入color-theme-select后选择。
作者: firemail 时间: 2017-9-12 20:06
Emacs 中文手册
====================================================
[符号]
--------------------------------------
C- 意思是按住 Ctrol 键
M- 意指 Meta 键 (键盘上若无Meta 键,则可以ALT 或 ESC 键来取而代之)
DEL 意指退格键 (不是 删除(Delete) key)
RET 意指回车键
SPC 意指空格键
ESC 意指Escape键
TAB 意指Tab键
像 "C-M-" (or "M-C") 这样连在一起的意味着同时按住 Control 和 Meta 键不放.
[进入Emacs]
----------------------------------------
emacs 要进入GNU Emacs,只需键入它的名字
C-z 挂起Emacs:
C-x C-c 永久离开Emacs
[用方向键]
---------------------------------------
上一行 C-p (Prev line)
.
.
.
向左移 C-b .... 。.... 向右移 C-f (Forward character)
(Backward ) .
.
.
下一行 C-n (Next line)
[文件]
----------------------------------------
C-x C-f 读取文件到Emacs
C-x r 只读的方式打开一个文件
C-x C-q 清除一个窗口的只读属性
C-x C-s 保存文件到磁盘
C-x s 保存所有文件
C-x i 插入其它文件的内容到当前缓冲
C-x C-v 用将要读取的文件替换当前文件
C-x C-w 将当前缓冲写入指定的文件
C-x C-q Version control checkin/checkout
[错误恢复]
---------------------------------------
C-g 取消当前要执行的命令
M-x recover-file 恢复系统崩溃后丢失的文件
C-x u或C-_ 撤销更新
M-x revert-buffer 使缓冲回复到初始内容
C-l Redraw garbaged screen
[增量查找]
---------------------------------------
C-s 向前查找
C-r 向后查找
C-M-s 规则表达式查找
C-M-r 反向规则表达式查找
M-p 选择前一个查找字符串
M-n 选择下一个查找字符串
RET 退出增量查找
DEL(Backspace) 取消上一个字符的作用
C-g 退出当前查找模式
可重复使用C-s和C-r来改变查找方向
[替换]
---------------------------------------
M-% 交互式地替换一个文本串
M-x replace-regexp 交互式地替换一个规则表达式
SPE 替换当前的并移动到下一处
, 替换当前的但不移动到下一处
L(Backspace) 不替换当前的并移动到下一处
! 替换所有剩下的符合条件的文本
RET 退出替换模式
C-r 进入递归的编辑模式
C-M-c 退出递归的编辑模式
[光标移动]
---------------------------------------
C-f 向前一个字符
C-b 向后一个字符
M-f 向前一个字
M-b 向后一个字
C-p 向上一行
C-n 向下一行
C-a 到行首
C-e 到行尾
M-a 到句首
M-e 到句尾
M-{ 到段首
M-} 到段尾
C-x [ 到页首
C-x ] 到页尾
C-M-f 到表达式首部
C-M-b 到表达式尾部
M-< 到缓冲首部
M-> 到缓冲尾部
C-v 滚动到下一屏
M-v 滚动到上一屏
C-x < 滚动到右边一屏(内容向左移动)
C-x > 滚动到左边一屏(内容向右移动)
C-u C-l 滚动当前行到屏幕中央
C-M-n 移到结尾的)、}或]
C-M-p 移到开始的)、}或]
C-M-u 向上移到父结构开始
C-M-d 向下移到父结构开始
[复制、粘贴、剪切、删除]
-----------------------------
C-d 向前delete字符
DEL(Backspace) 向后delete字符
M-d 向前delete到字首
M-DEL(Backspace) 向后delete到字尾
M-0 C-k 向前delete到行首
C-k 向后delete到行尾
C-x DEL(Backspace) 向前delete到句首
M-k 向后delete到句尾
M-- C-M-k 向前delete到表达式首部
C-M-k 向后delete到表达式尾部
C-w Kill区域
M-w 拷贝区域到Kill Ring
M-z <char> Kill到下一个给定字符出现的位置
C-y 拉回(yank)上次kill的内容
M-y 用更早kill的内容取代拉回的上次kill的内容
[标记Marking]
-----------------------------
C-SPC或C-@ 标记当前位置
C-x C-x 以字符为单位使用移动命令动态标记区域
M-@ 以字为单位使用移动命令动态标记区域
M-h 标记一段
C-x C-p 标记一页
C-M-@ 标记一个表达式
C-M-h 标记一个函数
C-x h 标记整个缓冲区
[寄存器]
-----------------------------
C-x r s 存储区域到寄存器
C-x r i 插入矩形内容到缓冲
C-x r SPC <num> 存储光标位置到寄存器
C-x r j <num> 跳跃到寄存器中存储的光标位置
[矩形]
-----------------------------
C-x r r 拷贝一个矩形到寄存器
C-x r k Kill矩形
C-x r y 拉回矩形
C-x r o 打开一个矩形, 将文本移动至右边
C-x r c 清空矩形
C-x r t 为矩形中每一行加上一个字符串前缀
C-x r i r 从r缓冲区内插入一个矩形
[标记Tags]
-----------------------------
M-. 查找标记
C-u M-. 查找标记下一次出现的位置
M-x visit-tags-table 指定一个新的标记文件
M-x tags-search Regexp search on all files in tabs table
M-x tags-query-replace 在所有文件中执行查询-替换
M-, 继续进行上一次标记查找或查询-替换
[窗口与缓冲]
-----------------------------
C-x 1 删除所有其它窗口
C-x 5 2
C-x 2 上下分割当前窗口
C-x 3 左右分割当前窗口
C-x 5 0
C-x 0 删除当前窗口
C-M-v 滚动其它窗口
C-x o 切换光标到另一个窗口
C-x 4 b C-x 5 b 选择另一个窗口中的缓冲
C-x 5 C-o
C-x 4 C-o 显示另一个窗口中的缓冲
C-x 5 f
C-x 4 f 在另一窗口中查找并打开文件
C-x 5 r
C-x 4 r 在另一窗口中以只读方式打开文件
C-x 5 d
C-x 4 d 在另一窗口中运行dired命令
C-x 5 .
C-x 4 . 在另一窗口中查找tag
C-x ^ 增加窗口高度
C-x { 减小窗口宽度
C-x } 增加窗口宽度
C-x b 选择另一个缓冲
C-x C-b 列出所有的缓冲
C-x k Kill一个缓冲
[分栏编辑]
C-x 6 2C-command
C-x 6 s 2C-split
C-x 6 b 2 C-associate-buffer
C-x 6 2 2 C-two-columns
[格式]
-----------------------------
TAB 缩进当前行(与模式相关)
C-M-\ 缩进区域(与模式相关)
C-M-q 缩进表达式(与模式相关)
C-x TAB Indent region rigidly arg. Columns
C-o 在光标后插入一个新的行
C-M-o 静态地将一行下移
C-x C-o 删除光标附近的空行(留下一行)
M-^ 与上一行合并成一行
M- 删除光标附近的所有空格
M-SPC 删除光标附近的空格(留下一格)
M-q Fill paragraph
C-x f Set fill column
C-x . 设置每一行开始的前缀
M-g 设置字体
http://blog.chinaunix.net/uid-1877180-id-303189.html
欢迎光临 firemail (http://firemail.wang:8088/) |
Powered by Discuz! X3 |