国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Emacs配置與擴(kuò)展技術(shù)

2019-06-28 08:36:28鮑彬武云濤
科技創(chuàng)新與應(yīng)用 2019年16期
關(guān)鍵詞:擴(kuò)展配置

鮑彬 武云濤

摘? 要:Emacs是高擴(kuò)展性的編輯器,可通過(guò)配置支持多種復(fù)雜編輯模式。不同于其它編輯器的簡(jiǎn)單配置腳本,Emacs的配置和擴(kuò)展是通過(guò) Emacs-lisp語(yǔ)言完成的,Emacs配置普遍被認(rèn)為是較為復(fù)雜的和難以掌握的。文章著重探討并分析了Emacs配置與擴(kuò)展的相關(guān)技術(shù)。

關(guān)鍵詞:Emacs;Lisp;配置;擴(kuò)展

中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-2945(2019)16-0134-03

Abstract: Emacs is a highly extensible editor that can be configured to support a variety of complex editing modes. Unlike the simple configuration scripts of other editors, the configuration and extension of Emacs is done through the Emacs-lisp language. Emacs configuration is generally considered to be more complex and difficult to master. This paper mainly discusses and analyzes the related technologies of Emacs configuration and extension.

Keywords: Emacs; Lisp; configuration; extension

1 Emacs簡(jiǎn)介

Emacs是著名的文本編輯器,最初是在上世紀(jì)70年代完成。Emacs是“Editing MACros”的縮寫(xiě),意為宏編輯器。不同于一般的編輯器,Emacs具有極強(qiáng)的可擴(kuò)展性。在文本編輯之外,Emacs通過(guò)與其他工具結(jié)合起來(lái)能夠支持各種語(yǔ)言程序開(kāi)發(fā),上網(wǎng)和新聞組,文件和系統(tǒng)管理,撰寫(xiě)文章等一系列功能,成為一個(gè)具有強(qiáng)大功能且高度集成的生產(chǎn)力工具。

2 Emacs與常見(jiàn)文本編輯器配置方式比較

2.1 Emacs和Vi比較

Emacs和Vi是深受程序員喜愛(ài)的兩大編輯器,各有特點(diǎn)。Vi是著名的輕量級(jí)文本編輯器,在完成輕量級(jí)任務(wù)時(shí)有很大優(yōu)勢(shì),比如簡(jiǎn)單調(diào)整系統(tǒng)配置,遠(yuǎn)程終端的簡(jiǎn)單訪問(wèn)和操作。Vi的強(qiáng)大之處在于其編輯快捷鍵易用,和終端無(wú)縫結(jié)合。相比之下,Emacs復(fù)雜度要高很多,但在處理復(fù)雜任務(wù),大量不同類(lèi)型的文件時(shí),Emacs將更有優(yōu)勢(shì)。值得注意的是,Vi也需要通過(guò)一定配置才能發(fā)揮較強(qiáng)的功能,比如大部分程序員為了方便開(kāi)發(fā),還是結(jié)合多個(gè)較復(fù)雜插件將Vi配置為集成開(kāi)發(fā)環(huán)境。在這個(gè)角度上,Vi擴(kuò)展的編寫(xiě)不如Emacs用Lisp語(yǔ)言開(kāi)發(fā)那么方便,雖然理論上Vi也是可以用通用語(yǔ)言Python去擴(kuò)展的,但畢竟不是原生的擴(kuò)展語(yǔ)言。事實(shí)上通過(guò)合理配置,Emacs其實(shí)是可以模擬大部分Vi的特性的,這也是目前比較流行的模式,不使用原生的Vi,而是把Vi的特性結(jié)合進(jìn)入Emacs中,兩者兼用。這個(gè)思路是目前大多數(shù)流行的Emacs配置采用的。

2.2 Emacs和Sublime Text,VS Code比較

近些年也有一些新的可擴(kuò)展文本編輯器,比較有名的有Sublime Text,微軟寫(xiě)的VS Code,這些工具也都意在提供高可擴(kuò)展性的編輯工具,尤其是多種語(yǔ)言程序的開(kāi)發(fā)工具。這些編輯器優(yōu)勢(shì)在于易于上手,其擴(kuò)展性更多的是通過(guò)官方豐富的插件來(lái)完成的,對(duì)于新手更加友好。用戶(hù)也可以通過(guò)簡(jiǎn)單腳本文件定制編輯器特性,不過(guò)其所支持的定制語(yǔ)言不夠強(qiáng)大,定制復(fù)雜配置是不容易的。相比而言,Emacs的可擴(kuò)展性更強(qiáng),定制方式更加靈活,所以很多人依然選擇使用Emacs而不是轉(zhuǎn)入新的文本編輯工具。對(duì)于經(jīng)驗(yàn)豐富的編程人員來(lái)講,Emacs更容易按照自己的工作習(xí)慣加以配置和擴(kuò)展,在眾多工具中依然是最佳的選擇。Emacs的另一個(gè)優(yōu)勢(shì)之處是可以和系統(tǒng)結(jié)合,不僅僅限制在集成開(kāi)發(fā)環(huán)境這樣一個(gè)功能,而是可以擴(kuò)展為可以替代Office,圖片瀏覽器,網(wǎng)頁(yè)瀏覽器等軟件的多功能集成工具。這是目前任何一款可擴(kuò)展文本工具都是無(wú)法做到的,這也是Emacs作為一個(gè)古老軟件至今依然保持開(kāi)發(fā)活躍的原因。當(dāng)然,Emacs開(kāi)源和社區(qū)高度開(kāi)放的特性也是其優(yōu)勢(shì)之處和更容易擴(kuò)展的原因之一。

3 Emacs配置與擴(kuò)展技術(shù)

3.1 Emacs-lisp擴(kuò)展編程

Emacs配置與擴(kuò)展可以通過(guò)Emacs-lisp語(yǔ)言開(kāi)發(fā)。Emacs-lisp語(yǔ)言是Lisp語(yǔ)言的一種方言。Lisp是早期的程序設(shè)計(jì)語(yǔ)言之一,其語(yǔ)言設(shè)計(jì)源于lambda計(jì)算理論,語(yǔ)言簡(jiǎn)潔并能夠優(yōu)雅的支持目前主流的程序設(shè)計(jì)范式。Emacs-lisp包含完整的Lisp語(yǔ)言特性,這是由于Emacs底層用C語(yǔ)言實(shí)現(xiàn)了Lisp的解釋器和基本的內(nèi)置編輯函數(shù)。因此Emacs的大部分功能是由Emacs-lisp實(shí)現(xiàn)的,同樣也可以用Emacs-lisp語(yǔ)言方便的進(jìn)行擴(kuò)展,進(jìn)一步Emacs-lisp語(yǔ)言也可直接訪問(wèn)Emacs的內(nèi)置功能函數(shù)接口。這樣的特性使得使用Emacs-lisp進(jìn)行程序設(shè)計(jì)和Emacs配置開(kāi)發(fā)非常方便。

3.2 Emacs配置加載

Emacs的入口文件可以是~/.emacs或者~/.emacs.d/init.el。常見(jiàn)的方式是使用后者,因?yàn)楹笳哂欣谀K化配置程序。Emacs配置一般是有一定規(guī)模的復(fù)雜程序,模塊化設(shè)計(jì)可以使配置程序易讀易改。Emacs-lisp語(yǔ)言的每一個(gè)模塊對(duì)應(yīng)一個(gè)文件,在文件尾部使用provide使模塊可被其它程序引用,引用方式是通過(guò)require指定,從而加載模塊中的所有變量和函數(shù),使其對(duì)當(dāng)前程序可見(jiàn)。為了模塊能被Emacs發(fā)現(xiàn)并正確加載,通常需要在init.el文件開(kāi)始部分使用load-path指定所需所有模塊的路徑,作為加載配置的起始點(diǎn)。Emacs加載模塊并非只有這一種方式,事實(shí)上,為了加快Emacs的啟動(dòng)速度,不是所有模塊都在init.el初始化時(shí)加載。最好的加載實(shí)踐是在Emacs啟動(dòng)時(shí)僅加載基本模塊,其它功能模塊時(shí)在被使用時(shí)動(dòng)態(tài)加載,比如啟動(dòng)時(shí)不加載Python開(kāi)發(fā)相關(guān)模塊,而且在打開(kāi)Python文件進(jìn)行編輯時(shí)才加載。有兩種方式可以實(shí)現(xiàn)動(dòng)態(tài)模塊加載,不使用第三方工具的情況下,可以用autoload設(shè)置動(dòng)態(tài)加載的函數(shù),結(jié)合宏with-eval-after-load指定動(dòng)態(tài)加載配置代碼,實(shí)現(xiàn)模塊函數(shù)當(dāng)調(diào)用時(shí)才加載,相關(guān)函數(shù)在模塊加載后才執(zhí)行。目前比較流行的方式是使用第三方工具use-package,該工具包定義了use-package宏,能夠以簡(jiǎn)潔的方式指定模塊中需要?jiǎng)討B(tài)加載的函數(shù)和變量,以及指定配置代碼與模塊加載的相對(duì)順序。

猜你喜歡
擴(kuò)展配置
淺談數(shù)據(jù)挖掘和自適應(yīng)算法的應(yīng)用
多維傳播語(yǔ)境下的播音主持功能與拓展研究
簡(jiǎn)析電力系統(tǒng)繼電保護(hù)技術(shù)及配置應(yīng)用
一種智能家居系統(tǒng)自學(xué)習(xí)免配置方法
世界主要國(guó)家軍民融合式發(fā)展財(cái)力資源配置的啟示
商情(2016年39期)2016-11-21 10:03:22
論高校網(wǎng)絡(luò)防火墻的配置與管理
計(jì)算機(jī)Linux網(wǎng)絡(luò)操作系統(tǒng)特點(diǎn)及服務(wù)器配置研究
恒溫晶體振蕩器調(diào)頻范圍擴(kuò)展思考
試論人力資源配置及其作用與模式
財(cái)務(wù)管理內(nèi)容擴(kuò)展的路徑與方法
偏关县| 崇礼县| 沙田区| 星座| 旬阳县| 通山县| 沂源县| 静宁县| 夏邑县| 金堂县| 东乡族自治县| 泾川县| 昌图县| 济南市| 宁远县| 泸水县| 赤水市| 潮州市| 淮滨县| 杭州市| 龙海市| 常熟市| 乳源| 姚安县| 东莞市| 望江县| 鞍山市| 那曲县| 漳平市| 鄯善县| 德庆县| 斗六市| 呼和浩特市| 江川县| 敖汉旗| 栾川县| 从化市| 南木林县| 奎屯市| 吉隆县| 平度市|