歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

Linux下Erlang+Emacs環境的搭建

環境:CentOS 5.3 32位
安裝包: otp_src_R14A.tar.gz , otp_doc_man_R14A.tar.gz 下載地址( http://www.erlang.org/download.html)
  emacs-common-21.4-20.el5
  emacs-nox-21.4-20.el5
一:包的安裝
// 直接用yum 安裝emacs
# yum install emacs-nox  //這樣會將相關聯的emacs-coomon包也安裝上

# mkdir /usr/src/download
# cd /usr/src/download
將 otp_src_R14A.tar.gz , otp_doc_man_R14A.tar.gz 這二個包放在此目錄
# gunzip -c otp_src_R14A.tar.gz | tar xfp -  解壓目錄
# cd otp_src_R14A
# ./configure --prefix=/usr/local/erlang
# make && make install

// 在configure的過程中可能會提示缺少包 curses 解決方法是安裝 ncurses-devel

yum install ncurses-deve 
// 安裝好測試
# ln -s /usr/local/erlang/bin/erl /usr/local/bin/erl
# erl
Erlang R14A (erts-5.8) [source] [rq:1] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.8  (abort with ^G)
1> io:format("Hello World!\n").
Hello World!
ok
2>

二 配置Emacs與erlang結合
find / -name '.emacs'
// 將.emacs 文件copy 到 ~/ 目錄下
cp /etc/skel/.emacs ~/
// 編輯 ~/.emacs 文件
在最後添加
(add-to-list 'load-path "/usr/local/erlang/lib/erlang/lib/tools-2.6.6/emacs")
(require 'erlang-start)

(add-to-list 'auto-mode-alist '("\\.erl?$" . erlang-mode))
(add-to-list 'auto-mode-alist '("\\.hrl?$" . erlang-mode))

(setq erlang-root-dir "/usr/local/erlang")
(add-to-list 'exec-path "/usr/local/erlang/bin")
(setq erlang-man-root-dir "/usr/local/erlang/man")  //解壓縮文件 otp_doc_man_R14A.tar.gz 將釋放出 的man 文件 對應放到這個目錄下
保存
這樣emacs 已經支持erlang mode了

三 :進入erlang工作環境
// 啟動 emacs
# emacs
輸入 M-x erlang-mode 切換到erlang模式

四 : Emacs 常用命令  ( 原文地址:http://publishblog.blogchina.com/blog/tb.b?diaryID=1960863)

常用的命令如下(注意emacs的習慣,C-x 表示同時按住Ctrl和x,M-x表示先按Esc再按x,C-x v l表示同時按住Ctrl和x後,松開Ctrl再分別按v和l,C-x C-f表示按住Ctrl同是分別按x和f,命令說明是大小寫敏感的):
  1) Buffer相關。emacs可以同時打開多個文件,每一個文件是一個buffer。
  在X下可以用C-mouse1來選擇當前活動哪個buffer
  C-x C-b  可以得到一個buffer列表並從中選擇哪個buffer打開
  C-x C-f  打開一個文件
  C-x i  在打開的buffer中插入一個文件內容
  C-x k  關閉當前buffer中的文件
  C-x C-s  保存當前buffer
  C-x C-w 另存為
  C-x s  保存所有buffer
  2) 屏幕分割相關,emacs可以在同一個窗口中看到多個buffer。
  C-x 2  垂直分割當前子窗口
  C-x 3 水平分割當前子窗口
  C-x 1 當前窗口獨占窗口空間
  C-x o 活動子窗口切換到另外一個子窗口
  3)編輯相關
  插入/覆蓋模式切換
  M-x overwrite-mode是用來轉換 insert mode 與 overwrite mode

  重復操作:數值引數適用於所有 EMACS 的指令。它的用途可分成 以下數類:
  • 對某一指令做重復執行的動作
  • 用法: C-u n command 或 M- n command

  如:C-u 4 r 在buffer中輸入4個r
      C-u 4 C-u 5 在buffer中輸入4個5(重復輸入數字要注意有兩個C-u)

  刪除-deletion
  C-d 向後刪除一個字元
  刪除-killing(剪切)
  在 EMACS 中所謂的 killing 是指將文件從目前的緩沖區移到一個稱為kill-ring kill-ring為一個變數的地方去。文件在緩沖區中是消失了, 但卻儲存在 kill-ring ,variable這一個變數中。 EMACS 可以有許多的緩沖區,但卻只有一個 kill-ring 的儲存變數。 也就是說,多個緩沖區彼此共享一個 kill-ring,而且也只有一個 kill-ring。 EMACS 所設計共享的 killing-ring 的用意是讓被遺棄的文件可以找回,而且各緩沖區彼此也可借由killing-ring 來建立一個互通的管道。所謂的互通就是把甲緩沖區的東西給乙,反之,也可把乙緩沖區的東西給甲。此模式在 EMACS 中就是透過 killing-ring 來完成。 因此,想從甲緩沖區中得到某些文件給乙緩沖區,只要將甲緩沖區的文件放入 kill-ring 中,乙緩沖區就可以至此共享的 kill-ring 中將文件取出。如此一來,就可以共享資了。要查看kill-ring中的內容,1. 鍵入 ``Ctrl-h v'' 後, echo area 處會出現:2. 在Describevariable:後輸入變數的名稱, EMACS 會另開一個視窗來顯示此變數的值。此時所要鍵入的變數名為 ``kill-ring''
  C-k 刪除(剪切)一行
  C-x C-o 刪除(剪切)光標所在位置後面的空白行

  拷貝與粘貼
  區域標記:設定區塊的步驟如下所示:
1. 設定區塊的始位置,也就是所謂的標記( mark)。
2. 可使用 `` Ctrl-@'' 或 `` Ctrl-SPC''或M-x set-mark-command任一個指令來設定標記。
3. 設定區塊的終結位置,也就是移動游標至區塊的尾端。
在標記與 point之間的范圍就是所謂的區塊。
  M-@  開始標記區域用於拷貝
  M-w  拷貝當前mark的區域
  C-w 將當前mark的區域剪切到內存
  C-y  在當前位置粘貼剪貼板的內容
  C-y M-y  即如果在粘貼命令後根一個M-y,則切換剪貼板的內容,可以有多個M-y
  C-x u undo功能(好象沒有redo)

  Ctrl-x Ctrl-p(mark-page)
  Ctrl-x Ctrl-l(downcase-region)使區域變成小寫
  Ctrl-x Ctrl-u(upcase-region)使區域變成大寫
  Meta-x fill-region
  Meta-x print-region

  替換
  M-x replace-string RET 舊字串 RET 新字串 RET(不征詢意見)
  M-x query-string RET 舊字串 RET 新字串 RET (征詢意見)
  4)C-g  取消鍵入的指令
  5)在線幫助
  Ctrl-h c與 Ctrl-h k'的功能相似, 二者都是在尋求與 Hotkey有關的訊息。二者唯一的差別,就在於對指令的解釋詳細與否而已。
  C-h a 和C-h w可讓使用者鍵入任意的子字串,都可以找到 相對應的指令。使用  Ctrl-h a 所鍵入的子字串,並不限於指令的第一個字元, 而 Ctrl-h w 則必需以指令的第一個字為起始字。使用  Ctrl-h a,可給予指令中任何位置的子字串。Ctrl-h a 無法使用 completion,而 Ctrl-h w可使用 completion。
  C-h i 活著M-x info查看幫助info
  運行Ctrl-h i 指令,會先進入 info 樹狀結構的根部。任何情況下, 可鍵入 ``d'' 回到此根

  m MenuName 直接移動到指定的Menu上
  n 將結點移至下一個與此結點相連的結點。
  p 將結點移至上一個與此結點相連的結點。
  u 將結點移至上一層的結點。

更多關於Erlang的詳細信息,或者下載地址請點這裡

Copyright © Linux教程網 All Rights Reserved