Ant Design中使用CodeMirror2代碼編輯器

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

安裝:

npm install react-codemirror2 codemirror --save

使用:

import {UnControlled as CodeMirror} from 'react-codemirror2'

<CodeMirror
  value='<h1>I ? react-codemirror2</h1>'
  options={{
    mode: 'xml',
    theme: 'material',
    lineNumbers: true
  }}
  onChange={(editor, data, value) => {
  }}
/>

在使用mode和theme的時候還需要導入js和css文件

import {UnControlled   as CodeMirror} from 'react-codemirror2'
import 'codemirror/mode/cmake/cmake';
import 'codemirror/mode/xml/xml';
import 'codemirror/mode/javascript/javascript';
import 'codemirror/mode/clike/clike';

option可使用的配置:

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

mode: string | object
通用的或者在CodeMirror中使用的與mode相關(guān)聯(lián)的mime,當不設置這個值的時候,會默認使用第一個載入的mode定義文件。一般地,會使用關(guān)聯(lián)的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這兩個樣式都已經(jīng)被加載上了。

indentUnit: integer
縮進單位,值為空格數(shù),默認為2 。

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

tabSize: 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選項指定的字符作為參數(shù)的函數(shù),此函數(shù)會產(chǎn)生一個用來顯示指定字符的DOM節(jié)點。默認情況下,顯示一個紅點(?),這個紅點有一個帶有前面特殊字符編碼的提示框。

rtlMoveVisually: boolean
Determines 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 內(nèi)部定義。其它在key map目錄下。

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

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

lineNumbers: boolean
是否在編輯器左側(cè)顯示行號。

firstLineNumber: integer
行號從哪個數(shù)開始計數(shù),默認為1 。

lineNumberFormatter: function(line: integer) → string
使用一個函數(shù)設置行號。

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

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

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

coverGutterNextToScrollbar: boolean
當fixedGutter啟用,并且存在水平滾動條時,在滾動條最左側(cè)默認會顯示gutter,當此項設置為true時,gutter會被帶有CodeMirror-gutter-filler類的元素遮擋。
inputStyle: string
選擇CodeMirror處理輸入和焦點的方式。核心庫定義了textarea和contenteditable輸入模式。在移動瀏覽器上,默認是contenteditable,在桌面瀏覽器上,默認是textarea。在contenteditable模式下對IME和屏幕閱讀器支持更好。

readOnly: boolean|string
編輯器是否只讀。如果設置為預設的值 “nocursor”,那么除了設置只讀外,編輯區(qū)域還不能獲得焦點。

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

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

undoDepth: integer
最大撤消次數(shù),默認為200(包括選中內(nèi)容改變事件) 。

historyEventDelay: integer
在輸入或刪除時引發(fā)歷史事件前的毫秒數(shù)。

tabindex: integer
編輯器的tabindex。

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

低級選項

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

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

allowDropFileTypes: array<string>
默認為null。當設置此項時,只接收包含在此數(shù)組內(nèi)的文件類型拖入編輯器。文件類型為MIME名稱。

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

cursorScrollMargin: number
當光標靠近可視區(qū)域邊界時,光標距離上方和下方的距離。默認為0 。

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

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

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

pollInterval: number
指明CodeMirror向?qū)膖extarea滾動(寫數(shù)據(jù))的速度(獲得焦點時)。大多數(shù)的輸入都是通過事件捕獲,但是有的輸入法(如IME)在某些瀏覽器上并不會生成事件,所以使用數(shù)據(jù)滾動。默認為100毫秒。

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

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

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

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

參考: https://blog.csdn.net/wilimaster/article/details/52456618

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 清婉淑雅雖然沒有什么固定模式,但通常還是萬般不離裙裾搖曳,這就使得一眾摯愛褲裝的時尚女生身陷迷蒙,難道褲裝女生真的...
    MemoryChan閱讀 326評論 0 1
  • 站在高處的下一步臺階如何? 作者 唐孝忠 創(chuàng)作于2008年6月 社會這個大家庭里,盡管每個成員的地位是平等的,但因...
    堅守良知閱讀 780評論 0 1
  • Often minor changes will fix any performance problems in ...
    綿綿_閱讀 329評論 0 0
  • 千峰PHP 開始,先簡單介紹一下我自己,我是一個標準的PHP程序員,雖然我做過很多管理崗位,對產(chǎn)品、對市場也有很多...
    往事隨風009閱讀 268評論 0 0
  • 你出現(xiàn)的時候 我的世界是兵荒馬亂后的一片狼藉 荒蕪,狼狽,不知所措 小心翼翼把雜草叢生的心捧在掌心 再也不敢隨處安...
    林失意流浪記閱讀 334評論 0 0

友情鏈接更多精彩內(nèi)容