{"id":19913642,"url":"https://github.com/tabbyml/vim-tabby","last_synced_at":"2025-07-02T06:33:15.955Z","repository":{"id":203048119,"uuid":"708322549","full_name":"TabbyML/vim-tabby","owner":"TabbyML","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-13T04:42:35.000Z","size":1274,"stargazers_count":77,"open_issues_count":16,"forks_count":5,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-01T09:17:14.892Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TabbyML.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}},"created_at":"2023-10-22T07:55:24.000Z","updated_at":"2025-02-12T10:29:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"6309edbd-e21d-4368-80a7-161124a84e01","html_url":"https://github.com/TabbyML/vim-tabby","commit_stats":null,"previous_names":["tabbyml/vim-tabby"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/TabbyML/vim-tabby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TabbyML%2Fvim-tabby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TabbyML%2Fvim-tabby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TabbyML%2Fvim-tabby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TabbyML%2Fvim-tabby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TabbyML","download_url":"https://codeload.github.com/TabbyML/vim-tabby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TabbyML%2Fvim-tabby/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263086458,"owners_count":23411712,"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":[],"created_at":"2024-11-12T21:33:36.327Z","updated_at":"2025-07-02T06:33:15.902Z","avatar_url":"https://github.com/TabbyML.png","language":"Vim Script","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tabby Plugin for Vim and Neovim\n\nTabby is a self-hosted AI coding assistant that can suggest multi-line code or full functions in real-time. For more information, please check out our [website](https://tabbyml.com/) and [GitHub](https://github.com/TabbyML/tabby).  \nIf you encounter any problems or have any suggestions, please [open an issue](https://github.com/TabbyML/tabby/issues/new) or join our [Slack community](https://links.tabbyml.com/join-slack) for support.\n\n## Notable Changes in vim-tabby Plugin 2.0\n\nSince version 2.0, the vim-tabby plugin is designed as two parts:\n1. **LSP Client Extension**:\n   - Relies on an LSP client and extends it with methods (such as `textDocument/inlineCompletion`) to communicate with the tabby-agent.\n   - Note: The Node.js script of tabby-agent is no longer a built-in part of the vim-tabby plugin. You need to install tabby-agent separately via npm, and the LSP client will launch it using the command `npx tabby-agent --stdio`.\n2. **Inline Completion UI**:\n   - Automatically triggers inline completion requests when typing.\n   - Renders the inline completion text as ghost text.\n   - Sets up actions with keyboard shortcuts to accept or dismiss the inline completion.\n\n## Requirements\n\nThe Tabby plugin requires the following dependencies:\n\n- **Tabby Server**: The backend LLM server. You can install the Tabby server locally or have it hosted on a remote server. For Tabby server installation, please refer to this [documentation](https://tabby.tabbyml.com/docs/installation/).\n- **Tabby Agent (LSP server)**: Requires [Node.js](https://nodejs.org/en/download/) version v18.0+ and [tabby-agent](https://www.npmjs.com/package/tabby-agent) installed.\n    ```sh\n    npm install --global tabby-agent\n    ```\n- **LSP Client**: The Neovim built-in LSP client, or a Vim plugin that provides an LSP client. Supported LSP clients include:\n    - The Neovim built-in LSP client, with the [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) plugin installed.\n    - More clients are in development.\n- **Textprop Support**: Neovim, or Vim v9.0+ with `+textprop` features enabled. This is required for inline completion ghost text rendering.\n\n## Installation\n\nYou can install the Tabby plugin using your favorite plugin manager by simply adding `TabbyML/vim-tabby` to the registry.  \n\nHere is a detailed example setup with advanced options, based on [Neovim](https://neovim.io/), [Lazy.nvim](https://github.com/folke/lazy.nvim), and [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig).\n\n```lua\n-- ~/.config/nvim/init.lua\nrequire(\"lazy\").setup({\n  -- other plugins\n  -- ...\n  -- Tabby plugin\n  { \n    \"TabbyML/vim-tabby\",\n    lazy = false,\n    dependencies = {\n      \"neovim/nvim-lspconfig\",\n    },\n    init = function()\n      vim.g.tabby_agent_start_command = {\"npx\", \"tabby-agent\", \"--stdio\"}\n      vim.g.tabby_inline_completion_trigger = \"auto\"\n    end,\n  },\n})\n```\nAfter setting up the plugin, you can open a file in Neovim and use `:LspInfo` to check if the Tabby plugin is successfully connected.\n\n## Getting Started\n\n### 1. Setup Tabby Server\nThe Tabby plugin requires a Tabby server to work. Follow the [documentation](https://tabby.tabbyml.com/docs/installation/) to install and [create your account](https://tabby.tabbyml.com/docs/quick-start/register-account/).\n\n### 2. Connect to the Server\nEdit the tabby-agent config file located at `~/.tabby-client/agent/config.toml` to set up the server endpoint and token. This file may have been auto-created if you have previously used the tabby-agent or Tabby plugin for other IDEs. You can also manually create this file.\n\n    ```toml\n    [server]\n    endpoint = \"http://localhost:8080\"\n    token = \"your-auth-token\"\n    ```\n\n### 3. Code Completion \nTabby suggests code completions in real-time as you write code. You can also trigger the completion manually by pressing `\u003cC-\\\u003e`. To accept suggestions, simply press the `\u003cTab\u003e` key. You can also continue typing or explicitly press `\u003cC-\\\u003e` again to dismiss it.\n\n## Known Conflicts\n\n- Tabby will attempt to set up the `\u003cTab\u003e` key mapping to accept the inline completion and will fall back to the original function mapped to it. There could be a conflict with other plugins that also map the `\u003cTab\u003e` key. In such cases, you can use a different keybinding to accept the completion to avoid conflicts.\n\n- Tabby internally utilizes the `\u003cC-R\u003e\u003cC-O\u003e` command to insert the completion. If you have mapped it to other functions, the insertion of the completion text may fail.\n\n## Configurations\n\nYou can find a detailed explanation of tabby-agent configurations in the [Tabby online documentation](https://tabby.tabbyml.com/docs/extensions/configurations/).\n\nHere is a table of all configuration variables that can be set when the Tabby plugin initializes:\n\n| Variable | Default | Description |\n| --- | --- | --- |\n| `g:tabby_agent_start_command` | `[\"npx\", \"tabby-agent\", \"--stdio\"]` | The command to start the tabby-agent |\n| `g:tabby_inline_completion_trigger` | `\"auto\"` | The trigger mode of inline completion, can be `\"auto\"` or `\"manual\"` |\n| `g:tabby_inline_completion_keybinding_accept` | `\"\u003cTab\u003e\"` | The keybinding to accept the inline completion |\n| `g:tabby_inline_completion_keybinding_trigger_or_dismiss` | `\"\u003cC-\\\u003e\"` | The keybinding to trigger or dismiss the inline completion |\n| `g:tabby_inline_completion_insertion_leading_key` | `\"\\\u003cC-R\u003e\\\u003cC-O\u003e=\"` | The leading key sequence to insert the inline completion text |\n\n## Contributing\n\nRepository [TabbyML/vim-tabby](https://github.com/TabbyML/vim-tabby) is for releasing Tabby plugin for Vim and Neovim. If you want to contribute to Tabby plugin, please check our main repository [TabbyML/tabby](https://github.com/TabbyML/tabby/tree/main/clients/vim).\n\n## License\n\n[Apache-2.0](https://github.com/TabbyML/tabby/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftabbyml%2Fvim-tabby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftabbyml%2Fvim-tabby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftabbyml%2Fvim-tabby/lists"}