1、C-k 的功能并不是剪切当前行,而是剪切当前行从光标到行末的内容。

Emacs 中的剪切不叫剪切(cut),叫kill,复制(copy)不叫copy ,叫kill-ring-save (这个可以理解为先kill掉放到kill-ring里,然后再把它save回来)。另外还有一个操作叫delete ,delete 与kill的区别是kill掉的内容会被放到kill-ring(剪切环)而delete掉的内容则直接删掉了,除了进行undo操作外没法找回删掉的内容。而kill 掉的内容很容易从kill-ring中取回。有了kill-ring的Emacs可以说是具有了多个剪贴板。
默认的与kill yank delete 有关的键绑定。

  • C-w       kill-region
  • C-k       kill-line
  • C-M-k     kill-sexp 这个比较复杂 它表示删除一个结构单元。对不同类型的文档(c java文本 等)一个结构单元表示不同的含义。你可以尝试一下。(比如,你移动到一个括号的开头,按下,则删除整个括号内的内容)
  • C-d      delete-char
  • M-d      kill-word
  • C-backspace          backward-kill-word
  • M-w           kill-ring-save    复制。
  • C-y            yank 粘贴。
  • 另外在按下C-y后,按一次或多次M-y 会循环取出kill-ring中的内容,然后贴到当前位置 。
  • 但是kill-ring毕竟不是操作系统的剪切板,kill-ring里的内容是没法在其他程序里利用的。所以要用好它又设及到与系统剪切板的同步的问题了。 在Windows 上Emacs已经默认解决了这个问题。在linux上没有。因为Linux的剪切板不只一个。所以问题要复杂许多。

Linux 下 与系统系统剪切板相关的操作。

;;关于剪切板: X共享信息的有 clipboard primary secondary 三个区域;;其中clipboard 就是我们常说的剪切板,而primary 就是常说的selection ,也就是说只要你选中一段内容,;;那么这段内容就被存到primary 中了,而secondary 目前好像已经不推荐使用了,所以不用考虑;;而emacs 默认存在内容的区域不是上面任何一个,它叫kill-ring叫剪切环,它能存储不只一份内容,;;C-y 会取出kill-ring 中最近的一份内容,然后paste(专业点叫yank)到buffer 中,可以通过M-y;;取得以前的版本
(defun setting-for-linux-x-clipboard (&optional frame) 
(when (and (eq system-type 'gnu/linux)(eq (window-system frame) 'x)) 
;;在向kill-ring 加入内容的同时会执行interprogram-cut-function 变量指定的函数 
(setq-default interprogram-cut-function 'x-select-text);
; default ;;在执行yank 操作时,会检查interprogram-paste-function 变量 所指向的函数 ;;是否有返回值,如果有的话就将其yank在buffer 中,否则的话才会从kill-ring中取值 ;;而x-cut-buffer-or-selection-value 和x-select-text函数一样, ;;也会根据x-select-enable-clipboard 和x-select-enable-primary 的值 ;;决定是否从clipboard 和primary 中取得内容 
(setq-default interprogram-paste-function 'x-cut-buffer-or-selection-value) 
;;有关于往kill-ring加入内容时 是否往clipboard ,及primary 放入的判断 
(setq-default x-select-enable-clipboard t) 
;每一次往kill-ring 里加入东西时,同时往clipboard中放一份, 
(setq-default x-select-enable-primary nil) 
;每一次往kill-ring 里加入东西时,是否也往primary 中放入 
(setq-default select-active-regions t)
;这个忘了什么意思 ;;在轮询kill-ring 的时候是否也同步改变系统的clipboard primary ;;(要根据x-select-enable-clipboard ,及x-select-enable-primary的值决定哪个会被改变) 
(setq-default yank-pop-change-selection t) 
;;;Save clipboard strings into kill ring before replacing them 
(setq-default save-interprogram-paste-before-kill t) 
;; make mouse middle-click only paste from primary X11 selection, not clipboard and kill ring. ;;鼠标中键粘贴,只考虑X11中的selection ,不考虑clipboard 和emacs 中的kill-ring 
(global-set-key [mouse-2] 'mouse-yank-primary)
;;其实有了以上几个配置 下面这三个键完全没有必要,但为防万一, ;;将与剪切板相关的三个操作绑到这三个不常用的键上. 
(global-set-key [(shift delete)] 'clipboard-kill-region) 
(global-set-key [(control insert)] 'clipboard-kill-ring-save)
(global-set-key [(shift insert)] 'clipboard-yank) ) )

=============================================================================================
二、set key Bindings

M-x global-set-key <RET> key cmd <RET>
Define key globally to run cmd.       example:   M-x global-set-key <RET> C-z shell <RET>
M-x local-set-key <RET> key cmd <RET>
Define key locally (in the major mode now in effect) to run cmd
M-x global-unset-key <RET> key
Make key undefined in the global map. 
M-x local-unset-key <RET> keyMake key undefined locally (in the major mode now in effect).

============================================================================================

三、Emacs中文输入法切换设置

Emacs中默认Ctrl+Space或Ctrl+@设置选择标记(set-mark). 这对非英语国家用户来说,不太方便。因为Windows下Ctrl+Space切换输入法。而在Emacs中按Ctrl+@又太累(要按Shift呀)。
解决办法是:Emacs中改用Shift+Space设置标记(set-mark)。
把下边这行加入到~/.emacs中:
;;; hzh add for set mark,我用的是prelude,所以这些应该放在prelude-modules.el里
;;; below add by hzh
;;; create a directory named ".emacs-hzh.d" in home dir, and put all your personal
;;; files(or directories) in it, we will add it to load-path. If you hava a theme,
;;; you should make a dir named "themes", and put theme files in it.
 
(defun hzh-add-subfolders-to-load-path (parent-dir)
  "Add all level PARENT-DIR subdirs to the `load-path'."
  (dolist (f (directory-files parent-dir))
    (let ((name (expand-file-name f parent-dir)))
      (when (and (file-directory-p name)
                 (not (equal f ".."))
                 (not (equal f ".")))
        (add-to-list 'load-path name)
        (hzh-add-subfolders-to-load-path name)))))
 
(defun hzh-add-subfolders-to-custom-theme-load-path (parent-dir)
  "Add all level PARENT-DIR subdirs to the `custom-theme-load-path'."
  (dolist (f (directory-files parent-dir))
    (let ((name (expand-file-name f parent-dir)))
      (when (and (file-directory-p name)
                 (not (equal f ".."))
                 (not (equal f ".")))
        (add-to-list 'custom-theme-load-path name)
        (hzh-add-subfolders-to-custom-theme-load-path name)))))
 
(defvar hzh-emacs.d ".emacs-hzh.d")
(defvar hzh-loadpath (expand-file-name hzh-emacs.d (getenv "HOME")))
(defvar hzh-theme-loadpath (expand-file-name "themes" hzh-loadpath))
(hzh-add-subfolders-to-load-path hzh-loadpath)
(add-to-list 'custom-theme-load-path hzh-theme-loadpath)
(hzh-add-subfolders-to-custom-theme-load-path hzh-theme-loadpath)
 
;; hzh add for theme
(disable-theme 'zenburn)
;; (load-theme 'solarized-dark t t)
;; (enable-theme 'solarized-dark)
;; (load-theme 'monokai t t)
;;; (setq molokai-theme-kit t)
(load-theme 'molokai t t)
(enable-theme 'molokai)
 
;;; hzh add for ibus
;;; ibus-el 似乎使用的是python2
(require 'ibus)
(setq ibus-python-shell-command-name "python2.7")
;; Turn on ibus-mode automatically after loading .emacs
(add-hook 'after-init-hook 'ibus-mode-on)
 
;;; hzh add for ibus settings
;; Use C-SPC for Set Mark command
;; (ibus-define-common-key ?\C-\s nil)
;; Use C-/ for Undo command, hzh: ibus will not change Undo
(ibus-define-common-key ?\C-/ nil)
(ibus-define-common-key [?\S- ] nil)
;; Change cursor color depending on IBus status
(setq ibus-cursor-color '("red" "blue" "limegreen"))
(global-unset-key (kbd "C-SPC"))
(global-set-key (kbd "C-SPC") 'ibus-toggle)
 
;;; hzh add for set mark
(global-set-key [?\S- ] 'set-mark-command)
(global-set-key (kbd "M-n") 'set-mark-command)
;(custom-set-variables '(default-input-method "chinese-py"))
 
;;; hzh add for scroll bar
(toggle-scroll-bar -1)
 
;;; hzh add for line number
(global-linum-mode t)
(display-time-mode t)
 
;;; hzh add for goto-line
(global-set-key [f8] 'goto-line)
 
四、Emacs中文输入法切换设置
输入法
没有了中文输入法, Emacs 对於中文使用者一点用处都没有。想要知道您可以使用哪些输入法,您可以键入 C-x RET C-\ SPC ,接著 Emacs 会出现一个所有多国语文的输入法列表窗格。然后您就可以在其中键入您所使用的输入法名称了。下面是作者的作法:(作者使用的是行列输入法,名称为 chinese-array30 。)
 
1. 设定预设的输入法,将下面这一行加入到 ~/.emacs 档案中:
 
(custom-set-variables '(default-input-method "chinese-array30"))
 
这样子在启动 Emacs 后,您就可以直接以 C-\ 指令在英文输入和行列输入法之间切换了。
 
2. 但是有时候用行列打不出来,需要切换成注音输入法。   有两种方式可以达成这个目的:
 
   a. C-x RET C-\ chinese-zozy RET
   b. C-u C-\ chinese-zozy RET
 
作者建议您使用第二种方式,因为它同时也是作为两种输入法间切换的指令。接下来您只要键入 C-u C-\ RET 就可以在行列和注音这两者间作切换了。(注意:中英输入法间的切换还是以 C-\ 指令为之。)
以后我们在不同中文输入法间作切换将可以 C-u C-u C-\ 达成,原本作者是建议以 M-\ 来补足这个想法,但是 M-\ 很不幸已经作为 delete-horizontal-space 指令了。不然 C-\ 搭配 M-\ 不是很漂亮吗?
这样子您应该可以理解如何使用中文输入环境了吧!当然,您必须将行列改为自己喜欢的输入法。
 
如果您找不到自己喜欢的输入法,那么您可以:
 
1. 自己造一个(相关文献在  .../emacs/leim/quail/ 。)
2. 利用现成的输入法档案做出一个
   ( .../emacs/lisp/international/titdic-cnv.el 。)
   只要是 cxterm 的 *.tit 和 xcin 的 *.cin   有提供的输入法都可以。
   但是作法上对於终端使用者而言并不十分“自动”,   因此现阶段可能还是需要志愿者协助进行才有办法。
 
不知道 cxterm 和 xcin 的开发人员是否可以协助提供。(对了, cxterm 的行列输入法有个小臭虫,应该和谁联系?)
 
======================================================================
 
auto completion:
M-/                       (hippie-expand)                        #(global-set-key (kbd "M-/")  'hippie-expand)

Bookmark:
C-x r m RET                              Set the bookmark for the visited file, at point.

C-x r m bookmark RET            Set the bookmark named bookmark at point (bookmark-set).
C-x r b bookmark RET            Jump to the bookmark named bookmark (bookmark-jump).
C-x r l                                        List all bookmarks (list-bookmarks).
M-x bookmark-delete RET bookmark RET                    Delete the bookmark named bookmark.

View Mode:

M-x view-buffer prompts for an existing Emacs buffer, switches to it, and enables View mode. 
Typing e (View-exit) disables View mode.

 Follow Mode:

To use Follow mode, go to a frame with just one window,split it into two side-by-side windows using C-x 3, and then type M-x follow-mode.To turn off Follow mode, type M-x follow-mode a second time.

M-s        (sp-splice-sexp) unwrap the list, example:    (foo (bar| baz) quux) -> (foo bar| baz quux),附加的,与follow mode不相关。
 
Multiple buffers:

C-x b buffer RET                Select or create a buffer named buffer (switch-to-buffer).
C-x C-b RET                        Popup a window to Select buffer (ibuffer). 
C-x 4 b buffer RET            Similar, but select buffer in another window (switch-to-buffer-other-window).
C-x 5 b buffer RET            Similar, but select buffer in a separate frame (switch-to-buffer-other-frame).
C-x LEFT                            Select the previous buffer in the buffer list (previous-buffer).
C-x RIGHT                         Select the next buffer in the buffer list (next-buffer).
C-x k                                  C-x k runs the command ido-kill-buffer
C-x b buffername C-k         kill buffer in background

Multiple windows:
C-x 2                                (split-window-below) Split the selected window into two windows, one above the other
C-x 3                                 (split-window-right)   Split the selected window into two windows, positioned side by side

C-x o                                 Select another window (other-window)     (包含 C-x O: 移动到上一个window,命令为 other-window -1)
C-x 1                                 runs the command delete-other-windows

C-x 4 b bufname RET     Select buffer bufname in another window (switch-to-buffer-other-window)

C-x 4 f filename RET      Visit file filename and select its buffer in another window (find-file-other-window)

C-x 4 r filename RET      Visit file filename read-only, and select its buffer in another window (find-file-read-only-other-window)
C-x 4 d directory RET    Select a Dired buffer for directory directory in another window (dired-other-window)

C-x 4 0                             Delete the selected window and kill the buffer that was showing in it (kill-buffer-and-window)

C-x ^                                 Make selected window taller (enlarge-window)

C-x }                                 Make selected window wider (enlarge-window-horizontally)
C-x {                                 Make selected window narrower (shrink-window-horizontally)
C-x -                                 Shrink this window if its buffer doesn’t need so many lines (shrink-window-if-larger-than-buffer)
C-x +                                 Make all windows the same height (balance-windows)
C-u 10 C-x ^                    Make selected window taller (enlarge-window) with 10 lines(带参数的形式)

Moving by Defuns:

C-M-a                                Move to beginning of current or preceding defun (beginning-of-defun),就是移动到函数头

C-M-e                                 Move to end of current or following defun (end-of-defun),移动到函数尾部
C-M-h                              Put region around whole current or following defun (mark-defun),选择整个函数

Imenu:

M-x imenu                       it reads the name of a definition using the minibuffer, then moves point to that definition.寻找函数定义位置

Indenting Several Lines:

C-M-q                         Reindent all the lines within one parenthetical grouping(c-indent-exp),即在光标移到{上,然后按键

Searching with Grep under Emacs:
M-x lgrep                      异步查找
M-x grep                      在当前目录进行grep,

M-x grep-find                find and grep
M-x find-grep                find and grep
M-x rgrep                      find and grep

M-x kill-grep                    Kill the running grep subprocess

Running Compilations under Emacs:

M-x compile             Run a compiler asynchronously under Emacs, with error messages going to the *compilation* buffer
M-x recompile         Invoke a compiler with the same command as in the last invocation of M-x compile 
M-x kill-compilation    Kill the running compilation subprocess

If you change the variable compilation-auto-jump-to-first-error to a non-nil value, Emacs automatically visits the locus of the first error message that appears in the *compilation* buffer. 

Running Debuggers Under Emacs:

The GUD (Grand Unified Debugger) library provides an Emacs interface to a wide variety of symbolic debuggers. It can run the GNU Debugger (GDB), as well as DBX, SDB, XDB, Perl’s debugging mode, the Python debugger PDB, and the Java Debugger JDB.
M-x gdb        
M-x gdb-many-windows             works after M-x gdb

C-x SPC                                        Set a breakpoint on the source line that point is on (gud-break), 必须在gdb minor模式用
(附注: gdb 里设置LD_LIBRARY_PATH的方法:   set  environment  LD_LIBRARY_PATH  ****)
(gdb>  set args xxx   #給執行程式參數xxx,必须在run之前;   或者 gdb>  run param1 param2 param3)
(gdb> ptype ***valuavle)    # print out the definition of a struct or class
(gdb> print *(struct mystruct *)  0x8002bf20) #可以pretty打印某个struct的内容

Dired, the Directory Editor:
Dired makes an Emacs buffer containing a listing of a directory, and optionally some of its subdirectories as well. You can use the normal Emacs commands to move around in this buffer, and special Dired commands to operate on the listed files.
C-x C-d         (list-directory) list files in a directory, but it is not Dired
C-x d             (dired) invoke Dired

Reading Mail with Rmail:

emacs 操作集锦的更多相关文章

  1. Eclipse for Java EE软件操作集锦(二)

    看本文章之前请确保已经了解eclipse建立web工程,如果有疑问请查看本系列文章第一篇 eclipse软件操作集锦(一) 1.我们添加一个servlet 配置一下web.xml测试一下是否能正常显示 ...

  2. delphi关于文件操作集锦

        关于文件操作集锦 取得该快捷方式的指向EXE关键词:快捷方式 LNK unit Unit1; interface usesWindows, Messages, SysUtils, Varian ...

  3. Eclipse for Java EE软件操作集锦(一)

    以下是我在Java网站开发过程中,关于软件操作Eclipse中,遇到的一些问题并提供了解决方案.一.java web开发使用的集成开发工具是eclipse for Java EE 官方下载地址:htt ...

  4. php数组操作集锦- 掌握了数组操作, 也就掌握了php

    参考下面的文章, 是很好的: http://www.cnblogs.com/staven/p/5142515.html http://pcwanli.blog.163.com/blog/static/ ...

  5. php字符串操作集锦

    web操作, 主要就是对字符文本信息进行处理, 所以, 字符串操作几乎占了很大一部分的php操作.包括 注意strstr 和 strtr的区别? 前者表示字符串查找返回字符串,后者表示字符串中字符替换 ...

  6. XML文档操作集锦(C#篇)

    在JSON没流行起来的时候xml一直作为程序存储配置信息的主流介质:特别是小型数据表方面还是不错的选择,所以经常涉及到的操作无非也就是增删改查,这篇博客主要是对这些对比较常用的操作做了个简单的总结 文 ...

  7. Microsoft Dynamics CRM 2011/2013 JS操作集锦

    1.Xrm.Page.context用户ID:getUserId()用户角色:getUserRoles()用户语言:getUserLcid()组织名称:getOrgUniqueName()组织语言:g ...

  8. sql语句操作集锦

    SQL操作全集 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT ...

  9. Microsoft Dynamics CRM 2011 JS操作集锦

    1.Xrm.Page.context 用户ID:getUserId() 用户角色:getUserRoles() 用户语言:getUserLcid() 组织名称:getOrgUniqueName() 组 ...

随机推荐

  1. java I/O总结

    IO是非常重要的一块,但通常又被人们所忽视,这里希望能有个很清晰的介绍.自己学习的同时希望能够给别人带来一些帮助,对文章中用到其他作者(已经给出了链接)的图片在这里表示感谢! IO的分类 java I ...

  2. Spring的注解方式

    在Java代码中可以使用@Resource或者@Autowired注解方式来经行注入.虽然@Resource和@Autowired都可以来完成注入依赖,但它们之间是有区别的. a.@Resource默 ...

  3. UVa 340 Master-Mind Hints

    蛋疼的题目描述,看了好长好长时间才看懂,题目本身是很简单的. Designer给出一串长度为N的Code,Breaker用Guess来破译. 对于两串数字,如果有同一列相等的数字,那么叫做strong ...

  4. asp.net限时发送手机验证码

    html代码 <p> <strong>手机验证码:</strong> <asp:TextBox ID="code" runat=" ...

  5. iPad中控制器view的width和height

    一.iPad中控制器view的width和height 1> 规律 * width 是宽高中最小的那个值 * height 是宽高中最大的那个值 2> 举例(比如窗口根控制器的view,有 ...

  6. 用canvas实现图片滤镜效果

    1.灰度效果 图片过滤效果之灰度效果 算法及原理: .299 * r + .587 * g + .114 * b; 2.油画效果 算法及原理: 用当前点四周一定范围内任意一点的颜色来替代当前点颜色,最 ...

  7. 点分十进制IP校验、转换,掩码校验

    /***************************************************************************** * 点分十进制IP校验.转换,掩码校验 * ...

  8. 09day2

    多米诺骨牌 递推+高精度 [问题描述] Jzabc 对多米诺骨牌有很大兴趣,然而他的骨牌比较特别,只有黑色的和白色的两种.他觉得如果存在连续三个骨牌是同一种颜色,那么这个骨牌排列便是不美观的.现在他有 ...

  9. (六) 6.2 Neurons Networks Backpropagation Algorithm

    今天得主题是BP算法.大规模的神经网络可以使用batch gradient descent算法求解,也可以使用 stochastic gradient descent 算法,求解的关键问题在于求得每层 ...

  10. 【英语】Bingo口语笔记(54) - how to date a foreigner