比較麻煩,未完待續
emacs報錯:Symbol's function definition is void: cl-struct-define
背景及報錯產生
本來是emacs25的版本,然後配置好了配置文件,安裝好了插件;後來感覺25版本越用越卡,想換回24版本;於是乎直接換了24版本,而.emacs.d
沒有做任何改動,啓動24後,報錯,如圖:
解決辦法
後來在emacs的stackexchange社區找到了答案,原答案如下:
這裏原答案大致意思就是說,刪掉elpa目錄裏面的東西,重啓emacs,讓emacs重新安裝插件及其依賴。
我按照這個思路,刪掉了elpa目錄下的所有東西,然後重啓emacs,讓其自動安裝,完美解決。
因此,解決完此問題後,我個人思考,可能同一個插件,25版本和24版本的依賴不同?還是其他原因?
Ctrl和Caps互換
Mac的修改見此篇:Mac下Ctrl和Caps互換
Win下的修改:
局部替換大法
這種方法,需要用到一個輔助軟件,那就是大名鼎鼎的
Auto Hotkey
,簡稱AHK.
編輯一個腳本,輸入如下內容,保存,reload,即可生效:#IfWinActive emacs ; 判斷當前激活的窗口是否是Emacs,這是根據窗口標題實現的,如果你的標題不一樣,請替換一下 Control::Capslock ; 把Control替換爲Capslock Capslock::Control ; 把Capslock替換爲Control #IfWinActive
全局替換大法
可以利用第三方工具,或者直接在註冊表中修改鍵位映射關係
註冊表位置:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
如果沒有此鍵,就新建一個新建一個二進制值的Key,名叫:
Scancode Map
輸入如下的值:
00,00,00,00 00,00,00,00 03,00,00,00 3A,00,1D,00 1D,00,3A,00 00,00,00,00
前兩行和最後一行,都是固定的,全部爲0。第三行,表示你修改了幾個鍵,其實我們只是改了兩個鍵,不過最後那一行也要算進去,所以是3。
重點是在第四行和第五行。
3A00
,代表Caps Lock
,1D00
,代表Ctrl
。這一行,意思即爲,將Caps Lock
映射爲Ctrl
。第五行,就不用說了,意思剛好相反。
修改完畢後,重新登錄Windows即可生效!
大概就是如圖所示這種樣子:
注意,圖中紅色框中的是地址,綠色框中的纔是內容。
Ubuntu/Linuxmint下的修改
以Linuxmint爲例,如圖所示:
一般有兩種
一種是在原版的emacs上寫插件、配置等;另一種是一些社區對其進行改版,推出的版本,比如spacemacs。
這裏主要是這兩種,爲了區分,暫且稱呼爲“原版emacs”和“spacemacs”。