[![GitHub stars](https://img.shields.io/github/stars/surmon-china/vue-codemirror.svg?style=flat-square)](https://github.com/surmon-china/vue-codemirror/stargazers) [![Build Status](https://travis-ci.org/surmon-china/vue-codemirror.svg?branch=master)](https://travis-ci.org/surmon-china/vue-codemirror) [![GitHub issues](https://img.shields.io/github/issues/surmon-china/vue-codemirror.svg?style=flat-square)](https://github.com/surmon-china/vue-codemirror/issues) [![GitHub forks](https://img.shields.io/github/forks/surmon-china/vue-codemirror.svg?style=flat-square)](https://github.com/surmon-china/vue-codemirror/network) [![GitHub last commit](https://img.shields.io/github/last-commit/google/skia.svg?style=flat-square)](https://github.com/surmon-china/vue-codemirror) [![license](https://img.shields.io/github/license/mashape/apistatus.svg?style=flat-square)](https://github.com/surmon-china/vue-codemirror) [![Twitter](https://img.shields.io/twitter/url/https/github.com/surmon-china/vue-codemirror.svg?style=flat-square)](https://twitter.com/intent/tweet?url=https://github.com/surmon-china/vue-codemirror) [![NPM](https://nodei.co/npm/vue-codemirror.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/vue-codemirror/) [![NPM](https://nodei.co/npm-dl/vue-codemirror.png?months=9&height=3)](https://nodei.co/npm/vue-codemirror/) # Vue-Codemirror [Codemirror](http://codemirror.net/) component for Vue. 基于 [Codemirror](http://codemirror.net/),适用于 Vue 的 Web 代码编辑器。 # Example [Demo Page](https://surmon-china.github.io/vue-codemirror) [CDN Example](https://jsfiddle.net/u1f16q85/) [Nuxt.js/SSR example code](https://github.com/surmon-china/vue-codemirror/blob/master/examples/nuxt-ssr-example) # Events To make it easier to handle events, the component converts some codemirror built-in native events into a single vue component event, where you can listen for events from both the component itself and from codemirror. If you need to listen for more and more complex events, you can pass in the event names (Array) you need for the global `Vue.use(, { events: [] })` and the component parameters `:events`, respectively, or by the `this.codemirror.on(event, hanger)` method of the codemirror instance. Here's a list of events: **codemirror events list:** - scroll - changes - beforeChange - cursorActivity - keyHandled - inputRead - electricInput - beforeSelectionChange - viewportChange - swapDoc - gutterClick - gutterContextMenu - focus - blur - refresh - optionChange - scrollCursorIntoView - update **component events list:** - ready - input # Install #### CDN ``` html ``` #### NPM ``` bash npm install vue-codemirror --save ``` ### Mount #### mount with global ``` javascript // require lib import Vue from 'vue' import VueCodemirror from 'vue-codemirror' // require styles import 'codemirror/lib/codemirror.css' // require more codemirror resource... // you can set default global options and events when use Vue.use(VueCodemirror, /* { options: { theme: 'base16-dark', ... }, events: ['scroll', ...] } */) ``` #### mount with component ```javascript // require component import { codemirror } from 'vue-codemirror' // require styles import 'codemirror/lib/codemirror.css' // require more codemirror resource... // component export default { components: { codemirror } } ``` #### mount with ssr ```javascript // If used in nuxt.js/ssr, you should keep it only in browser build environment if (process.browser) { const VueCodemirror = require('vue-codemirror') Vue.use(VueCodemirror) } ``` #### defined codemirror mode ```javascript import CodeMirror from 'codemirror' CodeMirror.defineMode('mymode', () => { return { token(stream, state) { if (stream.match("const")) { return "style1" } else if (stream.match("bbb")) { return "style2" } else { stream.next() return null } } } }) ``` ### Component ```vue ``` ### Codemirror Merge ```vue ``` ### Codemirror language mode types 编辑器的模式(mode属性)分为 字符串、对象两种方式,Codemirror 官方文档有说明 `mode: 'string' || object` ``` javascript // MIME types mode: 'text/javascript' // name mode: { name: 'javascript', json: true } // ext mode: { ext: 'js' } // mime mode: { mime: 'text/javascript' } // filename mode: { filename: 'index.js' } ``` # CodeMirror - [CodeMirror language modes](http://codemirror.net/mode/) (MIME types defined) - [CodeMirror Autoresize](https://codemirror.net/demo/resize.html) - [CodeMirror themes](http://codemirror.net/demo/theme.html) - [CodeMirror events](https://codemirror.net/doc/manual.html#events) - [CodeMirror APIs](http://codemirror.net/doc/manual.html#config) # Author [Surmon](https://surmon.me)