Skip to content
kepbodPublic

About

I love Vim, and I also love modifying it to be more convenient and efficient. So I name it "ivim"! Welcome to contribute to ivim.

Topics

Resources

Stars

478 stars

Watchers

34 watching

Forks

Latest commit

 

History

406 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ivim

An easy and customizable Vim/Neovim setup with a modern Neovim path and legacy Vim paths in one repository.

    _       _
   (_)   __(_)___ ___
  / / | / / / __ `__ \
 / /| |/ / / / / / / /
/_/ |___/_/_/ /_/ /_/

Current Status

ivim now provides three tracks:

  1. nvim/init.lua (modern Neovim, recommended)
  2. vimrc_mini (legacy Vim/Neovim script config)
  3. vimrc (legacy full config, not actively maintained)

If you like this project, you can buy me a coffee.

Choose a Track

Track File Best for Status
Modern Neovim nvim/init.lua Neovim users who want modern plugins and Lua config Recommended
Mini legacy vimrc_mini Vim 8+ and users who prefer Vimscript setup Stable
Full legacy vimrc Historical ivim setup Not maintained

Highlights (Modern Neovim)

  • Nord-based UI
  • Single-file config (nvim/init.lua)
  • lazy.nvim plugin management
  • telescope.nvim + neo-tree.nvim navigation
  • nvim-lspconfig + mason.nvim + nvim-cmp for LSP/completion
  • treesitter, formatting (conform.nvim), linting (nvim-lint)

Screenshots

Legacy screenshots are kept for reference:

  • ivim: ivim
  • ivim_mini: ivim_mini

Requirements

For modern Neovim track (-N)

  • Neovim 0.10+
  • Git
  • curl or wget
  • Node.js + npm (for pyright and other npm-based Mason packages)
  • Recommended external tools: shellcheck, ruff, markdownlint, eslint_d

For legacy tracks (-i, -m, -u)

  • Vim 7.3+ (-i) / Vim 8.0+ (-m) / Neovim (-u)
  • Git
  • Optional: ctags

Installation

Modern Neovim (recommended)

bash <(curl -L https://raw.githubusercontent.com/kepbod/ivim/master/setup.sh) -N
# or
bash <(wget --no-check-certificate https://raw.githubusercontent.com/kepbod/ivim/master/setup.sh -O -) -N

Legacy full ivim

bash <(curl -L https://raw.githubusercontent.com/kepbod/ivim/master/setup.sh) -i

Legacy mini for Vim

bash <(curl -L https://raw.githubusercontent.com/kepbod/ivim/master/setup.sh) -m

Legacy mini for Neovim (Vimscript)

bash <(curl -L https://raw.githubusercontent.com/kepbod/ivim/master/setup.sh) -u

Setup Script Options

setup.sh supports:

  • -i: install legacy full ivim
  • -m: install legacy mini for Vim
  • -u: install legacy mini for Neovim
  • -N: install modern Neovim single-file config
  • -n: update ivim and installed plugins
  • -d / --dry-run: print actions without changing files
  • -y / --yes: auto-confirm prompts

Examples:

# Preview modern Neovim install
bash setup.sh --dry-run -N

# Install modern Neovim config non-interactively
bash setup.sh --yes -N

# Update non-interactively
bash $HOME/.ivim/setup.sh --yes -n

Updating

bash $HOME/.ivim/setup.sh -n

Configuration Notes

  • Modern Neovim config lives in nvim/init.lua.
  • Legacy mini config is vimrc_mini.
  • Legacy full config is vimrc.
  • The modern Neovim track enables LSP by default for Lua (lua_ls), Python (pyright), and Markdown (marksman) through mason.nvim.
  • Opening a directory (nvim . or nvim <dir>) makes it the working directory and reveals it in the file tree.
  • Plugin versions are pinned in nvim/lazy-lock.json, which is tracked in this repo.
  • Leader key is Space.
  • Default LSP keys in the modern track include gd/gr/gi/gD, K, <leader>ls, <leader>rn, <leader>ca, and <leader>cf.
  • Default diagnostics keys include [d/]d, <leader>le, <leader>ld, <leader>lj, and <leader>lk.

Keymap Quick Reference (Modern Neovim)

  • Space then wait: open which-key hints
  • Space ?: open full keymap hints
  • Space ff: find files
  • Space fg: live grep
  • Space fb: buffers
  • Space fr: recent files
  • Space f: toggle file tree
  • Space t: symbols outline
  • Space wh/wj/wk/wl: move between windows
  • Space wv / Space ws: split vertical / horizontal
  • Space wq: close current window
  • Space le / Space ld: line diagnostics / diagnostics list
  • Space rn: rename symbol
  • Space ca: code action
  • Space cf: format buffer
  • Space ss / Space sl: save / load session

For historical customization docs, see the wiki:

Contributing

Contributions are welcome. See issue #31 for context.

License

MIT. See LICENSE.txt.

About

I love Vim, and I also love modifying it to be more convenient and efficient. So I name it "ivim"! Welcome to contribute to ivim.

Topics

Resources

Stars

478 stars

Watchers

34 watching

Forks

Releases

Packages

Used by

Contributors

Languages