{"id":20945924,"url":"https://github.com/eviweb/cosynvim","last_synced_at":"2026-04-27T09:01:38.947Z","repository":{"id":147347787,"uuid":"550279743","full_name":"eviweb/cosynvim","owner":"eviweb","description":"Neovim personal config based on Cosynvim","archived":false,"fork":false,"pushed_at":"2022-10-18T15:25:26.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-27T19:20:44.093Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eviweb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"custom":["https://www.paypal.me/bobbyhub"]}},"created_at":"2022-10-12T13:47:07.000Z","updated_at":"2022-10-12T13:47:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"d0e00b6b-d5ef-464e-9f94-5df2333b9a49","html_url":"https://github.com/eviweb/cosynvim","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"nvimdev/dope","purl":"pkg:github/eviweb/cosynvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eviweb%2Fcosynvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eviweb%2Fcosynvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eviweb%2Fcosynvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eviweb%2Fcosynvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eviweb","download_url":"https://codeload.github.com/eviweb/cosynvim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eviweb%2Fcosynvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32329466,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-18T23:51:14.201Z","updated_at":"2026-04-27T09:01:38.926Z","avatar_url":"https://github.com/eviweb.png","language":"Lua","funding_links":["https://www.paypal.me/bobbyhub","https://paypal.me/bobbyhub"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg\n    src=\"https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png\"\n    height=\"30\"\n    width=\"0px\"\n  /\u003e\n  Cosynvim\n  \u003cimg\n    src=\"https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png\"\n    height=\"30\"\n    width=\"0px\"\n  /\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/glepnir/cosynvim/stargazers\"\u003e\n    \u003cimg\n      alt=\"Stargazers\"\n      src=\"https://img.shields.io/github/stars/glepnir/cosynvim?style=for-the-badge\u0026logo=starship\u0026color=c678dd\u0026logoColor=d9e0ee\u0026labelColor=282a36\"\n    /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/glepnir/cosynvim/issues\"\u003e\n    \u003cimg\n      alt=\"Issues\"\n      src=\"https://img.shields.io/github/issues/glepnir/cosynvim?style=for-the-badge\u0026logo=gitbook\u0026color=f0c062\u0026logoColor=d9e0ee\u0026labelColor=282a36\"\n    /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/glepnir/cosynvim/contributors\"\u003e\n    \u003cimg\n      alt=\"Contributors\"\n      src=\"https://img.shields.io/github/contributors/glepnir/cosynvim?style=for-the-badge\u0026logo=opensourceinitiative\u0026color=abcf84\u0026logoColor=d9e0ee\u0026labelColor=282a36\"\n    /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/41671631/176990490-aeb6111b-41ea-4767-bc03-c0aee4774a4e.png\"\n  height = \"40%\"\n  widht = \"40%\"\n  /\u003e\n\u003c/p\u003e\n\n## What is Cosynvim\n\nMany people are interested in my [personal configuration](https://github.com/glepnir/nvim). So I created Cosynvim.\n\nWhat does Cosynvim do? Cosynvim wants vimers to have their own config with high performance\n\nfast speed and modernity.\n\n## Structure\n\n```\n├── init.lua  \n├── lua\n│   ├── core                       heart of cosynvim provide api\n│   │   ├── init.lua\n│   │   ├── keymap.lua             keymap api\n│   │   ├── options.lua            vim options\n│   │   └── pack.lua               hack packer\n│   ├── keymap                     your keymap in here\n│   │   ├── config.lua\n│   │   └── init.lua\n│   └── modules                    plugins module usage example\n│       ├── completion\n│       │   ├── config.lua\n│       │   └── plugins.lua\n│       ├── lang\n│       │   ├── config.lua\n│       │   └── plugins.lua\n│       ├── tools\n│       │   ├── config.lua\n│       │   └── plugins.lua\n│       └── ui\n│           ├── config.lua\n│           ├── eviline.lua\n│           └── plugins.lua\n├── snippets                       snippets \n│   ├── lua.json\n│   └── package.json\n└── static                         dashboard logo\n    └── neovim.cat\n\n```\n\nA nice structure right ? Looks complicated ? You can delete any folder except core and keymap modules. The\n\nrule of `modules` is you can delete folders in modules. And create folder with your favorite name, but you must\n\ncreate `plugins.lua` and register your plugins in this file by using cosynvim api.\n\n## Usage\n\n- Click button `Use this template` It will genereate a new repo based on cosy on your github\n\n- Then you need input repo name, Give your nvim configuration a nice name\n\n- Enjoy\n\n### How to install plugins\n\nApi is `require('core.pack').register_plugin`. So pass plugin as param into this function. Usage\n\nlike in `modules/your-folder-name/plugins.lua`\n\n```lua\nlocal plugin = require('core.pack').register_plugin\nlocal conf = require('modules.ui.config')\n\nplugin {'glepnir/zephyr-nvim', config = conf.zephyr}\n\nplugin {'plugin github repo name'}\n```\n\nwhat is `config` . This is a keyword of [packer.nvim](https://github.com/wbthomason/packer.nvim), you need to check the doc of packer to know how to use packer.\n\nIf a plugin has many configs you can create other file in `modules/your-folder-name/config.lua` avoid\nmaking the\n\nplugins.lua file too long. Recommend lazyload plugins. Check the usage in `modules` , it will improve your neovim\n\nstart speed. `lazyload` is not magic, it just generate your config into some `autocmds` , you can check the\n\n`packer_compiled.lua` to check it. I don't like the default path config in packer it use `plugins` folder  So i set\n\ncompiled file path to `~/.local/share/nvim/site/lua`, you can find compiled file in this path. Use `:h autocmd`\n\nto know more about. When you edit the config and open neovim and it does not take effect. Please try\n\n `PackerCompile` to generate a new compile file with your new change. In my personal config i have a function that\n\n can auto compiled . when i edit the lua file that in this path `~/.config/nvim`. But it will make some noise so I didn't\n\n use it in cosynvim. when i have a newimplement I will update it to cosynvim core.\n\n```lua\n\n-- modules/completion/plugins.lua\nplugin {'neovim/nvim-lspconfig',\n -- used filetype to lazyload lsp\n -- config your language filetype in here\n  ft = { 'lua','rust','c','cpp'},\n  config = conf.nvim_lsp,\n}\n\n-- modules/tools/plugins.lua\nplugin {'nvim-telescope/telescope.nvim',\n  -- use command to lazyload.\n  cmd = 'Telescope',\n  config = conf.telescope,\n  requires = {\n    {'nvim-lua/popup.nvim', opt = true},\n    {'nvim-lua/plenary.nvim',opt = true},\n    {'nvim-telescope/telescope-fzy-native.nvim',opt = true},\n  }\n}\n```\n\n### How to config keymap\n\nIn cosynvim there are some apis that make it easy to set keymap. All apis are defined in `core/keymap.lua`.\n\n```lua\nkeymap.(n/i/c/v/x/t)map -- function to generate keymap by vim.keymap.set\nkeymap.new_opts -- generate opts into vim.keymap.set\n-- function type that work with keymap.new_opts\nkeymap.silent keymap.noremap keymap.expr keymap.nowait keymap.remap\nkeymap.cmd -- just return string with \u003cCmd\u003e and \u003cCR\u003e\nkeymap.cu -- work like cmd but for visual map\n```\n\nUse these apis to config your keymap in `keymap` folder. In this folder `keymap/init.lua` is necessary but if you\n\nhave many vim mode remap you can config them in `keymap/other-file.lua` in cosynvim is `config.lua` just an\n\nexample file. Then config plugins keymap in `keymap/init.lua`. the example of api usage\n\n```lua\n-- genreate keymap in noremal mode\nnmap {\n  -- packer\n  {'\u003cLeader\u003epu',cmd('PackerUpdate'),opts(noremap,silent,'Packer update')},\n  {'\u003cLeader\u003epi',cmd('PackerInstall'),opts(noremap,silent)},\n  {'\u003cLeader\u003epc',cmd('PackerCompile'),opts(noremap,silent)},\n}\n```\n\n`map` foreach every table and generate a new table that can pass to `vim.keymap.set`. `cmd('PackerUpdate')` just\n\nreturn a string `\u003ccmd\u003ePackerUpdate\u003cCR\u003e` as rhs. lhs is `\u003cleader\u003epu\u003e`, `opts(noremap,silent,'Packer update')` generate options table\n\n`{noremap = true,silent = true, desc = 'Packer Update' }` . for some vim mode remap. not need use `cmd` function. oh maybe you will be\n\nconfused what is `\u003ccmd\u003e` check `:h \u003ccmd\u003e` you will get answer\n\n```lua\n  -- window jump\n  {\"\u003cC-h\u003e\",'\u003cC-w\u003eh',opts(noremap)},\n```\n\nalso you can pass a table not include sub table to `map` like\n\n```lua\nnmap {'key','rhs',opts(noremap,silent)}\n```\n\nuse `:h vim.keymap.set` to know more about.\n\n## Tips\n\n- Improve key repeat\n\n```\nmac os need restart\ndefaults write NSGlobalDomain KeyRepeat -int 1\ndefaults write NSGlobalDomain InitialKeyRepeat -int 10\n\nlinux\nxset r rate 210 40\n```\n\n## Donate\n\n[![](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge\u0026logo=paypal\u0026logoColor=white)](https://paypal.me/bobbyhub)\n\nIf you'd like to support my work financially, buy me a drink through [paypal](https://paypal.me/bobbyhub)\n\n## Licenese MIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feviweb%2Fcosynvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feviweb%2Fcosynvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feviweb%2Fcosynvim/lists"}