為什么不用IDE?因為在服務器上直接寫程序,不可能用IDE,雖然現(xiàn)在的IDE有遠程同步代碼的功能和遠程調(diào)試功能,可惜,在很多大牛的手中,用IDE反而更慢,而且對IDE一旦形成依賴,對以后的編程能力也會有影響,想真正地學習編碼和稱為大牛,有些彎路必須要走的,除非是寫IDE的程序(安卓app等等,那些就沒辦法了)。
那么VIM跟EMACS兩者為什么選擇EMACS呢?公司的人全都是用VIM的,我一開始也是用VIM,用VIM寫程序也的確很快,EMACS的快捷鍵很多,經(jīng)常記不住。對于EMCAS的著迷是LISP語言,學完可以自己寫腳本同是也能提高自己水平,并不是為了在公司的人面前裝逼(才剛剛入門emacs也裝不了逼,公司大牛們的vim玩得超級6的)而且發(fā)現(xiàn)瀏覽器里面的一些操作跟EMACS很相似,換行什么的,現(xiàn)在在瀏覽器上寫東西也不需要鼠標了。EMACS的學習曲線真的就想網(wǎng)上看到的那個圖片一樣,學習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 把某個文件的所有內(nèi)容插入到光標之后
C+u <number> <command>/<word> 重復number次的命令或者單詞刪除
C+d delete光標后面的一個字母
C+k kill 光標后面到句末的所有字符
M+d delete光標后面的一個單詞
M+k kill光標后面的一個句子(到句號為一句話)
C+y 從kill的緩沖區(qū)的棧頂粘貼
M+y 切換kill緩沖區(qū)的棧頂?shù)膬?nèi)容(一個循環(huán))
文件
C+c ctrl+f打開新文件
C+c b 打開在buffer的文件
C+c C+b 查看buffer
C+x C+f <filename> 新建一個文件
C+x 4 C+f 在新的窗口打開文件緩沖區(qū)
C+x b 在當前的窗口打開一個在buffer的文件
C+x C+b 在新的窗口查看buffer的內(nèi)容,在buffer列表里面,可以直接用n p 來做換行而不需要用C+n 和 C+p,在buffer列表里面,按o在上面的窗口打開文件,按<return>在當前的buffer列表窗口打開文件
C+x k 關閉當前文件,從buffer區(qū)刪去查找
C+s 向下查找
C+r 向上查找
M+c 切換對大小寫是否敏感
M+e 重新編輯要查找的內(nèi)容
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為前綴的所有指令的發(fā)用(可以用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模式,可以選擇區(qū)域塊
C+x SPACE 切換set-mark模式,不同的是選擇的區(qū)域塊是矩形的
C+x r t 用字符串替換選中的區(qū)域
C+x r d 刪除區(qū)域(不留空格)
C+x r C 刪除區(qū)域(在原來的位置保留為空)
C+x r k 復制并刪除區(qū)域(可以用C+w / M+w)
C+x r y 粘貼用C+x r k 刪除的區(qū)域塊
C+x r o 在這塊區(qū)域插入空白的方格(選擇的區(qū)域有多大就在前面補多少個空格)
C+x r r 將選定的矩形區(qū)域復制到某個寄存器,在輸入這組鍵后命令欄會等待你輸入寄存器號,這時隨便輸入一個數(shù)字即可,不過的記得它,因為待會兒粘貼的時候還得用到這個寄存器號(相當于放在一個緩存里面,可以隨時用來復制粘貼而已)
C-x r i 插入寄存器的內(nèi)容,輸入此鍵后再輸入寄存器號可將寄存器中的內(nèi)容插入到當前區(qū)域。
- 一些比較常用的指令
M+x rgrep 遞歸搜索,搜索包含某個字符串文件,非常常用,找不到相應文件的時候就能用到