Linux下配置c/c++編譯環境-Emacs-轉載部落格園

來源:互聯網
上載者:User

   在linux編程,首先要選擇開發工具,自然目光就投向了網上都說的兩大神器——VIM和EMACS,雖說他們只是編輯器,但由於超強的可定製度,已成為廣大linux工作者的首選。所以今天我就寫點本人使用Emacs和將Emacs配置成一個簡易IDE的過程和心得。不過說起配置IDE,CSDN上前輩吳垠有篇將VIM配置成IDE的文章,本人剛在linux編程時曾深深學習過,甚為折服。順便提一句,我曾經也是用VIM寫程式的,所以我的VIM看起來也是一個簡單的IDE,不過後面轉向使用Emacs了(聲明:本人無意加入VIM和Emacs之爭,選擇哪一個純屬個人習慣和喜好而已)。

         網上很對人都說Emacs門檻比較高,入門難。其實也沒有說的那麼誇張,可能是比VIM難一點,但是也是很容易上手的,只是好用不好用的問題。好了,閑話少說,下面進入今天的主題:打造Emacs。

         本文對Emacs的說明有:

  1. Emacs的基本操作和按鍵組合
  2. 啟動時的邊框和大小及在螢幕中的位置
  3. Emacs的基本常規設定
  4. Emacs的一些開發環境的設定(C/C++、script等等)
  5. Emacs的一些擴充配置(如改變游標的形狀等)

   附:本文不會解釋lisp編程。

  

   我的工作環境是ubuntu11.04,emacs是直接用sudo apt-get install emacs安裝的,版本是GNU Emacs 23.3.1。下面的例子基本都是在C語言做的示範。

 

下面對一些文中可能用到的名稱說明一下:

    文中的路徑都是 ~/ 目錄,文中的一些路徑如,~/_emacs,~/work,之類的如果沒有就自己建一個,.emacs檔案在~/.emacs。

 

先來兩張圖,我的emacs介面,o(∩_∩)o

圖一:

 

 

對照的編號:

1:簡潔明了的buffer瀏覽和操作,以及一些檔案瀏覽器,tag瀏覽

2:高亮代碼編輯區

3:自動補全

4:更好的檔案瀏覽器

 

圖2:(debug的)

 

對照:

1:圖形化調試選項

2:變數查看區

3:源碼查看區

4:棧查看區

5:斷點查看區

 

2.Emacs的基本操作和按鍵組合1.Emacs的模式鍵定義

四個模式鍵:C------àctrl;M------àalt;s------àsuper(win);S----àshift

比如:C-x:表示ctrl+x(表示先按下ctrl鍵,然後按下x鍵

C-x c C-c:表示按下ctrl,然後按下x鍵鬆開後再按下c鍵

C-x k:表示按下ctrl,同步選取x和k鍵

2.Emacs的基本按鍵組合

C-x C-c:退出Emacs

C-x C-s:儲存當前buffer

C-x C-f:開啟和建立檔案

C-n:游標移到下一行

C-p:游標移到上一行

C-k:刪除一行

M-x:執行命令

 

其他的很多按鍵組合我都進行了重新綁定,在下文中將有描述。

 

3.啟動時的大小和螢幕的中的位置

 

語句表示在啟動後在螢幕的x=20,y=0處,高度為35寬度為100的Emacs。

說明:關於修改Emacs的啟動大小的問題,網上最多的描述是:有兩種方法①修該~/.Xdefault檔案,然後運行xrdb ~/.Xdefault;②在~/.emacs中進行所示修改;然後網上的說明是第一種方法更好。故在此進行一個說明,根據筆者的使用經驗,個人更喜歡用第2種方法,因為當用第一種方法後,每次修改了emacs的設定檔,都需要重新運行xrdb  ~/.Xdefault,個人感覺比較煩,還有一些其他問題,這裡就不例舉了,所以我選擇的是在.emacs設定檔中修改的方法。

 

4.Emacs的基本常規設定

按照一般的習慣,.emacs檔案中一般不會放太多的設定資訊,一般放一些emacs的搜尋路徑的資訊。這裡我的emacs的設定檔,即lisp指令碼都放在~/_emacs的檔案夾中。

因此首先添加一個emacs的搜尋路徑:

然後載入我們對emacs的設定指令碼,在.emacs中添加如下語句:

圖中的幾個指令檔將在下面分別解譯器用途。

①對emacs的基本設定,即base.el檔案(在~/_emacs中),base.el檔案中的部分內容如下:

設定預設工作目錄,即啟動emacs後所在的目錄,我這裡設的是主目錄下的work檔案夾,我幾乎所有的代碼都是在該目錄下完成的,在base.el中加上下面一句:

 

上面就是一些基本和重要的配置,我沒有多加說明,因為圖中幾乎每行語句都有注釋,所以大家應該能看懂的。O(∩_∩)o

 

5.C/C++的配置

下面講關於C/C++的配置,因為筆者在Linux下主要還是進行C/C++的開發。我的C/C++的配置主要是cycode.el檔案中。

①開發時很重要的一步就是調試,因此,好的調試環境很重要,所以首先就是圖形化調試介面:

 

上面載入了兩個lisp的指令檔,這兩個檔案是直接在網上下的圖形化調試的檔案。

②為了能高效的瀏覽和編輯代碼,需要安裝cedet外掛程式(可以到官網下載),下載cedet後,在~/install目錄中解壓,然後看解壓出來的檔案夾中的INSTALL檔案,然後根據裡面的描述安裝cedet即可(註:我所有的需要安裝的外掛程式都在~/install目錄中,下面將不再重複說明),有一點需要注意就是安裝完成後不能刪除安裝後的檔案,也就是需要保留解壓後的檔案夾。

安裝完成後,即用下面的語句將我們需要的一些東西包含進來:

 

然後現在就可進行有關cedet的設定,這裡只是用一個程式碼摺疊功能和展開為例:

 

③為了使使用更方便,即對上面cedet外掛程式的一個補充,需要在安裝一個ecb外掛程式。下載ecb後放到intall目錄中,解壓即可(僅僅是解壓),然後加上下面兩句:

 

④自動補全功能,為了實現自動補全功能,需要安裝兩個外掛程式,這兩個外掛程式是相輔相成的——auto-complete和yasnippet。先安裝auto-complete,下載後放到install目錄中解壓,然後進入解壓後的目錄,然後輸入make命令即可;下面安裝yasnippet,下載後放到install目錄,然後解壓即可;下面是幾句關於這兩個外掛程式的配置:

 

⑤裝完外掛程式後,下面是一些關於綜合的配置:

 

下面是兩種補全命令:

 

 

6.鍵綁定

到這裡,已經基本完成了C/C++開發環境的搭建,為了使自己用emacs更方便,需要一些建綁定,即自己定義一些按鍵組合,這是emacs配置中必不可少的一步,我的自訂群組合鍵都放在cykbd.el檔案中,下面是部分我的鍵綁定代碼:

根據一般的慣用f1來表示協助,即man命令:

 

這部分是對f1-f12的一些綁定:

 

這裡的f6為調試,即用gdb調試,f7是調用make來對原檔案進行編譯。

將f8為對buffer的一些常用操作:

 

用f12查看函數定義:

 

對ecb的鍵綁定:

 

對視窗的一些鍵綁定:

 

 

7.Emacs的擴充配置

上面已經完成配置emacs的基本工作,換句話說,到目前為止我們已經可以用emacs進行開發了,但是為了進一步的是emacs更符合我的習慣,又加了一個cyexpand.el這個設定檔,是emacs的功能更強大,cyexpand.el的部分設定為:

 

Emacs主題的設定:

 

 將游標改成一個豎線:

 

 

8.總結

到此為止,已經將emacs打造成了開發c/C++的簡易IDE,由於筆者本身能力所限,文中的不足之處歡迎大家批評指正。我會將我整套設定檔和需要下載的外掛程式都打包上傳,詳細的設定和編碼,大家可以下載後在使用過程中體會和深入,大家需要看的檔案只有_emacs目錄下的base.el、cycode.el、cykbd.el、cyexpand.el四個檔案,其他的指令檔都是筆者從各種地方收集過來的大牛寫的各種配置。我的設定檔下載串連是:

http://download.csdn.net/detail/karotte/3812760

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.