2024-03-01 16:28:35 -05:00
# darkcloud-nvimconfig
2014-06-17 01:49:46 -04:00
2024-03-01 16:28:35 -05:00
A theme, config and collection of plugins for Neovim
2014-02-20 23:24:20 -05:00
2023-05-31 23:46:37 -04:00
## Requirements
2014-02-20 23:24:20 -05:00
2024-03-01 22:23:45 -05:00
* **Neovim**: [neovim ](https://neovim.io ) is a hard dependency
2024-03-03 21:48:23 -05:00
* **Bash**: Required by the _update_ script
2024-03-03 21:42:11 -05:00
* **Coreutils**: Required by the _update_ script
* **Git**: Required by the _update_ script and git-related plugins
2014-02-20 23:24:20 -05:00
2023-05-31 23:46:37 -04:00
## Optional Requirements
2014-02-20 23:24:20 -05:00
2024-03-04 14:39:06 -05:00
* **Powerline Fonts**: Required to enable the fancier looking status line
2024-03-06 02:13:52 -05:00
* **Universal CTags**: Required by _vim-gutentags_ and _vista_ , and optional for _nvim-cmp_
2024-03-04 14:39:06 -05:00
* **Compilers, Linters and Runtimes**: The _ale_ plugin can use compilers, linters and runtimes to provide real-time syntax checking
2014-05-29 11:02:23 -04:00
2023-05-31 23:46:37 -04:00
## Distribution Features
2014-05-29 11:02:23 -04:00
2024-03-03 21:42:11 -05:00
* **Default Configuration**: A complete set of defaults, focusing on the most modern settings that still provide a compatible experience
2024-03-19 22:14:51 -04:00
* **Custom theme**: An original colour scheme with explicit values set to optimize the look of individual file types
2024-03-03 21:42:11 -05:00
* **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
2024-03-19 22:14:51 -04:00
* **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
2024-03-03 21:42:11 -05:00
* **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
2014-02-20 23:24:20 -05:00
2023-05-31 23:46:37 -04:00
## Installation
2014-03-28 11:13:10 -04:00
2024-03-17 16:56:51 -04:00
1. Clone the darkcloud-nvimconfig repo and run the `update` script
2. By default darkcloud-nvimconfig expects 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 your neovim init (after `let g:darkcloudpath = ...` if present)
Tons of changes all in one commit because I'd broken a commit a while
back and opted to simply reverse them all- Lots of colour changes, the
update script now removes decommissioned bundles, gentags script can now
have additional paths added to it when generating a tags file, README is
much improved, fixed a few issues that required remapping some toggles,
fixed a bunch of issues with the colourscheme between the terminal and
gvim. You can now setup a custom config file to have loaded after the
darkcloud-vimconfig ones, and there's a custom location for pathogen
modules too, to make things tidier without necessarily needing to use
an additional runtimepath. You can also create a file in your home
directory to assign filetypes to programs, for use with the file
manager. A file can be placed in ~/.vim/ with file associations and
prorams to launch them with. The file manager will also open a file with
vim by hitting shift+enter, since e isn't all that comfortablly placed.
The vimrc can now also point to the darkcloud-vimconfig folder, rather
than relying on the vim folder being in a specific location, and the
after folder is now configured to work in the project too.
2014-04-04 19:49:02 -04:00
2023-05-31 23:46:37 -04:00
## Configuration
Tons of changes all in one commit because I'd broken a commit a while
back and opted to simply reverse them all- Lots of colour changes, the
update script now removes decommissioned bundles, gentags script can now
have additional paths added to it when generating a tags file, README is
much improved, fixed a few issues that required remapping some toggles,
fixed a bunch of issues with the colourscheme between the terminal and
gvim. You can now setup a custom config file to have loaded after the
darkcloud-vimconfig ones, and there's a custom location for pathogen
modules too, to make things tidier without necessarily needing to use
an additional runtimepath. You can also create a file in your home
directory to assign filetypes to programs, for use with the file
manager. A file can be placed in ~/.vim/ with file associations and
prorams to launch them with. The file manager will also open a file with
vim by hitting shift+enter, since e isn't all that comfortablly placed.
The vimrc can now also point to the darkcloud-vimconfig folder, rather
than relying on the vim folder being in a specific location, and the
after folder is now configured to work in the project too.
2014-04-04 19:49:02 -04:00
2024-03-03 21:36:51 -05:00
* **Configure Variables**: The following variables can be added to `local/user.vim` and have their values set to the values you require:
2024-03-01 21:59:23 -05:00
* `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** )
2024-03-19 22:14:51 -04:00
* `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** )
2024-03-03 21:42:11 -05:00
* **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
2014-04-18 05:12:35 -04:00
2023-05-31 23:46:37 -04:00
## Mappings
2014-04-18 05:12:35 -04:00
2023-05-31 23:46:37 -04:00
### Mouse
2014-04-18 05:12:35 -04:00
2022-06-08 14:12:50 -04:00
| 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 |
2014-04-18 05:12:35 -04:00
2023-05-31 23:46:37 -04:00
### Keyboard
2014-04-18 05:12:35 -04:00
2024-03-28 17:44:30 -04:00
A more complete list of key bindings exists at the top of `vim/config/keyboard.vim`
2023-05-31 23:46:37 -04:00
#### Sidebars
2014-06-13 00:58:13 -04:00
2024-03-06 02:08:39 -05:00
| 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 |
2014-06-25 02:47:29 -04:00
2023-05-31 23:46:37 -04:00
#### Toggles
2014-06-25 02:47:29 -04:00
2024-03-06 02:08:39 -05:00
| Binding | Mode | Action |
|-----------------|------|-------------------------------------------------|
2024-03-28 17:44:30 -04:00
| \` | N | Toggle gutter (left bar with line numbers, etc) |
| ~ | N | Toggle code the code folding sidebar |
2024-03-06 02:08:39 -05:00
| | | |
| 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 |
2014-06-25 02:47:29 -04:00
2023-05-31 23:46:37 -04:00
#### Spell Check
2014-06-25 02:47:29 -04:00
2014-10-26 11:13:07 -04:00
| 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 |
2014-10-22 03:41:50 -04:00
2023-05-31 23:46:37 -04:00
#### Fixing and Formatting
2014-10-22 03:41:50 -04:00
2014-10-26 11:13:07 -04:00
| 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 |
2016-02-16 13:33:42 -05:00
| Leader+f | N+V | (Markdown) Format table cursor is currently on |
2018-03-13 11:32:04 -04:00
| Leader+F | N | Fix document with available ale fixers |
2014-10-26 11:13:07 -04:00
| 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 |
2014-10-22 03:41:50 -04:00
2023-05-31 23:46:37 -04:00
### Complete Reference
2014-06-13 01:14:33 -04:00
2024-03-03 21:42:11 -05:00
For a complete list of mappings specific to **darkcloud-nvimconfig** , check the list in the comments at the top of [vim/config/keyboard.vim ](https://github.com/prurigro/darkcloud-nvimconfig/blob/master/vim/config/keyboard.vim )
2014-04-18 05:12:35 -04:00
2023-05-31 23:46:37 -04:00
## Plugins
2014-04-18 05:12:35 -04:00
2018-03-13 11:55:43 -04:00
* [ale ](https://github.com/w0rp/ale ): Asynchronous Lint Engine
2024-03-01 21:11:26 -05:00
* [Comment.nvim ](https://github.com/numToStr/Comment.nvim ): Smart and Powerful commenting plugin for neovim
2024-03-01 21:13:15 -05:00
* [nvim-ts-context-commentstring ](https://github.com/JoosepAlviste/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
2024-03-19 22:14:51 -04:00
* [lightline.vim ](https://github.com/itchyny/lightline.vim ): A light and configurable statusline/tabline plugin for Vim
2024-03-01 21:11:26 -05:00
* [lightline-ale ](https://github.com/maximbaz/lightline-ale ): Provides ALE indicator for the lightline vim plugin
2024-03-04 14:39:06 -05:00
* [nvim-cmp ](https://github.com/hrsh7th/nvim-cmp ): A completion engine plugin for neovim written in Lua
2024-03-19 22:14:51 -04:00
* [cmp-async-path ](https://codeberg.org/FelipeLema/cmp-async-path ): Async file system path source for nvim-cmp
2024-03-04 14:39:06 -05:00
* [cmp-buffer ](https://github.com/hrsh7th/cmp-buffer ): Buffer words source for nvim-cmp
* [cmp-nvim-tags ](https://github.com/quangnguyen30192/cmp-nvim-tags ): Tags source for nvim-cmp
* [cmp-omni ](https://github.com/hrsh7th/cmp-omni ): Omnifunc source for cmp-nvim
* [cmp-snippy ](https://github.com/dcampos/cmp-snippy ): Nvim-snippy completion source for nvim-cmp
* [cmp-treesitter ](https://github.com/ray-x/cmp-treesitter ): Treesitter source for nvim-cmp
* [nvim-snippy ](https://github.com/dcampos/nvim-snippy ): Snippet plugin for Neovim written in Lua
* [vim-snippets ](https://github.com/honza/vim-snippets ): Snippets files for various programming languages
2024-03-05 13:03:53 -05:00
* [nvim-surround ](https://github.com/kylechui/nvim-surround ): Add/change/delete surrounding delimiter pairs with ease
2024-03-01 21:59:23 -05:00
* [nvim-treesitter ](https://github.com/nvim-treesitter/nvim-treesitter ): Treesitter configurations and abstraction layer for Neovim
2024-03-05 12:46:26 -05:00
* [nvim-treesitter-textobjects ](https://github.com/nvim-treesitter/nvim-treesitter-textobjects ): Syntax aware text-objects, select, move, swap, and peek support
2024-03-13 18:14:17 -04:00
* [qf.nvim ](https://github.com/ten3roberts/qf.nvim ): Extends the default quickfix and location lists for neovim
2024-03-19 22:14:51 -04:00
* [splitjoin.vim ](https://github.com/AndrewRadev/splitjoin.vim ): Simplifies the transition between multi-line and single-line code
2024-03-01 21:11:26 -05:00
* [tabular ](https://github.com/godlygeek/tabular ): Vim script for text filtering and alignment
* [vim-fugitive ](https://github.com/tpope/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 ](https://github.com/xolox/vim-easytags ): A plugin that takes care of the much needed management of tags files in Vim
* [vim-move ](https://github.com/matze/vim-move ): Provides a few convenient ways to move selected text
* [vim-pathogen ](https://github.com/tpope/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 ](https://github.com/prurigro/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 ](https://github.com/mhinz/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 ](https://github.com/bronson/vim-trailing-whitespace ): Highlights and allows for the easy removal of trailing whitespace in documents
2024-03-06 02:08:39 -05:00
* [vista.vim ](https://github.com/liuchengxu/vista.vim ): Viewer & Finder for LSP symbols and tags
Tons of changes all in one commit because I'd broken a commit a while
back and opted to simply reverse them all- Lots of colour changes, the
update script now removes decommissioned bundles, gentags script can now
have additional paths added to it when generating a tags file, README is
much improved, fixed a few issues that required remapping some toggles,
fixed a bunch of issues with the colourscheme between the terminal and
gvim. You can now setup a custom config file to have loaded after the
darkcloud-vimconfig ones, and there's a custom location for pathogen
modules too, to make things tidier without necessarily needing to use
an additional runtimepath. You can also create a file in your home
directory to assign filetypes to programs, for use with the file
manager. A file can be placed in ~/.vim/ with file associations and
prorams to launch them with. The file manager will also open a file with
vim by hitting shift+enter, since e isn't all that comfortablly placed.
The vimrc can now also point to the darkcloud-vimconfig folder, rather
than relying on the vim folder being in a specific location, and the
after folder is now configured to work in the project too.
2014-04-04 19:49:02 -04:00
2023-05-31 23:46:37 -04:00
## Credits
2014-02-20 23:24:20 -05:00
2014-06-17 01:49:46 -04:00
* By Kevin MacMartin: [GitHub Projects ](https://github.com/prurigro?tab=repositories ) | [Arch Linux AUR Packages ](https://aur.archlinux.org/packages/?SeB=m&K=prurigro )