亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

代碼編輯器CodeMirror

2024-04-27 15:04:35
字體:
來源:轉載
供稿:網友

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

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

使用示例

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

12<scriptsrc="lib/codemirror.js"></script><linkrel="stylesheet"href="/lib/codemirror.css">

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

1<scriptsrc="mode/javascript/Javascript.js"></script>

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

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

1varmyCodeMirror = CodeMirror(document.body);

這里的調用會在body中添加編輯器,這里因為直接在上面引用了javascript.js,所以這個編輯器會對javascript的關鍵字高亮顯示。想要高級一點,給編輯器添加一些元素,也可以通過傳入配置參數來實現。

123varmyCodeMirror = CodeMirror(document.body,{lineNumbers:true});

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

上面說的是實現編輯器的最簡單的方式,然后在實際項目中,一般都不會直接把body作為編輯器的容器。而最常用的,是使用textarea。要把 textarea 實現成一個支持高亮的編輯器,CodeMirror 提供了非常簡單的方法:

1<textareaid="editor"name="editor"></textarea>
12345varmyTextarea = document.getElementById('editor');varCodeMirrorEditor = CodeMirror.fromTextArea(myTextarea, {    mode:"text/javascript",lineNumbers:true});

配置說明

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

123varmyCodeMirror = CodeMirror(el, {    // options...});

或者

123varmyCodeMirror = 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.modes和CodeMirror.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。

tabSize: integertab字符的寬度,默認為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節點。默認情況下,顯示一個紅點(?),這個紅點有一個帶有前面特殊字符編碼的提示框。

rtlMoveVisually: booleanDetermines whether horizontal cursor movement through right-to-left (Arabic, Hebrew) text is visual (PRessing the left arrow moves the cursor left) or logical (pressing the left arrow moves to the next lower index in the string, which is visually right in right-to-left text). The default is false on Windows, and true on other platforms.(這段完全不曉得搞啥子鬼)

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<string>用來添加額外的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處理輸入和焦點的方式。核心庫定義了textarea和contenteditable輸入模式。在移動瀏覽器上,默認是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<string>默認為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始終渲染整個文檔。注意:這樣設置在處理大文檔時會影響性能。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色狠狠久久aa北条麻妃| 91在线免费观看网站| 国产自产女人91一区在线观看| 亚洲免费av网址| 久久久97精品| 国产精品一区二区av影院萌芽| 国产一区视频在线播放| 亚洲一区二区三区视频| 日韩电影在线观看永久视频免费网站| 日韩网站免费观看高清| 久久久久久国产精品美女| 日韩精品在线免费观看| 少妇av一区二区三区| 成人字幕网zmw| 国产深夜精品福利| 国产精品自拍偷拍视频| 久久成人18免费网站| 成人激情视频在线播放| 在线日韩日本国产亚洲| 日韩亚洲一区二区| 国产精品久久久久秋霞鲁丝| 色偷偷88888欧美精品久久久| 久久艳片www.17c.com| 欧美电影在线免费观看网站| 日韩精品一区二区视频| 日韩av观看网址| 日韩在线视频免费观看高清中文| 欧美激情第三页| 欧美在线免费视频| 久久不射热爱视频精品| 日韩欧美在线中文字幕| 欧美大秀在线观看| 91在线观看免费网站| 亚洲第一福利在线观看| 亚洲黄色av女优在线观看| 久久精品国产精品亚洲| 欧美日韩在线免费| 久久久久久久一区二区三区| 日韩av综合网站| 久久精品99国产精品酒店日本| 91精品国产沙发| 一区二区欧美激情| 成人中文字幕在线观看| 国产91久久婷婷一区二区| 热久久这里只有精品| 一本色道久久88亚洲综合88| 亚洲国产精品一区二区三区| 国产欧美一区二区三区在线看| 色噜噜国产精品视频一区二区| 亚洲视频第一页| 久久久久久久一区二区| 亚洲精品视频在线观看视频| 欧美亚洲午夜视频在线观看| 久久中文字幕在线| 亚洲成人精品视频在线观看| 国产日本欧美一区二区三区| 欧美国产激情18| 久久国产视频网站| 不卡av在线网站| 在线观看中文字幕亚洲| 国产精品免费一区二区三区都可以| 91免费看视频.| 久久精品亚洲94久久精品| 久久久久久亚洲精品| 欧美日韩午夜视频在线观看| 在线视频精品一| 亚洲美腿欧美激情另类| 成人黄色av网| 亚洲综合中文字幕在线观看| 日本精品一区二区三区在线| 欧美大肥婆大肥bbbbb| 亚洲自拍小视频| 4438全国亚洲精品在线观看视频| 激情成人在线视频| 日本在线精品视频| 国产日韩在线精品av| 国产91精品久久久久久| 久久久久久噜噜噜久久久精品| 国模吧一区二区三区| 日韩电影中文 亚洲精品乱码| 中文字幕av一区中文字幕天堂| 欧美激情免费在线| 国产精品青青在线观看爽香蕉| 国产亚洲aⅴaaaaaa毛片| 国产精品99蜜臀久久不卡二区| 日本韩国在线不卡| 亚洲伊人久久大香线蕉av| 色综合久久精品亚洲国产| 国产色视频一区| 亚洲理论在线a中文字幕| 性色av一区二区三区红粉影视| 国产成人精品电影| 国产精品久久久久久久av大片| 俺也去精品视频在线观看| 97人人模人人爽人人喊中文字| 日韩视频在线免费观看| 亚洲国产成人精品久久久国产成人一区| 日韩av影片在线观看| 国产精品精品视频| 国产v综合ⅴ日韩v欧美大片| 一本大道亚洲视频| 欧美激情视频免费观看| 亚洲理论在线a中文字幕| 国产精品一区=区| www.亚洲一区| 高清亚洲成在人网站天堂| 精品美女永久免费视频| 久久久免费观看| 亚洲精品自拍视频| 亚洲黄色www| 精品国产成人在线| 亚洲精品有码在线| 久久久久久亚洲精品中文字幕| 色多多国产成人永久免费网站| 欧美肥老妇视频| 欧美一级电影免费在线观看| 91精品久久久久久久久久| 日本精品久久久久久久| 日本精品一区二区三区在线| 久久免费精品日本久久中文字幕| 久久久久日韩精品久久久男男| 国产美女被下药99| 国产精品久久久av久久久| 亚洲精品www久久久久久广东| 欧美第一黄网免费网站| 久久999免费视频| 亚洲色在线视频| 国产精品色午夜在线观看| 亚洲永久在线观看| 在线观看国产精品日韩av| 亚洲成人国产精品| 成人av在线亚洲| 精品中文字幕视频| 欧美wwwwww| 亚洲美女在线视频| 亚洲欧美中文另类| 亚洲性视频网址| 久久久久日韩精品久久久男男| 精品久久久久久久久久久久久久| 日韩精品在线视频美女| 亚洲国产精品久久久久| 中文字幕亚洲综合久久| 亚洲高清一区二| 亚洲国产91精品在线观看| 欧美电影免费观看| 91亚洲精品在线观看| 国产一区二区欧美日韩| 日韩电影免费在线观看| 亚洲欧美日韩直播| 国产精品jizz在线观看麻豆| 日本欧美一二三区| 欧美电影电视剧在线观看| 91国内在线视频| 国产精品成人观看视频国产奇米| 久久精品一本久久99精品| 国产精品美女视频网站| 国产99久久久欧美黑人| 色99之美女主播在线视频| 日本伊人精品一区二区三区介绍| 国产精品入口日韩视频大尺度| 欧美黑人一区二区三区| 国产亚洲精品美女久久久久| 成人网中文字幕| 亚洲免费福利视频|