emacs 定製進縮風格

2022-03-25 11:28:55 字數 1890 閱讀 8723

emacs 文件中描述,進縮風格實現只需要兩步:第一步,根據內容與上下文找到對應的進縮風格的類別;第二步,依據進縮風格決定的表示式錨點的進縮偏移。下面我們對 cc-mode 風格定製加以說明。

比如在 c **中,使用 c-c . 然後再使用兩次 tab ,就可以出現多個內建風格供選擇,每種風格對進縮偏移做了或多或少的設定,不盡相同,才表現出了不同的進縮風格。

進縮偏移,就是對變數進行設定產生的。有兩個十分重要的變數

c-basic-offset

c-offsets-alist

這是前者的詳細,是乙個普通的整數值;後者的詳細說明在這裡,這是乙個關聯列表,儲存了語法符號與偏移量的鍵值對,使用

c-set-offset

對其中的元素進行修改,下面給出了如下修改這些語法符號相關聯的偏移量的方式,

(setq c-basic-offset 4)

(c-set-offset 'substatement-open 0)

(c-set-offset 'arglist-intro '+)

(c-set-offset 'arglist-cont-nonempty '+)

(c-set-offset 'statement-case-intro '+)

(c-set-offset 'case-label 0)

(c-set-offset 'statement-case-open 0)

關於其中的「+」,在此處有很詳細的說明,無非就是對 c-basic-offset 變數的值進行加減乘除,也就乙個「+」,就代表偏移1倍 c-basic-offset ,在此處就是 4 。另外,語法符號名稱眾多,我們沒有必要統統掌握,如果需要進縮某條給定的語句,但是我們不知道其語法符號的名稱,在相關行上使用 c-c c-s 就可以知道其語法符號的名稱,再做相應修改即可。

(setq c-basic-offset 4)

(c-set-offset 'substatement-open 0)

(c-set-offset 'statement-case-intro '+)

(c-set-offset 'case-label 0)

(c-set-offset 'statement-case-open 0)

上面的風格可以達到如下的效果,

switch

(a)

完整的**如下

(defun my-c-mode-hook ()

(setq c-basic-offset 4)

(c-set-offset 'substatement-open 0)

(c-set-offset 'statement-case-intro '+)

(c-set-offset 'case-label 0)

(c-set-offset 'statement-case-open 0))

(add-hook 'c-mode-common-hook 'my-c-mode-hook)

我們肯定有這樣的需求,在不同的專案中使用不同的編碼風格,還得 emacs 中的內建風格不能滿足需求,可以自定義多種不同的風格,推薦使用這裡的方式,簡而言之就是採用修改內建風格的方式自定義,省時省力,

(defun my-c-mode-hook ()

(c-add-style "ownstyle" '(

"k&r"

(c-basic-offset . 4))))

(add-hook 'c-mode-common-hook 'my-c-mode-hook)

只是把 k&r 中的基本進縮量修改為 4 ,其他的樣式與 k&r 風格一致。這樣重啟 emacs ,開啟 c 檔案,使用 c-c . tab tab 就可以看見 ownstyle 了。

Emacs學習階段小結 Emacs常用快捷鍵總結

首先推薦一下emacs自帶的emacs tutorial,跟著這個做一邊,兩三個小時,基本的使用就能掌握了。之後的神教程就有很多了,比如 sams.teach.yourself.emacs.in.24.hours 這本書就蠻吊的。之後說一下,windows裡面的emacs和linux裡面的區別是有的...

Emacs使用概覽

游標控制 c v alt v 上下移動一頁 c n p 上下移動行 c f b 前後移動一字元 alt f b 前後移動一單詞 c a e 移動到行首和尾 alt a e 移動到句首和尾 c u digit cmd 連續執行 c g 取消鍵入命令 文字編輯文字複製 c 選擇起點,點游標移動到終點,m...

Emacs初級使用

掌握emacs的 快捷鍵可以說是emacs愛好者的基本功,也是提高編輯速度和質量所必備的,但是初學者可能記不住那麼多的快捷鍵必要時可以翻一下,最常用的快捷鍵數量也就數十個。emacs的快捷鍵都是繫結於ctrl和alt 或稱meta 上的,例如c x就是ctrl x,m x就是alt x。當然所有的按...