- Notifications
You must be signed in to change notification settings - Fork40
replit/codemirror-vim
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
npm i @replit/codemirror-vim
import{basicSetup,EditorView}from'codemirror';import{vim}from"@replit/codemirror-vim"letview=newEditorView({doc:"",extensions:[// make sure vim is included before other keymapsvim(),// include the default keymap and all other keymaps you want to use in insert modebasicSetup,],parent:document.querySelector('#editor'),})
Note:if you are not using
basicSetup, make sure you include thedrawSelection plugin to correctly render the selection in visual mode.
The same api that could be used in previous version of codemirrorhttps://codemirror.net/doc/manual.html#vimapi, can be used with this plugin too, just replace the old editor instance withview.cm in your code
import{Vim,getCM}from"@replit/codemirror-vim"letcm=getCM(view)// use cm to access the old cm5 apiVim.exitInsertMode(cm)Vim.handleKey(cm,"<Esc>")
Vim.defineEx('write','w',function(){// save the file});
Vim.map("jj","<Esc>","insert");// in insert modeVim.map("Y","y$");// in normal mode
Vim.unmap("jj","insert");
defaultKeymap.push({keys:'gq',type:'operator',operator:'hardWrap'});Vim.defineOperator("hardWrap",function(cm,operatorArgs,ranges,oldAnchor,newHead){// make changes and return new cursor position});
This plugin was originally authored by@mightyguava (Yunchi Luo) as part ofCodeMirror, before being extracted and maintained here.
About
Vim keybindings for CM6
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
No packages published