mirror of
https://github.com/prurigro/darkcloud-nvimconfig.git
synced 2024-12-22 07:50:23 -05:00
11 KiB
11 KiB
darkcloud-nvimconfig
A theme, config and collection of plugins for Neovim
Requirements
- Neovim: neovim is a hard dependency
- Bash: Required by the update script
- Coreutils: Required by the update script
- Git: Required by the update script and git-related plugins
Optional Requirements
- Powerline Fonts: Required to enable the fancier looking status line
- Universal CTags: Required by vim-gutentags and vista, and optional for nvim-cmp
- Compilers, Linters and Runtimes: The ale plugin can use compilers, linters and runtimes to provide real-time syntax checking
- Python: Required to enable the MatchTagAlways plugin
Distribution Features
- Default Configuration: A complete set of defaults, focusing on the most modern settings that still provide a compatible experience
- Custom theme: An original colour scheme with explicit values set to optimize the look of individual file types
- Key Bindings/Aliases: A set of bindings and aliases defined to group similar features and provide numerous (and sometimes more familiar) ways to access options
- Plugins: A set of plugins have been included and configured to provide support for most normally-unsupported file types, and a set of features useful when using Vim as an editor
- Custom Configuration: A second vimrc and bundle folder are included that aren't maintained as part of the repo, making custom plugins and configuration easy to add
Installation
- Clone the darkcloud-nvimconfig repo and run the
update
script - Add
source /path/to/darkcloud-nvimconfig/init.vim
to your neovim init
Configuration
- Configure Variables: The following variables can be added to
local/user.vim
and have their values set to the values you require:g:autostartchecker
: 1 = Enable the syntax checker when a file is opened | 0 = Check syntax only after being toggled on (default: 0)g:enabletreesitter
: 1 = Use treesitter for compatible files | 0 = Keep treesitter disabled (default: 0)g:enablecompletion
: 1 = Enable autocompletion | 0 = Disable autocompletion (default: 0)g:enableautotags
: 1 = Automatically generate tags files | 0 = Disable tag generation (default: 0)g:enablepowerline
: 1 = Render the status line using characters that require powerline-patched fonts | 0 = Render the status line with characters that work with all fonts (default: 0)
- Custom Plugins: Pathogen compatible plugins can be cloned or extracted to
local/bundle/
, or a folder namedbundle
in any of the folders in the runtimepath - Update Script: (requires: bash+git) Use the
update
script to update the project and submodules, as well as handle any required maintenance
Mappings
Mouse
Binding | Mode | Action |
---|---|---|
(Ctrl|Alt|Shift)+ScrollUp | ALL | Scroll left a few characters at a time |
(Ctrl|Alt|Shift)+ScrollDown | ALL | Scroll right a few characters at a time |
MiddleClick | ALL | Select between the cursor and the mouse |
Ctrl+LeftClick | ALL | Select between the cursor and the mouse |
Alt+LeftClick | ALL | Select the line at the mouse |
Ctrl+Alt+LeftClick | ALL | Select the paragraph at the mouse |
Ctrl+RightClick | ALL | Copy selection or character under the cursor |
Ctrl+MiddleClick | ALL | Copy selection or character under the cursor |
Alt+RightClick | ALL | Cut selection or character under the cursor |
Alt+MiddleClick | ALL | Cut selection or character under the cursor |
Ctrl+Alt+RightClick | ALL | Paste at the cursor |
Ctrl+Alt+MiddleClick | ALL | Paste at the cursor |
Shift+MiddleClick | ALL | Paste the contents of the xorg buffer |
Keyboard
A more complete list of key bindings exists at the top of vim/config/keyboard.vim
Sidebars
Binding | Mode | Action |
---|---|---|
F11 or Leader+[ | N | Toggle git history for the current file |
F12 or Leader+] | N | Toggle the vista symbol and tag sidebar |
Leader+Leader | N | Toggle the location list for ale issues |
Toggles
Binding | Mode | Action |
---|---|---|
` | N | Toggle gutter (left bar with line numbers, etc) |
~ | N | Toggle code the code folding sidebar |
F1 | ALL | Toggle line wrapping |
F2 | ALL | Toggle highlighting of spelling mistakes |
F3 | ALL | Toggle external-paste mode |
F4 | ALL | Toggle source code syntax checking |
Spell Check
Binding | Mode | Action |
---|---|---|
?+ | N | Add the selected word to the local dictionary |
?? | N | Show spelling suggestions for selected word |
?N | N | Go to the next spelling mistake |
?P | N | Go to the previous spelling mistake |
Fixing and Formatting
Binding | Mode | Action |
---|---|---|
Leader+J | N+V | Format line/selected lines to a max width of the textwidth |
Leader+f | N+V | Format document/selection alignment using Vim syntax |
Leader+F | N | Fix document with available ale fixers |
Leader+t | N | Convert all tabs into spaces and continue session with spaces |
Leader+T | N | Convert all spaces into tabs and continue session with tabs |
Leader+w | N | Remove all trailing whitespace |
Complete Reference
For a complete list of mappings specific to darkcloud-nvimconfig, check the list in the comments at the top of vim/config/keyboard.vim and the various plugin configs.
Plugins
- ale: Asynchronous Lint Engine
- Comment.nvim: Smart and Powerful commenting plugin for neovim
- nvim-ts-context-commentstring: A Neovim plugin for setting the commentstring option based on the cursor location in the file. The location is checked via treesitter queries
- lightline.vim: A light and configurable statusline/tabline plugin for Vim
- lightline-ale: Provides ALE indicator for the lightline vim plugin
- MatchTagAlways: Always highlight enclosing tags
- nvim-cmp: A completion engine plugin for neovim written in Lua
- cmp-async-path: Async file system path source for nvim-cmp
- cmp-buffer: Buffer words source for nvim-cmp
- cmp-nvim-tags: Tags source for nvim-cmp
- cmp-omni: Omnifunc source for cmp-nvim
- cmp-snippy: Nvim-snippy completion source for nvim-cmp
- cmp-treesitter: Treesitter source for nvim-cmp
- nvim-snippy: Snippet plugin for Neovim written in Lua
- vim-snippets: Snippets files for various programming languages
- nvim-surround: Add/change/delete surrounding delimiter pairs with ease
- nvim-treesitter: Treesitter configurations and abstraction layer for Neovim
- nvim-treesitter-textobjects: Syntax aware text-objects, select, move, swap, and peek support
- qf.nvim: Extends the default quickfix and location lists for neovim
- smartyank.nvim: An opinionated (yet customizable) yank
- splitjoin.vim: Simplifies the transition between multi-line and single-line code
- tabular: Vim script for text filtering and alignment
- vim-fugitive: A wrapper integrating git into vim in such a way as to provide features neither of them could offer on their own
- vim-gutentags: A plugin that takes care of the much needed management of tags files in Vim
- vim-move: Provides a few convenient ways to move selected text
- vim-pathogen: A plugin to load other plugins while keeping them isolated in their own directory structure rather than all dumped together
- vim-polyglot-darkcloud: The darkcloud-nvimconfig fork of a meta-package that attempts to provide the best syntax plugins for each file type
- vim-signify: When a version controlled file is changed, this displays a column showing where and how, and allows for navigation to and between differences
- vim-trailing-whitespace: Highlights and allows for the easy removal of trailing whitespace in documents
- vista.vim: Viewer & Finder for LSP symbols and tags
Credits
- By Kevin MacMartin: GitHub Projects | Arch Linux AUR Packages