A theme, config and collection of plugins for Neovim
Find a file
2024-03-05 13:32:39 -05:00
vim Use common style for lua require and setup calls 2024-03-05 13:32:39 -05:00
.gitignore Add update-errors.log to the gitignore 2024-03-04 00:19:33 -05:00
.gitmodules Replace vim-surround with nvim-surround 2024-03-05 13:03:53 -05:00
add-bundle Rename add/delete-submodule to add/delete-bundle 2024-03-04 01:35:55 -05:00
delete-bundle Rename add/delete-submodule to add/delete-bundle 2024-03-04 01:35:55 -05:00
init.vim Use double quotes for strings in init.vim and fix an error when autocompletion is disabled 2024-03-05 13:13:20 -05:00
LICENSE License tweaks 2024-03-01 23:42:48 -05:00
readme.md Fix the readme description for vim-repeat 2024-03-05 13:05:29 -05:00
update Don't worry about the remote plugin stuff anymore as nothing requires it 2024-03-04 14:49:30 -05:00

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, tagbar and optional for nvim-cmp
  • Compilers, Linters and Runtimes: The ale plugin can use compilers, linters and runtimes to provide real-time syntax checking

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 filetypes
  • 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 filetypes, 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

  1. Clone the darkcloud-nvimconfig repo and run the update script.
  2. By default the config expects darkcloud-nvimconfig to be installed @ /etc/darkcloud-nvimconfig, if you're installing it elsewhere you should add let g:darkcloudpath = "/path/to/darkcloud-nvimconfig" to your neovim init.
  3. Add source /path/to/darkcloud-nvimconfig/init.vim to the neovim init that you want to use the config with

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:autostarttagbar: 1 = Load a file with the tagbar visible | 0 = Require the tagbar to be 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 statusline using characters that require powerline-patched fonts | 0 = Render the statusbar 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 named bundle 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

Sidebars

Binding Mode Action
F11 or Leader+[ N Toggle git history for the current file
F12 or Leader+] N Toggle the tagbar source code tag sidebar
Leader+Leader N Toggle the location list for ale issues

Toggles

Binding Mode Action
~ N Popup a command list dialog
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
` N Toggle gutter (left bar with line numbers etc.)
Leader+? N Toggle the vim reference manual

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+V (Markdown) Format table cursor is currently on
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

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
  • editorconfig-vim: EditorConfig plugin for Vim that auto-configures certain settings when a .editorconfig file is present
  • lightline.vim: A light and configurable statusline/tabline for Vim
    • lightline-ale: Provides ALE indicator for the lightline vim plugin
  • nvim-cmp: A completion engine plugin for neovim written in Lua
  • nvim-surround: Add/change/delete surrounding delimiter pairs with ease
  • nvim-treesitter: Treesitter configurations and abstraction layer for Neovim
  • ReplaceWithRegister: Replace text with the contents of a register (for paste+replace without writing over the buffer)
  • splitjoin.vim: Simplifies the transition between multiline and single-line code
  • tabular: Vim script for text filtering and alignment
  • tagbar: Uses ctags to generate a sidebar of the tags for the current file
  • 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-togglelist: A simple plugin for vim that allows you to bind a key to toggle the Location List and the Quickfix List
  • vim-trailing-whitespace: Highlights and allows for the easy removal of trailing whitespace in documents
  • vim-unimpaired: Pairs of handy bracket mappings
    • vim-repeat: Enable repeating supported plugin maps with "."

Credits