Home

Awesome

One.nvim

All-in-one neovim configuration framework implemented with Lua. It is highly flexible to be customized and extended.

English | 中文

Features

Screenshots

<details open> <summary>Click to expend/collapse</summary>

Dashboard

dashboard.png

UI

UI.png

UI-2.png

Hidden cmdline

UI-noice.png

If you don't like the hidden cmdline, you can disable noice.nvim plugin to get the classic UI. Follow this config:

require('one').setup { plugins = { 'noice', disable = true } }

Outline

outline.png

Press <space>o to open the outline.

File Finder

finder.png

Press <space>f to open the file finder.

Keymaps

keymaps.png

Press <space>k to open the keymap finder.

Command Finder

cmd-finder.png

Press <space>p to open the keymap finder.

Diagnostic

diagnostic.png

Press <space>d or <space>D to open the diagnostic list. See Diagnostic keymaps.

Completion

completion.png

Function signature completion

completion-function-args.png

</details>

Installation

Update

You can update the one.nvim via plugin manager or commands :OneUpdate one or :lua one.update('one').

Please submit issue when encounter problems after updating.

FAQ

Notice

Configuration

require('one').setup {}

All config options are optional. You can override default configs. Please read User Config.

Plugin Manager

Note: One.nvim will install plugin manager on start up. So user should not install one.nvim via plugin manager.

Choose your favorite plugin manager. Now available: lazy (default), vim-plug, packer, local.

require('one').setup {
  config = {
    pluginManager = { use = 'lazy' }, -- 'lazy' or 'vim-plug' or 'packer' or 'local'
  },
}
lazyvim-plugpacker
Plugins Directory{DATA_DIR}/plugins{DATA_DIR}/plugins{DATA_DIR}/site/pack/user/start/packer.nvim
Default Configlua/one/config/lazy.lualua/one/config/vim-plug.lualua/one/config/packer.lua

The value of {DATA_DIR} is :lua print(vim.fn.stdpath('data')).

When you change to packer from lazy or vim-plug, the plugins should be reinstalled. Read initialization for details.

When config.pluginManager.use = 'local', this plugin manager can only load local plugins. It cannnot install packages from remote.

Plugin

All plugins can be turned off, overridden default config options, replaced with your favorites. It is highly flexible to be customized and extended.

Read ./doc/plugin.md for plugin definitions and references.

You can even set onlyPlugins = {} to disable all plugins. Read Debug - Disable other plugins.

You can invoke :OneShowPlugins to view disabled and enabled plugins.

Usage

API

Just read codes.

Project File Structure

.
├── doc/                     // Documents
├── lua/
│   └── one/
│       ├── async.lua        // async library
│       ├── config/          // Keymaps
│       │   ├── colors.lua   // Default color config
│       │   ├── default.lua  // Default config
│       │   ├── packer.lua   // packer.nvim default config
│       │   ├── symbol.lua   // symbols
│       │   └── vim-plug.lua // vim-plug default config
│       ├── config.lua       // Config loader
│       ├── consts.lua       // Constants
│       ├── filetype.lua     // FileType autocmd
│       ├── one.lua          // The one singleton
│       ├── init.lua         // The lua required entry point
│       ├── plugins.lua      // Plugin loading list
│       ├── util.lua         // Utility functions
│       ├── util_spec.lua    // Unit test for util.lua
│       ├── keymap/          // Keymaps
│       ├── plugins/         // Available plugins written in lua
│       │   └── themes/      // Color schemas
│       └── plugin-manager/
│           ├── init.lua     // Plugin Manager
│           ├── lazy.lua     // Wrapper for lazy.nvim
│           ├── local.lua    // Only load local files
│           ├── vim-plug.lua // Wrapper for vim-plug
│           └── packer.lua   // Wrapper for packer.nvim
└── scripts/                 // scripts for building project

Suggestion, Bug Reporting, Contributing

Before opening new Issue/Discussion/PR and posting any comments, please read ./CONTRIBUTING.md.

Copyright and License

Copyright 2016-2024 ADoyle (adoyle.h@gmail.com). Some Rights Reserved. The project is licensed under the BSD 3-clause License.

Read the LICENSE file for the specific language governing permissions and limitations under the License.

Read the NOTICE file distributed with this work for additional information regarding copyright ownership.

Other Projects

Other nvim projects created by me.

<!-- links -->