M-f 前进一个单词
M-b 后退一个单词
C-a 行首
C-e 行尾
M-a 句首
M-e 句尾
M-{ 上一个段落
M-} 下一个段落
C-v 屏幕上卷一个屏
M-v 屏幕下卷一个屏
C-M-v 另一个窗口下卷一个屏幕
C-M-V 另一个窗口上卷一个屏幕
M-< 文件头
M-> 文件尾
C-M-p 光标在'{'上,向上移1个大括号
C-M-n 光标在'}'后,向下移1个大括号
C-M-e 移动到函数尾
C-L 光标所在位置会显示于屏幕/窗格的中央。
M-g-g 跳到指定行
删除命令:
C-d 删除光标上的字符
C-a C-k 删除光标所在行
M-d 删除光标后的单词
M-DEL 删除光标前的单词
C-k 从光标位置删除到行尾
C-S-Backspace 删除当前行
C-g 取消当前要执行的命令
C-x u 恢复更新
C-S-backspace 删除当前行
C-Backspace 删除单词(光标前)
自动对齐:
复制,剪切:
首先,需要选择想要复制的文本。第一步,标记区域头。假定您的光标已经位于行首,这时按下 Ctrl+ 空格。Emacs 将在小缓冲区提示 Mark set。然后,按Ctrl+a 移动到行首。从标记一直到光标当前位置之间的区域已被选中用于复制或剪切。然后,可以有两种方式:Alt+w (复制) 或者 Ctrl+w (剪切)。
最后,移动到您想要这段文本结束的地方并按下 Ctrl+y。
C-c w 复制行 (向.emacs加入如下代码生效)
;; Function to copy lines
;; "C-c w" copy one line, "C-u 5 C-c w" copy 5 lines
(defun copy-lines(&optional arg)
(interactive "p")
(save-excursion
(beginning-of-line)
(set-mark (point))
(if arg
(next-line (- arg 1)))
(end-of-line)
(kill-ring-save (mark) (point))
)
)
;; set key
(global-set-key (kbd "C-c w") 'copy-lines)
替换列:
用 rectangle, 用 C-x + 空格 选中区域
C-x r k 删除选中列
C-x r t string 替换选中列 string
自动补齐:
M-/
前提:
Emacs 自带的hippie-expand
hippie-expand是 Emacs 自带的功能,
把M-/ 绑定到 hippie-expand,在.emacs文件中加入
;;绑定按键
(global-set-key [(meta ?/)] 'hippie-expand)
hippie-expand 的补全方式。它是一个优先列表, hippie-expand 会优先使用表最前面的函数来补全。通常的设置是:
(setq hippie-expand-try-functions-list
'(try-expand-dabbrev
try-expand-dabbrev-visible
try-expand-dabbrev-all-buffers
try-expand-dabbrev-from-kill
try-complete-file-name-partially
try-complete-file-name
try-expand-all-abbrevs
try-expand-list
try-expand-line
try-complete-lisp-symbol-partially
try-complete-lisp-symbol))
首先使用当前的buffer补全,如果找不到,就到别的可见的窗口里寻找,
如果还找不到,那么到所有打开的buffer去找,如果还……那么到kill-ring里,
到文件名,到简称列表里,到list,…… 当前使用的匹配方式会在 echo 区域
显示.
确实是非常好用,基本上我M-/就能到达我想要的了.
查找:
C-s C-w 选中, 跳下一个C-s, 跳上一个C-r
全局替换:
首先键入 M-x 命令进入编辑器的小缓冲区,然后键入 replace-string 命令,编辑器提示用户输入要查找的字符串及要替换的字符串。 replace-string 命令不能实现正则表达式的替换,如果要使用正则表达式,必须使用 replace-regexp 命令。
查找替换:
C-space 圈中要替换的内容
M+% + 被替换的字符 + 替换成的字符 + !
其操作步骤如下:
M-% (然后会出现Query replace的字样)
Query replace:<被替换字符串>
Query replace <被替换字符串> with:<替换字符串>
Query replacing <被替换字符串> with <替换字符串>:(? for help)
查询替换命令的选项如下:
y 或者 空格 键 替换搜索到的字符串
n 或者 Del 键 取消替换搜索到的字符串
^ 回到前一个搜索到的字符串
! 替换所有没有替换的与模式匹配的字符串
ESC 键 退出本次查询搜索
与其他查找命令一样,查询搜索命令不允许在输入的查找字符串中使用特殊字符。但如果想使用特殊字符,可以使用 query-replace-regexp 命令,要运行该命令,必须首先键入 M-x 命令进入编辑器的小缓冲区中。
置换:
C-t 字符置换
M-t 字置换
C-x C-t 行置换
C-M-t 表达式置换
大小写:
M-u 将一个字设置为大写
M-l 将一个字设置为小写
M-c 将一个字首字母设置为大写
C-x C-u 将一个区域设置为大写
C-x C-l 将一个区域设置为小写
窗口切换:
C-x 0 : 关闭当前窗口
C-x 1 : 将当前窗口最大化
C-x 2 : 垂直分割窗口
C-x 3 : 水平分割窗口
M-o (redefined) : 在窗口之间切换; C-x o 是默认命令
C-x 5 1/2/3/0 : 对frame类似的操作
C-x < : 窗口内容右卷
C-x > : 窗口内容左卷(这两个命令在垂直分割窗口后比较有用)
(C-u) C-x ^ : 加高当前窗口,如果有C-u,则每次加高4行
(C-u) C-x } : 加宽当前窗口
(C-u) C-x { : 压窄当前窗口
ESC C-v : 在其它窗口进行卷屏操作
重复次数:
C-u + 次数 + 命令
举例来说, C-u 8 C-f 向前移动 8 个字符。
M-! cmd:打开一个名为“*Shell Command Output*“的窗口,并把该命令的执行结果显示在其中。按下”C-x 1“组合键可以关闭这个窗口。由于Shell命令的输出是在一个编辑缓冲区里,因此我们可以对它进行编辑、保存等操作。
M-| cmd:运行Shell命令,并使用编辑窗口中选定的区域作为该Shell命令的输入,然后可以选择是否用该Shell命令的输出来替换编辑窗口中选中的区域。
C-u M-! cmd RET:执行一条Shell命令,并将其输出放到编辑区中光标所在的位置处,而不将其输出到”Shell Command Output“窗口。
M-x shell:运行一个子Shell,该子Shell对应于emacs中的一个名为”*Shell*"的缓冲区,此后,我们就可以交互式的运行Shell命令了。
M-x term:运行一个子Shell,该子Shell对应于emacs中的一个名为“*Terminal*”的缓冲区。使用该命令获得的子Shell是一个完整的Shell的模拟,与我们直接在Shell中操作没有什么差别。
M-x eshell:运行emacs shell。该Shell为emacs自己实现的一个shell,而前面运行的shell都为系统中的shell程序(例如:/bin/csh等)。我们可以通过设置变量shell-file-name来设置emacs所使用的默认shell。
http://blog.csdn.net/wild_horse/archive/2008/07/29/2731595.aspx