{"id":13572670,"url":"https://github.com/rhysd/NyaoVim","last_synced_at":"2025-04-04T10:31:05.546Z","repository":{"id":42618652,"uuid":"44830033","full_name":"rhysd/NyaoVim","owner":"rhysd","description":"Web-enhanced Extensible Neovim Frontend","archived":false,"fork":false,"pushed_at":"2018-04-23T11:50:07.000Z","size":8420,"stargazers_count":2223,"open_issues_count":52,"forks_count":57,"subscribers_count":47,"default_branch":"master","last_synced_at":"2025-03-31T02:11:42.064Z","etag":null,"topics":["desktop-app","editor","electron","gui","neovim","polymer"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/rhysd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-10-23T18:08:11.000Z","updated_at":"2025-03-14T04:05:17.000Z","dependencies_parsed_at":"2022-09-05T04:01:58.429Z","dependency_job_id":null,"html_url":"https://github.com/rhysd/NyaoVim","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhysd%2FNyaoVim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhysd%2FNyaoVim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhysd%2FNyaoVim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhysd%2FNyaoVim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rhysd","download_url":"https://codeload.github.com/rhysd/NyaoVim/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247160360,"owners_count":20893815,"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":["desktop-app","editor","electron","gui","neovim","polymer"],"created_at":"2024-08-01T14:01:32.066Z","updated_at":"2025-04-04T10:31:04.644Z","avatar_url":"https://github.com/rhysd.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"![NyaoVim](resources/title-bar.png)\n===================================\n\nThis is a [Neovim](https://neovim.io/) frontend built on [Electron](https://electronjs.org/).\nThe Neovim editor is [composed as a Web Component](https://github.com/rhysd/neovim-component) and users\ncan extend the UI with reusable Web Components, HTML, CSS and JavaScript.\n\n`:help design-not` says:\n\n\u003e Use Vim as a component from a shell or in an IDE.\n\nNyaoVim is built in the same spirit.  NyaoVim contains the Neovim editor as a Web Component and extends\nits UI with web technology, as in other modern editors and IDEs (e.g. [Atom](http://atom.io/),\n[VS Code](https://github.com/Microsoft/vscode), [LightTable](http://lighttable.com/)).\n\n\n## Goals\n\n- **NyaoVim bundles no extended UI by default.**  It only provides the nice UI plugin architecture.\n  Users can compose their favorite UI with Web Components, HTML and CSS.  It is also easy to make a NyaoVim\n  distribution where useful components are bundled.\n- **Do not introduce another plugin manager.**  HTML for Web Components should be bundled with Vim plugins.\n  Therefore, a Vim plugin manager can handle UI components, letting us bundle JS and Vim script code.\n- **Do not lose Vim's comfortability by default.**  It should be aware of performance.\n- **UI component creators can use powerful APIs, packages and tools**; [Node.js APIs](https://nodejs.org/en/docs/),\n  [Electron APIs](https://github.com/atom/electron/tree/master/docs/api), [Neovim msgpack-rpc APIs](https://neovim.io/doc/user/msgpack_rpc.html)),\n  so many [npm packages](https://www.npmjs.com/) and [Chrome DevTools](https://developers.google.com/web/tools/chrome-devtools/).\n- **Cross Platform** (Linux, OS X, Windows)\n\nMemo: 'nyao' is 'meow' in Japanese and its pronounce resembles 'neo'.\nIt is also an acronym for 'Not Yet Another Original'.\n\n\n## App Structure\n\nNyaoVim consists of Web Components on Electron as shown in the following figure.  At first there is\nonly `\u003cneovim-editor\u003e` and you can add/remove additional components.\n\n![structure](https://raw.githubusercontent.com/rhysd/ss/master/NyaoVim/structure.png)\n\n\n## UI Plugin Examples\n\nUI plugins are installable as easily as regular plugins.  Each of them is written within 100~300 lines.\nYou can also create reusable Web Components and integrate them into NyaoVim.\n\n- [nyaovim-markdown-preview](https://github.com/rhysd/nyaovim-markdown-preview)\n\n![nyaovim-markdown-preview screenshot](https://raw.githubusercontent.com/rhysd/ss/master/nyaovim-markdown-preview/main.gif)\n\n- [nyaovim-popup-tooltip](https://github.com/rhysd/nyaovim-popup-tooltip)\n\n![nyaovim-popup-tooltip screenshot](https://raw.githubusercontent.com/rhysd/ss/master/nyaovim-popup-tooltip/main.gif)\n\n- [nyaovim-mini-browser](https://github.com/rhysd/nyaovim-mini-browser)\n\n![nyaovim-mini-browser screenshot](https://raw.githubusercontent.com/rhysd/ss/master/nyaovim-mini-browser/main.gif)\n\n\n## Usage\n\n### Getting Started\n\nYou can install NyaoVim as an [npm package](https://www.npmjs.com/package/nyaovim).  Currently no packaging\nrelease is available yet.  If you use Windows and haven't installed Neovim yet, please read [first tips](docs/tips.md) first.\n\n```sh\n$ npm install -g nyaovim\n```\n\n`npm` may require `sudo` if you installed `node` pacakge via system package manager.\n\nIf you haven't installed Neovim yet, please install it following [Neovim's instructions](https://github.com/neovim/neovim/wiki/Installing-Neovim)\nbecause NyaoVim internally uses the `nvim` command.  **Note that `nvim` v0.1.6 or later is needed.**\n\nYou can start NyaoVim with the `nyaovim` command if you install this app with npm.\n\n```sh\n$ nyaovim [files...]\n```\n\nYou would see a minimal Neovim GUI editor (like gVim).  This is an Electron app and Neovim is drawn\non `\u003ccanvas\u003e`.  You can see the DevTools of this app with the 'Developer Tools' menu item.\n\nOn first start up of NyaoVim, it creates `~/.config/nyaovim/nyaovimrc.html` for UI configuration\n(`%AppData%` instead of `.config` in Windows).  Yes, you can extend and configure UI components with\nHTML and CSS!\n\n### Configure Editor Options\n\nI guess you're now thinking 'Hmm, font is not good and too small...'. You can configure some editor\noptions by properties of [`\u003cneovim-editor\u003e` properties](https://github.com/rhysd/neovim-component#neovim-editor-properties).\nFor example, below configures font face and font size by `font` and `font-size` properties.  Then set\nline-height to 1.5 (for example, Atom adopts 1.5 as line-height).\n\n```html\n\u003cneovim-editor\n    id=\"nyaovim-editor\"\n    argv=\"[[argv]]\"\n    font-size=\"14\"\n    font=\"Ricty,monospace\"\n    line-height=\"1.5\"\n\u003e\u003c/neovim-editor\u003e\n```\n\nAnd you can also configure browser window options with `browser-config.json` (e.g. Preserving window\nstate, Single instance app, and so on). See [tips](docs/tips.md) for more detail.\n\n### Install UI Plugin\n\nFor example, let's install [nyaovim-popup-tooltip](https://github.com/rhysd/nyaovim-popup-tooltip).\n\nAs described in the Goals section, a UI plugin is a normal Neovim plugin.  You can install it like\nany other Neovim plugin.  If you use [vim-plug](https://github.com/junegunn/vim-plug), all you need\nis adding below line to your `init.vim`.\n\n```vim\nPlug 'rhysd/nyaovim-popup-tooltip'\n```\n\nThen you need to put the popup tooltip UI on your NyaoVim interface.  Please open `~/.config/nyaovim/nyaovimrc.html`\n(`%AppData%` instead of `.config` in Windows).  As described in the Goals section, a user can build\na UI with HTML and CSS with high customization.\n\nPlease add `\u003cpopup-tooltip\u003e` tag under `\u003cneovim-editor\u003e` tag as below\n\n```html\n\u003cneovim-editor id=\"nyaovim-editor\" argv=\"[[argv]]\"\u003e\u003c/neovim-editor\u003e\n\u003cpopup-tooltip editor=\"[[editor]]\"\u003e\u003c/popup-tooltip\u003e\n```\n\n`\u003cpopup-tooltip\u003e` is a [Polymer](https://github.com/Polymer/polymer) component.\n`editor=\"[[editor]]\"` is a data binding in Polymer framework to pass editor instance to `\u003cpopup-tooltip\u003e`. It means\nunidirectional data flow from parent to child.\n\nAfter installing nyaovim-popup-tooltip as a Neovim plugin and adding UI to HTML, you're all done!\nOpen NyaoVim, move the cursor to any image path, and enter `gi`.  NyaoVim will load the image and show\nit in a popup tooltip as below.\n\n![nyaovim-popup-tooltip screenshot](https://raw.githubusercontent.com/rhysd/ss/master/nyaovim-popup-tooltip/main.gif)\n\n\n## Documents\n\nThere is more in documentation in the [docs directory](docs).\n\n- [How to Make UI Plugin](docs/make-ui-plugin.md)\n- [Tips](docs/tips.md)\n- [FAQ](docs/faq.md)\n- [Runtime API](docs/runtime-api.md)\n- [Browser Config](docs/browser-config.md)\n\n\n## Versioning\n\nNyaoVim is now under beta phase. Major version is fixed to 0 until it gets stable release.\n\nUpdating minor version means it contains breaking changes. And updating patch version means it contains\nno breaking change, so you can update version easily.\n\n\n## License\n\n[MIT License](/LICENSE.txt).\n\nLogo of this app is created based on [Neovim logo](https://neovim.io/) licensed under [CCA 3.0 Unported](https://creativecommons.org/licenses/by/3.0/legalcode).\n\n\u003e The Neovim logo by Jason Long is licensed under the Creative Commons Attribution 3.0 Unported License.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhysd%2FNyaoVim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhysd%2FNyaoVim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhysd%2FNyaoVim/lists"}