{"id":13440586,"url":"https://github.com/martanne/vis","last_synced_at":"2025-05-13T15:11:43.122Z","repository":{"id":23317544,"uuid":"26677418","full_name":"martanne/vis","owner":"martanne","description":"A vi-like editor based on Plan 9's structural regular expressions","archived":false,"fork":false,"pushed_at":"2025-04-01T06:10:56.000Z","size":6064,"stargazers_count":4354,"open_issues_count":126,"forks_count":269,"subscribers_count":97,"default_branch":"master","last_synced_at":"2025-05-09T01:47:55.774Z","etag":null,"topics":["c","console-application","lua","modal-editing","structural-regex","text-editor"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/martanne.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-11-15T11:09:17.000Z","updated_at":"2025-05-04T18:13:49.000Z","dependencies_parsed_at":"2023-11-19T00:26:25.680Z","dependency_job_id":"ebed8a41-6e9b-4fe9-a948-7895b876599b","html_url":"https://github.com/martanne/vis","commit_stats":{"total_commits":2915,"total_committers":152,"mean_commits":19.17763157894737,"dds":"0.21680960548885075","last_synced_commit":"c0d083f4ca827d83c6b8beafd52a0ea95ece73da"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martanne%2Fvis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martanne%2Fvis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martanne%2Fvis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martanne%2Fvis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/martanne","download_url":"https://codeload.github.com/martanne/vis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253969260,"owners_count":21992263,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","console-application","lua","modal-editing","structural-regex","text-editor"],"created_at":"2024-07-31T03:01:24.193Z","updated_at":"2025-05-13T15:11:38.094Z","avatar_url":"https://github.com/martanne.png","language":"C","readme":"# Vis - Combining Modal Editing with Structural Regular Expressions\n\n[![Development discussion](https://img.shields.io/badge/email-~martanne%2Fdevel-black?logo=sourcehut)](https://lists.sr.ht/~martanne/devel)\n[![builds.sr.ht status](https://builds.sr.ht/~martanne/vis/commits.svg)](https://builds.sr.ht/~martanne/vis/commits?)\n[![Coverity Scan Build Status](https://scan.coverity.com/projects/3939/badge.svg)](https://scan.coverity.com/projects/3939)\n[![codecov](https://codecov.io/gh/martanne/vis/branch/master/graph/badge.svg)](https://codecov.io/gh/martanne/vis)\n[![Documentation Status](https://readthedocs.org/projects/vis/badge/?version=master)](http://vis.readthedocs.io/en/master/?badge=master)\n[![#vis-editor on libera](https://img.shields.io/badge/IRC-%23vis--editor-blue?logo=libera.chat)](ircs://irc.libera.chat:6697/vis-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/selections and combines it with [sam's](http://sam.cat-v.org/)\n[structural regular expression](http://doc.cat-v.org/bell_labs/structural_regexps/)\nbased [command language](http://doc.cat-v.org/bell_labs/sam_lang_tutorial/).\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://en.wikipedia.org/wiki/Parsing_expression_grammar),\nwhich can be conveniently expressed using [Lua](http://www.lua.org/)\nin the form of [LPeg](http://www.inf.puc-rio.br/~roberto/lpeg/).\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/server 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://asciinema.org/a/41361.png)](https://asciinema.org/a/41361)\n\nBuild instructions\n------------------\n\nIn order to build vis you will need a\n[C99](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf)\ncompiler, a [POSIX.1-2008](http://pubs.opengroup.org/onlinepubs/9699919799/)\ncompatible environment as well as:\n\n * [libtermkey](http://www.leonerd.org.uk/code/libtermkey/)\n * [curses](https://en.wikipedia.org/wiki/Curses_(programming_library)) (recommended)\n * [Lua](http://www.lua.org/) \u003e= 5.2 (optional)\n * [LPeg](http://www.inf.puc-rio.br/~roberto/lpeg/) \u003e= 0.12\n   (optional runtime dependency required for syntax highlighting)\n * [TRE](http://laurikari.net/tre/) (optional for more memory efficient regex search)\n\nAssuming these dependencies are met, execute:\n\n    $ ./configure \u0026\u0026 make \u0026\u0026 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://github.com/martanne/vis/wiki/Distribution-Packages).\n\nDocumentation\n-------------\n\nEnd user documentation can be found in the\n[`vis(1)` manual page](http://martanne.github.io/vis/man/vis.1.html)\nand the [Wiki](https://github.com/martanne/vis/wiki). Read the\n[FAQ](https://github.com/martanne/vis/wiki/FAQ) for common questions.\nLearn about some differences compared to\n[`sam(1)`](https://github.com/martanne/vis/wiki/Differences-from-Sam) and\n[`vim(1)`](https://github.com/martanne/vis/wiki/Differences-from-Vi(m)),\nrespectively.\n\n[C API](https://vis.readthedocs.io/) as well as [Lua API](http://martanne.github.io/vis/doc/)\ndocumentation is also available.\n\nNon Goals\n---------\n\n  Some features which will *not* be implemented:\n\n   - tabs / multiple workspaces / 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 / `#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://github.com/martanne/vis/wiki/Themes)\n    - [Name](https://github.com/martanne/vis/issues/338) +\n      [Logo](https://github.com/martanne/vis/issues/328)\n    - Homepage?\n * Documentation\n    - [Manual Pages](https://github.com/martanne/vis/wiki/Developer-Overview#manual-pages)\n    - Improve `:help` output\n * Lua\n    - [API Documentation](https://github.com/martanne/vis/wiki/Developer-Overview#api-documentation)\n      and Examples\n    - [Unit Tests](https://github.com/martanne/vis-test/tree/master/lua)\n    - [Plugin Development](https://github.com/martanne/vis/wiki/Plugins)\n    - [API Design](https://github.com/martanne/vis/issues/292)\n * [Testing Infrastructure](https://github.com/martanne/vis-test)\n * [Distribution Packaging](https://github.com/martanne/vis/wiki/Distribution-Packages)\n * [Core Editor Design](https://github.com/martanne/vis/issues?q=is%3Aopen+is%3Aissue+label%3Adesign)\n\nCheckout the [Developer Overview](https://github.com/martanne/vis/wiki/Developer-Overview)\nto get started and do not hesitate to ask question in the `#vis-editor`\nIRC channel on libera ([join via your browser](https://web.libera.chat/#vis-editor)).\n","funding_links":[],"categories":["C","Text Editors","Applications","编辑器","\u003ca name=\"editors\"\u003e\u003c/a\u003eEditors","Influenced by Plan9","Table of Contents","\\*nix/\\*nux"],"sub_categories":["Windows","Text Editors","资源传输下载","Editors"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartanne%2Fvis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartanne%2Fvis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartanne%2Fvis/lists"}