codeMirror配置

介紹

CodeMirror是一款在線的支持語法高亮的代碼編輯器。官網:http://codemirror.net/

下載后,解壓開到的文件夾中,lib下是放的是核心庫和核心css,模式下放的是各種支持語言的語法定義,主題目錄下是支持的主題樣式。一般在開發中,添加lib下的引用和模式下的引用就夠了。

使用示例

首先,要引用是lib目錄下的codemirror.js,還有一個就是同目錄下的codemirror.css文件

<script src="lib/codemirror.js"></script>
<link rel="stylesheet" href="/lib/codemirror.css">

接下來要引用的就是在mode目錄下編輯器中要編輯的語言對應的js文件,下面以js文件為例:

<script src="mode/javascript/javascript.js"></script>

引用的文件用于支持對應語言的語法高亮。

然后,調用腳本以創建編輯器:

var myCodeMirror = CodeMirror(document.body);

這里的調用會在body中添加編輯器,這里因為直接在上面引用了javascript.js,所以這個編輯器會對javascript的關鍵字高亮顯示。

想要高級一點,給編輯器添加一些元素,也可以通過傳入配置參數來實現。

var myCodeMirror = CodeMirror(document.body,{lineNumbers:true});

這樣,就給編輯器添加了行號。

上面說的是實現編輯器的最簡單的方式,然后在實際項目中,一般都不會直接把body作為編輯器的容器。而最常用的,是使用textarea。

要把 textarea 實現成一個支持高亮的編輯器,CodeMirror 提供了非常簡單的方法:

<textarea id="editor" name="editor"></textarea>
var myTextarea = document.getElementById('editor');var CodeMirrorEditor = CodeMirror.fromTextArea(myTextarea, {mode:"text/javascript",lineNumbers:true});

簡單例子:

vartextarea = document.getElementById('code');
vareditor = newMirrorFrame(CodeMirror.replace(textarea), {height: "350px",//設置初始化高度content: textarea.value,//設置需要初始化的代碼內容parserfile: ["tokenizejavascript.js", "parsejavascript.js"],stylesheet: "css/jscolors.css",path: "js/",autoMatchParens: true
});

例子2:

var textarea = document.getElementById('code'); 
var editor = new MirrorFrame(CodeMirror.replace(textarea), { height: "350px", content: textarea.value, parserfile: ["tokenizejavascript.js", "parsejavascript.js"], stylesheet: "css/jscolors.css", path: "js/", autoMatchParens: true 
});

配置說明

在使用CodeMirror的時候,不管是直接使用 CodeMirror() 還是使用 fromTextArea() ,都可以通過傳遞第二個參數來配置編輯器。
使用方法如下:

var myCodeMirror = CodeMirror(el, {//options...});

或者:

var myCodeMirror = CodeMirror.fromTextArea(el, {//options...});

options 可以使用的參數

CodeMirror函數和它的fromTextArea方法都可以使用一個配置對象作為第二個參數。

value: string | CodeMirror.Doc

編輯器的初始值(文本),可以是字符串或者CodeMirror文檔對象(不同于HTML文檔對象)。

mode: string | object

通用的或者在CodeMirror中使用的與mode相關聯的mime,當不設置這個值的時候,會默認使用第一個載入的mode定義文件。一般地,會使用關聯的mime類型來設置這個值;除此之外,也可以使用一個帶有name屬性的對象來作為值(如:{name: “JavaScript”, json: true})。可以通過訪問CodeMirror.modesCodeMirror.mimeModes獲取定義的mode和MIME。

lineSeparator: string|null

明確指定編輯器使用的行分割符(換行符)。默認(值為null)情況下,文檔會被 CRLF(以及單獨的CR, LF)分割,單獨的LF會在所有的輸出中用作換行符(如:getValue)。當指定了換行字符串,行就只會被指定的串分割。

theme: string

配置編輯器的主題樣式。要使用主題,必須保證名稱為 .cm-s-[name] (name是設置的theme的值)的樣式是加載上了的。當然,你也可以一次加載多個主題樣式,使用方法和html和使用類一樣,如: theme: foo bar,那么此時需要cm-s-foo cm-s-bar這兩個樣式都已經被加載上了。

indentUnit: integer

縮進單位,值為空格數,默認為2 。

smartIndent: boolean

自動縮進,設置是否根據上下文自動縮進(和上一行相同的縮進量)。默認為true。

abSize: integer

tab字符的寬度,默認為4 。

indentWithTabs: boolean

在縮進時,是否需要把 n*tab寬度個空格替換成n個tab字符,默認為false 。

electricChars: boolean

在輸入可能改變當前的縮進時,是否重新縮進,默認為true (僅在mode支持縮進時有效)。

specialChars: RegExp

需要被占位符(placeholder)替換的特殊字符的正則表達式。最常用的是非打印字符。默認為:/[\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/

specialCharPlaceholder: function(char) → Element

這是一個接收由specialChars選項指定的字符作為參數的函數,此函數會產生一個用來顯示指定字符的DOM節點。默認情況下,顯示一個紅點(?),這個紅點有一個帶有前面特殊字符編碼的提示框。

keyMap: string

配置快捷鍵。默認值為default,即 codemorrir.js 內部定義。其它在key map目錄下。

extraKeys: object

給編輯器綁定與前面keyMap配置不同的快捷鍵。

lineWrapping: boolean

在長行時文字是換行(wrap)還是滾動(scroll),默認為滾動(scroll)。

lineNumbers: boolean

是否在編輯器左側顯示行號。

firstLineNumber: integer

行號從哪個數開始計數,默認為1 。

lineNumberFormatter: function(line: integer) → string

使用一個函數設置行號。

gutters: array

用來添加額外的gutter(在行號gutter前或代替行號gutter)。值應該是CSS名稱數組,每一項定義了用于繪制gutter背景的寬度(還有可選的背景)。為了能明確設置行號gutter的位置(默認在所有其它gutter的右邊),也可以包含CodeMirror-linenumbers類。類名是用于傳給setGutterMarker的鍵名(keys)。

fixedGutter: boolean

設置gutter跟隨編輯器內容水平滾動(false)還是固定在左側(true或默認)。

scrollbarStyle: string

設置滾動條。默認為”native”,顯示原生的滾動條。核心庫還提供了”null”樣式,此樣式會完全隱藏滾動條。Addons可以設置更多的滾動條模式。

coverGutterNextToScrollbar: boolean

fixedGutter啟用,并且存在水平滾動條時,在滾動條最左側默認會顯示gutter,當此項設置為true時,gutter會被帶有CodeMirror-gutter-filler類的元素遮擋。

inputStyle: string

選擇CodeMirror處理輸入和焦點的方式。核心庫定義了textareacontenteditable輸入模式。在移動瀏覽器上,默認是contenteditable,在桌面瀏覽器上,默認是textarea。在contenteditable模式下對IME和屏幕閱讀器支持更好。

readOnly: boolean|string

編輯器是否只讀。如果設置為預設的值 “nocursor”,那么除了設置只讀外,編輯區域還不能獲得焦點。

showCursorWhenSelecting: boolean

在選擇時是否顯示光標,默認為false。

lineWiseCopyCut: boolean

啟用時,如果在復制或剪切時沒有選擇文本,那么就會自動操作光標所在的整行。

undoDepth: integer

最大撤消次數,默認為200(包括選中內容改變事件) 。

historyEventDelay: integer

在輸入或刪除時引發歷史事件前的毫秒數。

tabindex: integer

編輯器的tabindex。

autofocus: boolean

是否在初始化時自動獲取焦點。默認情況是關閉的。但是,在使用textarea并且沒有明確指定值的時候會被自動設置為true。

低級選項

下面的選項僅用于一些特殊情況。

dragDrop: boolean

是否允許拖放,默認為true。

allowDropFileTypes: array

默認為null。當設置此項時,只接收包含在此數組內的文件類型拖入編輯器。文件類型為MIME名稱。

cursorBlinkRate: number

光標閃動的間隔,單位為毫秒。默認為530。當設置為0時,會禁用光標閃動。負數會隱藏光標。

cursorScrollMargin: number

當光標靠近可視區域邊界時,光標距離上方和下方的距離。默認為0 。

cursorHeight: number

光標高度。默認為1,也就是撐滿行高。對一些字體,設置0.85看起來會更好。

resetSelectionOnContextMenu: boolean

設置在選擇文本外點擊打開上下文菜單時,是否將光標移動到點擊處。默認為true。

workTime, workDelay: number

通過一個假的后臺線程高亮 workTime 時長,然后使用 timeout 休息 workDelay 時長。默認為200和300 。(完全不懂這個功能是在說啥)

pollInterval: number

指明CodeMirror向對應的textarea滾動(寫數據)的速度(獲得焦點時)。大多數的輸入都是通過事件捕獲,但是有的輸入法(如IME)在某些瀏覽器上并不會生成事件,所以使用數據滾動。默認為100毫秒。

flattenSpans: boolean

默認情況下,CodeMirror會將使用相同class的兩個span合并成一個。通過設置此項為false禁用此功能。

addModeClass: boolean

當啟用時(默認禁用),會給每個標記添加額外的表示生成標記的mode的以cm-m開頭的CSS樣式類。例如,XML mode產生的標記,會添加cm-m-xml類。

maxHighlightLength: number

當需要高亮很長的行時,為了保持響應性能,當到達某些位置時,編輯器會直接將其他行設置為純文本(plain text)。默認為10000,可以設置為Infinity來關閉此功能。

viewportMargin: integer

指定當前滾動到視圖中內容上方和下方要渲染的行數。這會影響到滾動時要更新的行數。通常情況下應該使用默認值10。可以設置值為Infinity始終渲染整個文檔。注意:這樣設置在處理大文檔時會影響性能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541785.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541785.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541785.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

應夢框架9.0框架_.Net框架能力問題和解答

應夢框架9.0框架This section contains Aptitude Questions and Answers on .Net Framework. 本節包含有關.Net Framework的能力問題和解答。 1) There are the following options are given below, what are parts of the .NET Framework? FCL (Framework Class Library)Web…

php中文網視頻放不了,【雜談】看php中文網視頻課程的正確姿勢!

看在線課程如何集中精力學習&#xff1f;ki4網為你分享看ki4網視頻課程的正確姿勢&#xff01;不談理論給些實用建議&#xff0c;可以根據你的情況多嘗試&#xff0c;看看哪條對你有用&#xff01;1、選一門自己有興趣而且教師講得好的課程。(點擊學習&#xff1a;ki4網視頻教程…

算法筆記_065:分治法求逆序對(Java)

目錄 1 問題描述 2 解決方案 2.1 蠻力法 2.2 分治法&#xff08;歸并排序&#xff09; 1 問題描述 給定一個隨機數數組&#xff0c;求取這個數組中的逆序對總個數。要求時間效率盡可能高。 那么&#xff0c;何為逆序對&#xff1f; 引用自百度百科&#xff1a; 設 A 為一個有 n…

c#copyto_String.CopyTo()方法以及C#中的示例

c#copytoC&#xff03;String.CopyTo()方法 (C# String.CopyTo() Method) String.CopyTo() method is used to copy a specified number of characters from given indexes of the string to the specified position in a character array. String.CopyTo()方法用于將指定數量的…

怎么查看我的php版本,怎樣查看php版本

怎樣查看php版本方法一&#xff1a;命令行查詢如果已經配置好環境變量&#xff0c;直接在命令行中輸入php -v&#xff0c;將會顯示php的版本信息。如果沒有配置環境變量&#xff0c;直接在命令行中進入到php的安裝目錄后&#xff0c;再輸入命令php -v&#xff0c;如圖所示是我在…

c ++ 繼承_C ++繼承| 查找輸出程序| 套裝1

c 繼承Program 1: 程序1&#xff1a; #include <iostream>#include <string.h>using namespace std;class Person {char name[15];int age;public:void SetPerson(int age, char* name){this->age age;strcpy(this->name, name);}};class Student : publi…

xor在PHP是什么意思,?=‘在PHP中是什么意思?

萬千封印因為它不會增加任何價值echo&#xff0c;我認為您希望了解PHP中的確切含義&#xff1a;Array([0] > Array([0] > 368 // T_OPEN_TAG_WITH_ECHO[1] > [2] > 1)[1] > Array([0] > 309 // T_VARIABLE[1] > $a [2] > 1)[2] > ; // U…

php curl keepalive,HTTPKeepAlive,開啟還是關閉

所謂「HTTP Keep-Alive」&#xff0c;在維基百科里稱為「HTTP Persistent Connection」&#xff0c;說白了就是復用HTTP連接&#xff0c;如此一來理論上客戶端的用戶體驗會更流暢&#xff0c;但是與之相對服務端不得不維持大量的連接。開啟還是關閉&#xff0c;這是個問題。一個…

如何使用ES6中的參數

ECMAScript 6&#xff08;或者叫 ECMAScript 2015&#xff09;是 ECMAScript 的最新標準&#xff0c;極大的提高了 JavaScript 中處理參數的能力。現在我們可以使用 rest 參數&#xff08;rest parameters&#xff09;、默認值&#xff08;default values&#xff09;和解構&am…

c++中tle是什么意思_如何在競爭性編程中克服TLE?

c中tle是什么意思什么是TLE&#xff1f; (What is TLE?) TLE means "Time Limit Exceed". So, in competitive programming, there are some constraints with a specific time limit (normally for each input 1 sec) and your task is to write your code in such…

美顏相機window 開源_X-Window系統| 免費和開源軟件

美顏相機window 開源X窗口系統 (The X-Window System) The X-Window System is a GUI that sits over Linux. Not at all like Microsoft Windows, the X Window System can glance and work in an enormously wide range of ways. It can work smoothly or lag, look excellen…

php 代碼 自動檢查工具下載,PHP_CodeSniffer安裝和使用教程(自動代碼檢查規范工具)...

在我們開發中都會講究代碼規范&#xff0c;若是個人開發者&#xff0c;代碼規范與否&#xff0c;只要自己看得懂便可以了&#xff0c;但是在團隊協作中&#xff0c;代碼規定尤為重要&#xff0c;下面&#xff0c;我們介紹一款PHP_CodeSniffer&#xff0c;自動檢查代碼規范的工具…

國際象棋之跳馬程序

問題描述: 假設國際象棋棋盤有5*5共25個格子。設計一個程序,使棋子從初始位置&#xff08;棋盤格編號為1的位置)開始跳馬,能夠把棋盤的格子全部走一遍,每個格子只允許走一次。要求: 1) 輸出一個解(用二維數組來記錄馬跳的過程,即[步號,棋盤格編號],左上角為第一步起點)&#xf…

kafka安裝使用

版本&#xff1a;kafka_2.11-0.10.1.0 (之前安裝2.10-0.10.0.0&#xff0c;一直出問題) 安裝Springboot結合Kafka的使用安裝 下載并解壓代碼 wget http://mirrors.cnnic.cn/apache/kafka/0.10.0.0/kafka_2.10-0.10.0.0.tgz #http://kafka.apache.org/downloadstar -zxvf kafka…

php獲取上傳文件路徑 fakepath,JavaScript_js獲取上傳文件的絕對路徑實現方法,在html中input type=file - phpStudy...

js獲取上傳文件的絕對路徑實現方法在html中function upload() {var filename document.getElementById("importFile").value;// 這時的filename不是 importFile 框中的值alert(filename);}如上面的代碼&#xff0c;用文件上傳對話框選擇文件后&#xff0c;如果選擇&…

在Bootstrap中使用類的按鈕類型

Bootstrap has 7 different types of buttons with contextual classes from which we can create buttons easily by using these classes (.btn-default, .btn-success, .btn-danger, .btn-primary, .btn-info, .btn-warning, .btn-link). Bootstrap具有上下文類型的 7種不同…

php json encode中文亂碼,php json_encode中文亂碼如何解決

php encode中文亂碼的解決辦法&#xff1a;首先打開相應的PHP文件&#xff1b;然后使用正則語句“preg_replace("#\\\u([0-9a-f]{4})#ie","iconv(UCS-2BE, UTF-8...)”將編碼替換成中文即可。本文列舉3個方法&#xff0c;實現json_encode()后的string顯示中文問…

鄉村圖景(轉載)

轉自: http://cul.qq.com/a/20160205/046437.htm 我丈夫家在湖北孝感孝昌縣的一個村子。2005年第一次過年回到他家&#xff0c;印象最深的就是嫂子。我暗自問當時的男友&#xff0c;“哥哥盡管算不上特別帥氣&#xff0c;但為何找了這么難看的嫂子&#xff1f;”后來才發現&…

stl向量最大值_C ++ STL中向量的最小和最大元素

stl向量最大值Given a vector and we have to find the smallest (minimum) and largest (maximum) elements. 給定一個向量&#xff0c;我們必須找到最小(最小)和最大(最大)元素。 查找向量的最小和最大元素 (Finding vectors minimum & maximum elements) To find minim…

oracle如何設置備份計劃任務,Oracle數據庫設置任務計劃備份一周的備份記錄

Oracle 數據庫備份&#xff1a;--保留最近一周的備份記錄&#xff1b;正文&#xff1a;開始代碼如下:echo 設置備份文件存放文件夾...set "tbufE:\Cway\backup"echo 設置備份文件名(以星期幾命名&#xff0c;即備份文件只保存最近一周)...set name%date%set name%nam…