emacs 常用命令

申屠飞
2023-12-01

一.启动与退出:

开启.#emacs
退出:
C-x C-c: 退出emacs

二. 光标的移动:
M-a: 光标移动到当前句子的句首。
M-e: 光标移动到当前句子的句尾。
C-v: 光标移动到下一屏。
M-v:光标移动到上一屏。

三.删除与拷贝:
C-k : 删至行尾 (kill) 
M-k : 删到一句子结尾(删到句点) (kill) 
C-x u: Undo
C-y : 将粘贴板中的内容拷贝到当前光标位置。
C-x C-o: 将连续的多个空行合并成一个。

删除一个文本区域:
1. 把光标移动到区域的首字符
2. 键入C-@(即ctrl+shift+2),以设置标记
3. 把光标移动到区域的第一个字符(注意这必须是移动光标,而不能通过移动上下键来选定某个地方)
4.键入C-w,删除这个选定区域

如果在这个过程中忘记了区域的开始处,则用C-x C-x (两次C-x)来切换光标位置和标记位置。
Emacs在内部维持着一个记录着最近30次删除操作的环形队列。


复制一个文本区域到另一个地方:
1. 把光标移动到区域的首字符
2. 键入C-@(即ctrl+shift+2),以设置标记
3. 把光标移动到区域的第一个字符(注意这必须是移动光标,而不能通过移动上下键来选定某个地方)
4.键入M-w,拷贝这个选定区域到粘贴板
5. 用光标定位将要粘贴内容的地方,然后键入C-y ,拷贝成功。

如果删除错误,可以通过命令C-x u (Undo的意思)来取消先前的修改操作。

四. 查找和替换:
C-s : 激活emacs的查找工具,默认情况下查找与大小写无关的向前查找方式。
          文本中符合查找的项均变颜色,此时可以用C-s,向前查看符合查询条件的语句,也可以C-r,向后查看符合查询条件的语句。

注意:要修改查询与大小写相关,必须修改~/.emacs文件,我好像没看见我的机器里有这个文件。

emacs支持正则字符串的匹配式查找。这个还未研究。
查找-替换:

1. 键入M-%(alt+shift+ 5 )
2. 键入查找字符串,回车
3. 键入替换字符串,回车
4. SPACE或y    表示替换当前字符串并移动到下一个匹配串
    Del或n          表示不替换当前字符串,直接移动到下一个匹配串
    !                 进行全局替换,并要求不再提示
      .                  替换当前字符串,然后退出查找,替换操作
       M-或q    退出查找-替换操作
      ^                 退到上一匹配位置
     C-x r            开始递归编辑 M-C c退出递归编辑

五. 保存和打开文件
C-x C-s :保存文件
C-x C-w:另存文件

六: 多窗口
切分窗口:
C-x 2 : 将屏幕水平切分成2部分
C-x 3 : 将屏幕垂直切分成2部分

切换窗口:
C-x o : 移动到其他窗口

删除窗口:
C-x 0 : 删除当前窗口
C-x 1 : 删除当前窗口外的所有窗口

在当前窗口打开另外一个文件:
C-x C-f    : 在当前窗口打开另外一个文件,文件名在缓冲区中输入。
C-x 4 C-f : 在其他窗口打开另外一个文件,文件名在缓冲区中输入。 

创建新的框架:(即打开另外一个emacs的框架)
C-x 5 2 : 为同一个buffer创建一个新的框架
C-x 5 f : 创建一个新的框架,并且在其中打开一个新的文件
C-x 5 0 : 关闭当前框架

注意,不要用C-x C-c来关闭一个框架,因为这个命令将会关闭所有的框架,而不仅是当前框架,然后退出emacs。

七. 取消命令的执行
C-g : 取消命令的执行
emacs中etags的使用方法:

使用etags *.[ch] 就在当前目录中生成TAGS文件
在emacs中,把光标移动到函数名上 输入M . 就能跳到相应的函数定义处. 第一此使用时, emacs会询问TAGS文件的存放位置 缺省在当前目录下。输入M * 就能返回刚才的函数名处。输入切换到下一个tag上。

很好用。跟在vim下使用tags一样方便
tags的相关命令:
M-. : 
M-* :
M-/ : 自动补齐

emacs还可以实现程序变量 得自动对齐功能。要达到这样的效果

int main() {
int aa;
unsigned int bb;
double cc;
}

选择区域,让后M-x align即可

=========================
常用命令 
                         C-v 向上翻页 
                         C-p 向上一行 
    C-b 向左一个字符                        C-f 向右一个字符 
    M-b 向左一个单词                        M-f 向右一个单词 
    C-a 移到行首                            C-e 移到行尾 
    M-a 移到句首                            M-e 移到句尾 
    M-< 移到文字最开始               M-> 移到文字最末尾 
    Backspace 删除光标前字符                 C-d 删除光标后字符 
    M-Backspace 删除光标前字                 M-d 删除光标后字 
                                   C-k 删除光标到行尾的字符 
                                   M-k 删除光标到句尾的字符 
                        C-n 向下一行 
                        M-v 向下翻页 

    C-u 8 C-f     向右移动 8 个字符,其中 8 和 C-f 都可以换成其它。 
    C-u 8 C-v     向上卷动 8 行(而不是 8 屏)。 
    C-u 8 *        键入 8 个 * 。 

    C-@ 移动光标 C-w     剪切/删除两次光标之间的文字 
    C-@ 移动光标 M-w     复制 
    C-k            删掉一行 
    C-y            yank 粘贴/把删掉的拉回来 
    M-y            把过去删掉的拉回来 

    C-x u 
    C-_    回退,Undo。 
    C-/ 

    C-x C-c        退出 
    C-x C-f     打开文件。 
    C-x C-s     保存文件。 
    C-x C-b        列出缓冲区。 
    C-x b         回到某缓冲区。 
    C-x s        以提示方式存储每一个缓冲区。 
    C-x k        关闭缓冲区 

    C-x C-q        把文件设成只读,再按一遍设回去。 

    C-x f        设置每行字数。比如 C-u 20 C-x f 将每行字数设为 20。 

    C-M-/        缩进一个区域 

    C-s        查找字符串。继续 C-s 搜索下一个;Backspace 搜索上一个;回车结束搜索。 
    C-r 
    C-s C-w        查找当前光标处的字符串 

    M-%        开始查找替换 
    M-x replace-string (可以用M-x repl[空格]s[TAB]键入) 
            字符串替换 

    M-x recover-file 
            恢复自动保存的文件 

    M-x fundamental-mode    撇号(')在此模式下被视为字的分隔符号 
    M-x text-mode        撇号(')在此模式下被视为字的一部分 
            切换到不同模式 
    C-h m        看当前模式的描述 

    M-;        插入注释 
    M+x comment-region: 块注释:
    M+x uncomment-region: 取消块注释

    C-g         停止执行过久的命令;取消数字参数;取消一个不想完成的命令。 

    C-x 1        除去其余窗格,只剩一个。 
    C-x 2        将屏幕平分为两个窗格 
        C-M-v        卷动下方的窗格 
        C-x o        将光标在两个窗格之间切换 
    C-x 4 C-f    在另外一个窗格里打开新文件 

    C-h        帮助 
    C-h c [命令]    得到命令的帮助 
    C-h k [命令]    得到命令的详细帮助 
    C-h a         命令查找 
    C-h i        阅读在线手册 

    Esc !        执行 Shell 命令 
    C-u Esc !    将 shell 指令执行的结果,输出到游标所在的位置。 

    C-x Esc Esc    查找命令历史 

    C-M-p        括号匹配 
    C-M-n        括号匹配 

    在左上角按 C-@ 然后在右下角按下列键,可完成矩形操作 
    C-x r k        剪切一个矩形块 
    C-x r y        粘贴一个矩形块 
    C-x r o        插入一个矩形块 
    C-x r c        清除一个矩形块内的内容(使之变成空白) 

    M-x dired    进入 directory edit 模式 
    C-x d        DITTO 
        dired模式下的操作 
            m 将文件打上标记。 
            d 将文件打上删除标记。 
            u 去除文件的标记。 
            D 立即删除文件。 
            x 删除标有删除标记的文件。 
            ~ 将所有的备份文件打上删除标记,我最喜欢的一个功能。 
            # 将所有的文件名以“#”开头的文件打上删除标记。 
            o 将文件在另外一下窗口打开,回车是在当前窗口打开,C-o是在另外一个窗口打开但是不激活它。 
            ! 或者X对当前的文件的操作,比如要用xpdf打开一个pdf文件,则可以! xpdf在一个文件上即可。 
              但是如果有mark的文件,则命令作用于mark的文件。在dired-x模式下可以猜要执行的命令。 
            X 功能同!。 
            g 如果外部的操作改变了文件,并不能直接反映到dired-mode中, 
              比如在外部删除了一个文件,用这个命令升级一下当前的dired buffer。 
            ^ 到上一层目录 
            + 创建文件夹 

            C copy 
            R rename 
            M chmod 
            G chgrp 
            O chown 
            P print 
            Z compress/uncompress 

            i      将光标所在行的目录内容显示在当前buffer中 
            C-u k 把光标放在子目录的header上按此组合,将会把子目录内容从当前buffer移除 

            * s 给当前所有文件打标记 
            * ! 取消当前所有的标记 
            * / 给当前所有文件夹打标记 
            * * 给当前所有可执行文件打上标记 
            * t 反选(有*的变没,没*的变有) 
    不同模式 
        大纲模式 
            M-x outline-mode 大纲模式 
                C-c C-r    全部折叠 
                C-c C-a    全部展开 
                C-c C-d    把当前主题折叠 
                C-c C-s    把当前主题展开 
                M-m    光标移动到第一个非空字符 

 类似资料: