emacs基础操作

为什么不用IDE?因为在服务器上直接写程序,不可能用IDE,虽然现在的IDE有远程同步代码的功能和远程调试功能,可惜,在很多大牛的手中,用IDE反而更慢,而且对IDE一旦形成依赖,对以后的编程能力也会有影响,想真正地学习编码和称为大牛,有些弯路必须要走的,除非是写IDE的程序(安卓app等等,那些就没办法了)。

那么VIM跟EMACS两者为什么选择EMACS呢?公司的人全都是用VIM的,我一开始也是用VIM,用VIM写程序也的确很快,EMACS的快捷键很多,经常记不住。对于EMCAS的着迷是LISP语言,学完可以自己写脚本同是也能提高自己水平,并不是为了在公司的人面前装逼(才刚刚入门emacs也装不了逼,公司大牛们的vim玩得超级6的)而且发现浏览器里面的一些操作跟EMACS很相似,换行什么的,现在在浏览器上写东西也不需要鼠标了。EMACS的学习曲线真的就想网上看到的那个图片一样,学习EMACS有时候给你糖吃,也有时候给你挖坑,路漫漫兮。

一些关于在emacs tutorial里面讲到的操作,简易版。

  • 移动
    C+n next line
    C+p previous line
    C+f foward a character
    M+f foward a word
    C+b back a character
    M+b back a word
    C+v next page
    C+M+V 滚动副屏
    C+l 光标在中间/底部 / 顶部
    M+v previous page
    M+< 到文本头
    M+> 到文本尾
    C+x u 或者 ctrl + /撤销
    C+g 取消命令

  • 添加
    C+o 在光标后面添加一个空行,光标保留在原来的位置
    C+j 在光标后面添加一个空行,光标在新的一行的位置
    C+x i 把某个文件的所有内容插入到光标之后
    C+u / 重复number次的命令或者单词

  • 删除
    C+d delete光标后面的一个字母
    C+k kill 光标后面到句末的所有字符
    M+d delete光标后面的一个单词
    M+k kill光标后面的一个句子(到句号为一句话)
    C+y 从kill的缓冲区的栈顶粘贴
    M+y 切换kill缓冲区的栈顶的内容(一个循环)

  • 文件
    C+c ctrl+f打开新文件
    C+c b 打开在buffer的文件
    C+c C+b 查看buffer
    C+x C+f 新建一个文件
    C+x 4 C+f 在新的窗口打开文件

  • 缓冲区
    C+x b 在当前的窗口打开一个在buffer的文件
    C+x C+b 在新的窗口查看buffer的内容,在buffer列表里面,可以直接用n p 来做换行而不需要用C+n 和 C+p,在buffer列表里面,按o在上面的窗口打开文件,按在当前的buffer列表窗口打开文件
    C+x k 关闭当前文件,从buffer区删去

  • 查找
    C+s 向下查找
    C+r 向上查找
    M+c 切换对大小写是否敏感
    M+e 重新编辑要查找的内容
    M+x occur 使用正则表达式搜索,并新建一个窗口(buffer)显示
    M-x rgrep 快速的递归文本检索(recursive grep search)
    M+x grep 在当前目录中查找制定的regrep

  • 窗口
按键 命令 作用
C-x 2 split-window-vertically 垂直拆分窗口
C-x 3 split-window-horizontally 水平拆分窗口
C-x o other-window 选择下一个窗口
C-M-v scroll-other-window 滚动下一个窗口
C-x 4 b switch-to-buffer-other-window 在另一个窗口打开缓冲
C-x 4 C-o display-buffer 在另一个窗口打开缓冲,但不选中
C-x 4 f find-file-other-window 在另一个窗口打开文件
C-x 4 d dired-other-window 在另一个窗口打开文件夹
C-x 4 m mail-other-window 在另一个窗口写邮件
C-x 4 r find-file-read-only-other-window 在另一个窗口以只读方式打开文件
C-x 0 delete-window 关闭当前窗口
C-x 1 delete-other-windows 关闭其它窗口
C-x 4 0 kill-buffer-and-window 关闭当前窗口和缓冲
C-x ^ enlarge-window 增高当前窗口
C-x { shrink-window-horizontally 将当前窗口变窄
C-x } enlarge-window-horizontally 将当前窗口变宽
C-x - shrink-window-if-larger-than-buffer 如果窗口比缓冲大就缩小
C-x + balance-windows 所有窗口一样高
  • 帮助
    C+h t 打开emacs simple tutorial
    C+h ? 提示C-h为前缀的所有指令的发用(可以用M-x help 来获取帮助)
    C+ ?提示C-指令为前缀的所有用法
    C+h c 查找你需要的快捷键的帮助
    C+h k 打开某个命令的帮助文件
    C+h f 返回关于某个指令的信息
  • 折叠
    M-1 C-x $ 折叠所有
    C-x $ 展开所有

  • 文本块操作
    C+w删除并复制文本块
    M+w复制文本块
    C+x SPACE 进入set-mark模式,可以选择区域块
    C+x SPACE 切换set-mark模式,不同的是选择的区域块是矩形的
    C+x r t 用字符串替换选中的区域
    C+x r d 删除区域(不留空格)
    C+x r C 删除区域(在原来的位置保留为空)
    C+x r k 复制并删除区域(可以用C+w / M+w)
    C+x r y 粘贴用C+x r k 删除的区域块
    C+x r o 在这块区域插入空白的方格(选择的区域有多大就在前面补多少个空格)
    C+x r r 将选定的矩形区域复制到某个寄存器,在输入这组键后命令栏会等待你输入寄存器号,这时随便输入一个数字即可,不过的记得它,因为待会儿粘贴的时候还得用到这个寄存器号(相当于放在一个缓存里面,可以随时用来复制粘贴而已)
    C-x r i 插入寄存器的内容,输入此键后再输入寄存器号可将寄存器中的内容插入到当前区域。

  • 一些比较常用的指令
    M+x rgrep 递归搜索,搜索包含某个字符串文件,非常常用,找不到相应文件的时候就能用到

你可能感兴趣的:(emacs基础操作)