最近在看SICP户魏,里面的實現(xiàn)語言是Scheme(
Lisp
的一種方言),于是試著配置了Scheme的環(huán)境兰珍,自然而然得用到了Emacs編輯器温亲,配置Emacs編輯器要用Lisp
編程實現(xiàn)(是的,你沒看錯匕得,要用Lisp
編程實現(xiàn)Emacs的配置继榆,之后用Emacs編寫Lisp
的程序……),之后發(fā)現(xiàn)Emacs的插件功能很強大汁掠,可以完成c++
的自動補全略吨,這里記錄一下配置過程。
1. Emacs編輯器簡介
Emacs考阱,著名的集成開發(fā)環(huán)境和文本編輯器翠忠。Emacs被公認為是最受專業(yè)程序員喜愛的代碼編輯器之一,另外一個被廣泛使用的是VIM編輯器乞榨。Emacs使用Lisp
這種有著極強擴展性的編程語言秽之,從而實現(xiàn)了包括編程、編譯乃至網(wǎng)絡瀏覽等等功能的擴展吃既。
2. Emacs編輯器的安裝
本人安裝的是GNU Emacs考榨,支持Linux
,windows
,MacOS
三種平臺,查看安裝步驟請點擊鏈接鹦倚。本文介紹在Linux平臺下的安裝河质。
3. 安裝自動補全插件auto-complete和auto-complete-clang
約定:
C-x
代表同時按Control
和x
鍵,M-b
代表同時按Alt
和b
鍵
- 在路徑
~/emacs.d
下創(chuàng)建init.el
文件震叙,在文件中添加以下內(nèi)容:
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/"))
(package-initialize)
- 打開Emacs(安裝好后掀鹅,直接搜索
GNU-Emacs
,單擊就可以打開)媒楼,輸入
M-x package-install
敲擊回車乐尊,之后在編輯器最下方可以看到:
在光標后輸入
auto-complete
,敲擊回車,即完成auto-complete
插件的安裝匣砖;之后相同步驟完成auto-complete-clang
插件的安裝科吭。
3 . 安裝完成后,~/emacs.d
文件夾會生成elpa
文件夾猴鲫,elpa
文件夾中是安裝好的插件对人,如下圖
之后打開~/emacs.d
下的init.el
文件,再其中添加以下內(nèi)容:
(add-to-list 'load-path "~/.emacs.d/elpa/auto-complete-20170124.1845/")
(require 'auto-complete)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/elpa/auto-complete-20170124.1845/dict/")
(require 'auto-complete-config)
(add-to-list 'load-path "~/.emacs.d/elpa/auto-complete-clang-20140409.52/")
(require 'auto-complete-clang)
;; 設置不自動啟動
(setq ac-auto-start nil)
;; 設置響應時間 0.5
(setq ac-quick-help-delay 0.5)
;;(ac-set-trigger-key "TAB")
;;(define-key ac-mode-map [(control tab)] 'auto-complete)
;; 提示快捷鍵為 M-/
(define-key ac-mode-map (kbd "M-/") 'auto-complete)
(defun my-ac-config ()
(setq ac-clang-flags
(mapcar(lambda (item)(concat "-I" item))
(split-string
"
/usr/include/c++/4.7
/usr/include/x86_64-linux-gnu/c++/4.7/.
/usr/include/c++/4.7/backward
/usr/lib/gcc/x86_64-linux-gnu/4.7/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
"
)))
(setq-default ac-sources '(ac-source-abbrev ac-source-dictionary ac-source-words-in-same-mode-buffers))
(add-hook 'emacs-lisp-mode-hook 'ac-emacs-lisp-mode-setup)
(add-hook 'c-mode-common-hook 'ac-cc-mode-setup)
(add-hook 'ruby-mode-hook 'ac-ruby-mode-setup)
(add-hook 'css-mode-hook 'ac-css-mode-setup)
(add-hook 'auto-complete-mode-hook 'ac-common-setup)
(global-auto-complete-mode t))
(defun my-ac-cc-mode-setup ()
(setq ac-sources (append '(ac-source-clang ac-source-yasnippet) ac-sources)))
(add-hook 'c-mode-common-hook 'my-ac-cc-mode-setup)
;; ac-source-gtags
(my-ac-config)
(ac-config-default)
;; 結束
注意:
- 第1,3,5行修改對應文件路徑到你自己的安裝路徑,上面的配置是我自己的配置路徑。
- 配置文件中也聲明了代碼自動補全的相應設置焕襟,比如響應時間朱监,是否自動啟動势告,提示快捷鍵(這里設置的是
M-/
蛇捌,當然你也可以自己修改成任意按鍵) - 因為要完成
c++
代碼的自動補全,所以要將c++
庫的路徑添加到配置文件咱台,配置文件中的是我自己的c++
庫路徑
/usr/include/c++/4.7
/usr/include/x86_64-linux-gnu/c++/4.7/.
/usr/include/c++/4.7/backward
/usr/lib/gcc/x86_64-linux-gnu/4.7/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
在終端中輸入如下命令可以生成自己的c++
庫的路徑络拌,首先輸入:
echo "" | g++ -v -x c++ -E -
終端會輸出:
#include "..." 搜索從這里開始:
#include <...> 搜索從這里開始:
/usr/include/c++/4.7
/usr/include/x86_64-linux-gnu/c++/4.7/.
/usr/include/c++/4.7/backward
/usr/lib/gcc/x86_64-linux-gnu/4.7/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
搜索列表結束。
中間輸出的即為你自己的c++
庫目錄回溺,之后替換你自己對應的路徑到配置文件init.el
中即完成配置春贸。
4. 補全效果
放一張補全效果圖,感覺還是很強大的遗遵,畢竟是在這樣底層環(huán)境下實現(xiàn)的自動補全萍恕。
5. 常用Emacs命令
附一張常用Emacs命令,感覺概括了常用的命令车要,很不錯允粤。
希望本篇博客可以給使用Emacs編輯器的同學一些幫助。