为什么不用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> <command>/<word> 重复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 <filename> 新建一个文件
C+x 4 C+f 在新的窗口打开文件缓冲区
C+x b 在当前的窗口打开一个在buffer的文件
C+x C+b 在新的窗口查看buffer的内容,在buffer列表里面,可以直接用n p 来做换行而不需要用C+n 和 C+p,在buffer列表里面,按o在上面的窗口打开文件,按<return>在当前的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 <Return>来获取帮助)
C+<character> ?提示C-<character>指令为前缀的所有用法
C+h c <command> 查找你需要的快捷键的帮助
C+h k <command> 打开某个命令的帮助文件
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 递归搜索,搜索包含某个字符串文件,非常常用,找不到相应文件的时候就能用到