Skip to main content

Overview

This Neovim configuration provides a minimal yet powerful development environment using vim-plug for plugin management. It includes file navigation, fuzzy finding, code completion, linting, and productivity enhancements.

Key Features

Plugin Management

vim-plug for simple package management

File Navigation

NERDTree and Ranger integration

Fuzzy Finding

FZF for fast file searching

Code Quality

ALE for asynchronous linting

Installation

1

Install Neovim

Install Neovim for your platform:macOS:
brew install neovim
Ubuntu/Debian:
sudo apt install neovim
Arch Linux:
sudo pacman -S neovim
2

Install vim-plug

sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
       https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
3

Copy Configuration

Copy init.vim to ~/.config/nvim/init.vim
4

Install Plugins

Open Neovim and run:
:PlugInstall
Or press F12 (custom keybinding)
5

Install External Dependencies

Install Ranger file manager (optional):
pip install ranger-fm

Configuration File

Plugin Setup

The configuration uses vim-plug to manage plugins:
init.vim:1
call plug#begin()
   Plug 'scrooloose/nerdtree'
   Plug 'ervandew/supertab'
   Plug 'shougo/neocomplete.vim'
   Plug 'terryma/vim-multiple-cursors'
   Plug 'wakatime/vim-wakatime'
   Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
   Plug 'w0rp/ale'

   "ncm2 completion
   Plug 'ncm2/ncm2'
   Plug 'roxma/nvim-yarp'

   "Ranger
   Plug 'francoiscabrol/ranger.vim'
   Plug 'rbgrouleff/bclose.vim'

   "Colors
   Plug 'sheerun/vim-polyglot'
   Plug 'joshdick/onedark.vim'
   Plug 'arzg/vim-colors-xcode'
   Plug 'arcticicestudio/nord-vim'
call plug#end()

Installed Plugins

NERDTree
File Explorer
Classic file tree explorer
  • Toggle with F8
  • Browse project structure
Ranger
File Manager
Terminal-based file manager integration
  • Toggle with Space + f
  • Advanced file operations
FZF
Fuzzy Finder
Fast fuzzy file finder
  • Open with Ctrl+p
  • Search files instantly

UI Configuration

init.vim:30
" UI:
syntax on
colorscheme 
set background=dark

set number
set relativenumber
The colorscheme line is intentionally empty - choose from installed themes:
  • onedark
  • xcode
  • nord
Features:
  • Syntax highlighting enabled
  • Line numbers displayed
  • Relative line numbers for easy navigation
  • Dark background theme

Editor Settings

init.vim:38
" Config:
set mouse=a
set encoding=utf-8
set hidden
set inccommand=split
SettingDescription
mouse=aEnable mouse support in all modes
encoding=utf-8Use UTF-8 encoding
hiddenAllow switching buffers without saving
inccommand=splitShow substitution preview in split window

Custom Keybindings

init.vim:49
" Plugins
let g:SuperTabDefaultCompletionType="<C-n>"

map <F8> :NERDTreeToggle <cr>
map <F12> :PlugInstall <cr>

let mapleader="\<space>"
nnoremap <leader>; A;<esc>
nnoremap <leader>ev :vsplit ~/dotfiles/.config/nvim/init.vim<cr>
nnoremap <leader>sv :source ~/dotfiles/.config/nvim/init.vim<cr>

nnoremap <leader>f :Ranger<cr>
nnoremap <c-p> :FZF<cr>

Keybindings Reference

Function Keys

F8

Toggle NERDTree file explorer

F12

Install/update plugins

Leader Key Mappings

The leader key is set to Space:
KeybindingAction
Space + ;Append semicolon to end of line
Space + e + vEdit init.vim in vertical split
Space + s + vReload init.vim configuration
Space + fOpen Ranger file manager
Ctrl + pOpen FZF fuzzy finder

Completion

1

Trigger Completion

Press Ctrl+n to trigger completion menu
2

Navigate

  • Ctrl+n - Next item
  • Ctrl+p - Previous item
3

Accept

Press Enter to accept completion

Usage Guide

File Navigation

Press F8 to toggle the file tree:NERDTree Commands:
  • o - Open file or directory
  • t - Open in new tab
  • i - Open in horizontal split
  • s - Open in vertical split
  • m - Show file menu (create, delete, move)
  • ? - Show help

Multiple Cursors

1

Select Word

Position cursor on a word
2

Add Cursors

Press Ctrl+n repeatedly to select next occurrences
3

Edit

Type to edit all selections simultaneously
4

Exit

Press Esc to return to normal mode

Code Linting with ALE

ALE automatically checks your code as you type:
Errors and warnings appear inline
Status bar shows error count
ALE Navigation:
  • ]a - Jump to next error
  • [a - Jump to previous error
  • :ALEDetail - Show detailed error message

Customization

Changing Color Scheme

Edit the colorscheme line in init.vim:
colorscheme onedark
Available themes:
  • onedark - Atom’s One Dark theme
  • xcodedarkhc - Xcode dark high contrast
  • nord - Arctic, north-bluish theme

Adding New Plugins

1

Edit init.vim

Add plugin between plug#begin() and plug#end():
Plug 'author/plugin-name'
2

Install Plugin

Open Neovim and run:
:PlugInstall
Or press F12
3

Configure Plugin

Add plugin settings after the plugin block

Modifying Keybindings

Add custom keybindings after the existing ones:
" Custom keybinding
nnoremap <leader>w :w<cr>        " Space+w to save
nnoremap <leader>q :q<cr>        " Space+q to quit

Color Schemes

Three color schemes are installed:

One Dark

Atom’s iconic dark theme
colorscheme onedark

Xcode

Apple’s Xcode theme
colorscheme xcodedarkhc

Nord

Arctic-inspired palette
colorscheme nord

Troubleshooting

  1. Open Neovim
  2. Run :PlugInstall
  3. Restart Neovim
  4. Check :checkhealth for issues
NeoComplete requires Neovim with Python support:
pip3 install neovim
Then run :checkhealth to verify
Install FZF system-wide:
# macOS
brew install fzf

# Ubuntu/Debian
sudo apt install fzf

# Or install via plugin
:call fzf#install()
Install Ranger:
pip install ranger-fm
Verify installation:
ranger --version

Quick Reload Configuration

After editing init.vim, reload without restarting:
" Press Space + s + v (already mapped)
:source ~/.config/nvim/init.vim

" Or use the shortcut
<leader>sv

Performance Tips

For large projects, add these settings to improve performance:
set lazyredraw          " Don't redraw during macros
set ttyfast             " Faster terminal connection
set updatetime=300      " Faster completion

Resources

Build docs developers (and LLMs) love