[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6613":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},6613,"vis","martanne\u002Fvis","martanne","A vi-like editor based on Plan 9's structural regular expressions","",null,"C",4627,281,92,135,0,4,8,44,15,29.35,"Other",false,"master",true,[27,28,29,30,31,32],"c","console-application","lua","modal-editing","structural-regex","text-editor","2026-06-12 02:01:27","# Vis - Combining Modal Editing with Structural Regular Expressions\n\n[![Development discussion](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Femail-~martanne%2Fdevel-black?logo=sourcehut)](https:\u002F\u002Flists.sr.ht\u002F~martanne\u002Fdevel)\n[![builds.sr.ht status](https:\u002F\u002Fbuilds.sr.ht\u002F~martanne\u002Fvis\u002Fcommits.svg)](https:\u002F\u002Fbuilds.sr.ht\u002F~martanne\u002Fvis\u002Fcommits?)\n[![Coverity Scan Build Status](https:\u002F\u002Fscan.coverity.com\u002Fprojects\u002F3939\u002Fbadge.svg)](https:\u002F\u002Fscan.coverity.com\u002Fprojects\u002F3939)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fmartanne\u002Fvis\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fmartanne\u002Fvis)\n[![Documentation Status](https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fvis\u002Fbadge\u002F?version=master)](http:\u002F\u002Fvis.readthedocs.io\u002Fen\u002Fmaster\u002F?badge=master)\n[![#vis-editor on libera](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FIRC-%23vis--editor-blue?logo=libera.chat)](ircs:\u002F\u002Firc.libera.chat:6697\u002Fvis-editor)\n\nVis aims to be a modern, legacy-free, simple yet efficient editor,\ncombining the strengths of both vi(m) and sam.\n\nIt extends vi's modal editing with built-in support for multiple\ncursors\u002Fselections and combines it with [sam's](http:\u002F\u002Fsam.cat-v.org\u002F)\n[structural regular expression](http:\u002F\u002Fdoc.cat-v.org\u002Fbell_labs\u002Fstructural_regexps\u002F)\nbased [command language](http:\u002F\u002Fdoc.cat-v.org\u002Fbell_labs\u002Fsam_lang_tutorial\u002F).\n\nA universal editor, it has decent Unicode support and should cope with arbitrary\nfiles, including large, binary or single-line ones.\n\nEfficient syntax highlighting is provided using\n[Parsing Expression Grammars](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FParsing_expression_grammar),\nwhich can be conveniently expressed using [Lua](http:\u002F\u002Fwww.lua.org\u002F)\nin the form of [LPeg](http:\u002F\u002Fwww.inf.puc-rio.br\u002F~roberto\u002Flpeg\u002F).\n\nThe editor core is written in a reasonable amount of clean (your mileage\nmay vary), modern and legacy-free C code, enabling it to run in\nresource-constrained environments. The implementation should be easy to hack on\nand encourages experimentation. There is also a Lua API for in-process\nextensions.\n\nVis strives to be *simple* and focuses on its core task: efficient text\nmanagement. Clipboard and digraph handling as well as a fuzzy file open\ndialog are all provided by independent utilities. There exist plans to use\na client\u002Fserver architecture, delegating window management to your windowing\nsystem or favorite terminal multiplexer.\n\nThe intention is *not* to be bug-for-bug compatible with vi(m). Instead,  \nwe aim to provide more powerful editing features based on an elegant design\nand clean implementation.\n\n[![vis demo](https:\u002F\u002Fasciinema.org\u002Fa\u002F41361.png)](https:\u002F\u002Fasciinema.org\u002Fa\u002F41361)\n\nBuild instructions\n------------------\n\nIn order to build vis you will need a\n[C99](http:\u002F\u002Fwww.open-std.org\u002Fjtc1\u002Fsc22\u002Fwg14\u002Fwww\u002Fdocs\u002Fn1256.pdf)\ncompiler, a [POSIX.1-2008](http:\u002F\u002Fpubs.opengroup.org\u002Fonlinepubs\u002F9699919799\u002F)\ncompatible environment as well as:\n\n * [libtermkey](http:\u002F\u002Fwww.leonerd.org.uk\u002Fcode\u002Flibtermkey\u002F)\n * [curses](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCurses_(programming_library)) (recommended)\n * [Lua](http:\u002F\u002Fwww.lua.org\u002F) >= 5.2 (optional)\n * [LPeg](http:\u002F\u002Fwww.inf.puc-rio.br\u002F~roberto\u002Flpeg\u002F) >= 0.12\n   (optional runtime dependency required for syntax highlighting)\n * [TRE](http:\u002F\u002Flaurikari.net\u002Ftre\u002F) (optional for more memory efficient regex search)\n\nAssuming these dependencies are met, execute:\n\n    $ .\u002Fconfigure && make && sudo make install\n\nBy default the `configure` script will try to auto detect support for\nLua using `pkg-config(1)`. See `configure --help` for a list of supported\noptions. You can also manually tweak the generated `config.mk` file.\n\nOr simply use one of the\n[distribution provided packages](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fwiki\u002FDistribution-Packages).\n\nDocumentation\n-------------\n\nEnd user documentation can be found in the\n[`vis(1)` manual page](http:\u002F\u002Fmartanne.github.io\u002Fvis\u002Fman\u002Fvis.1.html)\nand the [Wiki](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fwiki). Read the\n[FAQ](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fwiki\u002FFAQ) for common questions.\nLearn about some differences compared to\n[`sam(1)`](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fwiki\u002FDifferences-from-Sam) and\n[`vim(1)`](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fwiki\u002FDifferences-from-Vi(m)),\nrespectively.\n\n[C API](https:\u002F\u002Fvis.readthedocs.io\u002F) as well as [Lua API](http:\u002F\u002Fmartanne.github.io\u002Fvis\u002Fdoc\u002F)\ndocumentation is also available.\n\nNon Goals\n---------\n\n  Some features which will *not* be implemented:\n\n   - tabs \u002F multiple workspaces \u002F advanced window management\n   - file and directory browser\n   - support for file archives (tar, zip, ...)\n   - support for network protocols (ftp, http, ssh ...)\n   - encryption\n   - compression\n   - GUIs (neither x11, motif, gtk, win32 ...) although the codebase\n     should make it easy to add them\n   - VimL\n   - right-to-left text\n   - ex mode, we have more elegant structural regexp\n   - diff mode\n   - vimgrep\n   - internal spell checker\n   - lots of compile time configurable features \u002F `#ifdef` mess\n\nHow to help?\n------------\n\nThere are plenty of ways to contribute, below are a few ideas:\n\n * Artwork\n    - [Color Themes](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fwiki\u002FThemes)\n    - [Name](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fissues\u002F338) +\n      [Logo](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fissues\u002F328)\n    - Homepage?\n * Documentation\n    - [Manual Pages](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fwiki\u002FDeveloper-Overview#manual-pages)\n    - Improve `:help` output\n * Lua\n    - [API Documentation](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fwiki\u002FDeveloper-Overview#api-documentation)\n      and Examples\n    - [Unit Tests](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis-test\u002Ftree\u002Fmaster\u002Flua)\n    - [Plugin Development](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fwiki\u002FPlugins)\n    - [API Design](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fissues\u002F292)\n * [Testing Infrastructure](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis-test)\n * [Distribution Packaging](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fwiki\u002FDistribution-Packages)\n * [Core Editor Design](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fissues?q=is%3Aopen+is%3Aissue+label%3Adesign)\n\nCheckout the [Developer Overview](https:\u002F\u002Fgithub.com\u002Fmartanne\u002Fvis\u002Fwiki\u002FDeveloper-Overview)\nto get started and do not hesitate to ask question in the `#vis-editor`\nIRC channel on libera ([join via your browser](https:\u002F\u002Fweb.libera.chat\u002F#vis-editor)).\n","Vis 是一个基于 Plan 9 结构化正则表达式的类 vi 编辑器。它结合了 vi 的模式编辑和 sam 的结构化正则表达式，支持多光标\u002F选择，并提供高效的语法高亮功能。核心代码用现代且无遗留问题的 C 语言编写，确保在资源受限环境中也能良好运行，并通过 Lua API 支持扩展。该编辑器适合需要高效文本处理、支持 Unicode 和大文件操作的场景，尤其适用于开发人员和系统管理员。",2,"2026-06-11 03:07:54","top_language"]