firemail 发表于 2017-9-11 16:37:34

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:30

本帖最后由 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:24

本帖最后由 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,输入:
M - x sr-speedbar-然后按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:15

修改配色方案 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:18

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
页: [1]
查看完整版本: emacs