mirror of
https://github.com/ItsDrike/dotfiles.git
synced 2024-12-26 13:14:35 +00:00
Decentralize nvim config
This commit is contained in:
parent
5e0fcc415b
commit
cc74d65b0a
|
@ -1,142 +1,13 @@
|
||||||
" Install plugins automatically
|
" Let init.vim handle sourcing other more specific
|
||||||
if ! filereadable(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim"'))
|
" vim configuration files, rather than keeping everything
|
||||||
echo "Downloading junegunn/vim-plug to manage plugins..."
|
" in a single huge config file
|
||||||
silent !mkdir -p ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/
|
|
||||||
silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim
|
|
||||||
autocmd VimEnter * PlugInstall
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Vim-Plug (Plugins)
|
let config_dir = system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim"')
|
||||||
call plug#begin(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/plugged"'))
|
let rc_dir = config_dir.'/rc'
|
||||||
Plug 'airblade/vim-gitgutter' " Shows Git diff
|
execute 'source '.rc_dir.'/base.vim'
|
||||||
Plug 'preservim/nerdcommenter' " Language based comment syntax
|
execute 'source '.rc_dir.'/mappings.vim'
|
||||||
Plug 'preservim/nerdtree' " File manager (nerdtree)
|
execute 'source '.rc_dir.'/autocmd.vim'
|
||||||
Plug 'tiagofumo/vim-nerdtree-syntax-highlight' " Highlighting for nerdtree
|
execute 'source '.rc_dir.'/plugins.vim'
|
||||||
Plug 'joshdick/onedark.vim' " OneDark theme
|
" Needs to be below plugins for colorscheme
|
||||||
Plug 'ryanoasis/vim-devicons' " Icons for nerdtree and airline
|
execute 'source '.rc_dir.'/theme.vim'
|
||||||
Plug 'vim-airline/vim-airline' " AirLine statusline
|
|
||||||
Plug 'vim-airline/vim-airline-themes' " AirLine statusline themes
|
|
||||||
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } " Auto-completion [NVIM only]
|
|
||||||
Plug 'neomake/neomake' " Syntax checking
|
|
||||||
Plug 'zchee/deoplete-jedi' " Python jedi autocompletion
|
|
||||||
Plug 'wakatime/vim-wakatime' " Wakatime integration for coding stats
|
|
||||||
call plug#end()
|
|
||||||
|
|
||||||
" Some basics
|
|
||||||
filetype plugin on " Enable filetype detection
|
|
||||||
syntax on " Turn on syntax highlighting
|
|
||||||
set number relativenumber " Show relative line numbers
|
|
||||||
set wildmode=longest,list,full " Enable autocompletion
|
|
||||||
set undolevels=999 " Lots of these
|
|
||||||
set history=1000 " More history
|
|
||||||
set expandtab " Expand tabs to spaces (inverse: noexpandtab)
|
|
||||||
set tabstop=4 " Tab size
|
|
||||||
set shiftwidth=4 " Indentation size
|
|
||||||
set softtabstop=4 " Tabs/Spaces interrop
|
|
||||||
set tabpagemax=50 " More tabs
|
|
||||||
set autoindent " Enable autoindent
|
|
||||||
set cursorline " Highlight cursor line
|
|
||||||
set noruler " Don't show ruler, line is highlighted by above
|
|
||||||
set showmatch " Show matching brackets
|
|
||||||
set ignorecase " Do case insensitive matching
|
|
||||||
set incsearch " Show partial matches for a search phrase
|
|
||||||
set hlsearch " Highlight Search
|
|
||||||
set laststatus=2 " Always show status line
|
|
||||||
set splitbelow splitright " Split in more natural way
|
|
||||||
set autoread " Reload files on change
|
|
||||||
set mouse=a " Enable mouse mode
|
|
||||||
set encoding=utf-8 " Use UTF-8, not ASCII (May cause issues on TTY)
|
|
||||||
set path+=** " Search down into subfolders with tab completion
|
|
||||||
set wildmenu " Display all matching files when we tab complete
|
|
||||||
set scrolloff=5 " Keep 5 lines horizontal scrolloff
|
|
||||||
set sidescrolloff=5 " Keep 5 characters vertical scrolloff
|
|
||||||
"set termguicolors " Use true colors (256) (May cause issues on TTY)
|
|
||||||
|
|
||||||
" Move ~/.viminfo to XDG_CACHE_HOME
|
|
||||||
"set viminfofile=$XDG_CACHE_HOME/vim/viminfo
|
|
||||||
|
|
||||||
" Disable automatic commenting on newline
|
|
||||||
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
|
|
||||||
|
|
||||||
" Have Vim jump to the last position when reopening a file
|
|
||||||
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\""
|
|
||||||
|
|
||||||
" Automatically deletes all trailing whitespace on save
|
|
||||||
autocmd BufWritePre * %s/\s\+$//e
|
|
||||||
|
|
||||||
" Remap splits navigation to just CTRL + hjkl
|
|
||||||
nnoremap <C-h> <C-w>h
|
|
||||||
nnoremap <C-j> <C-w>j
|
|
||||||
nnoremap <C-k> <C-w>k
|
|
||||||
nnoremap <C-l> <C-w>l
|
|
||||||
|
|
||||||
" Make adjusting split sizes a bit more friendly
|
|
||||||
noremap <silent> <C-Left> :vertical resize +3<CR>
|
|
||||||
noremap <silent> <C-Right> :vertical resize -3<CR>
|
|
||||||
noremap <silent> <C-Up> :resize +3<CR>
|
|
||||||
noremap <silent> <C-Down> :resize -3<CR>
|
|
||||||
|
|
||||||
" Spell-check set to <leader>o, 'o' for 'orthography'
|
|
||||||
map <leader>o :setlocal spell! spelllang=en_US<CR>
|
|
||||||
|
|
||||||
" Stop search highlight (until next search)
|
|
||||||
map <silent> <esc> :noh<CR>
|
|
||||||
|
|
||||||
" System clipboard interactions
|
|
||||||
map <C-c> "+y
|
|
||||||
vnoremap <C-v> "+p
|
|
||||||
|
|
||||||
" Unmap arrow keys in normal mode to remove bad habits
|
|
||||||
nnoremap <Down> <nop>
|
|
||||||
nnoremap <Left> <nop>
|
|
||||||
nnoremap <Right> <nop>
|
|
||||||
nnoremap <Up> <nop>
|
|
||||||
|
|
||||||
" Use shift to move 10 lines up/down quickly
|
|
||||||
noremap <silent> K 10k
|
|
||||||
noremap <silent> J 10j
|
|
||||||
|
|
||||||
" User interface / Theme
|
|
||||||
colorscheme onedark
|
|
||||||
set guioptions-=m " remove menubar
|
|
||||||
set guioptions-=T " remove toolbar
|
|
||||||
set guioptions-=r " remove right-hand scrollbar
|
|
||||||
set guioptions-=L " remove left-hand scrollbar
|
|
||||||
|
|
||||||
" Airline
|
|
||||||
let g:airline_theme='onedark'
|
|
||||||
let g:airline#extensions#tabline#enabled = 1
|
|
||||||
let g:airline#tabline#formatter = 'unique_tail'
|
|
||||||
let g:webdevicons_enable_airline_statusline = 0
|
|
||||||
if empty($DISPLAY) " Automatically apply ASCII only config if we don't have DISPLAY (TTY)
|
|
||||||
let g:airline_left_sep = '>' " Alternatively: '►'
|
|
||||||
let g:airline_right_sep = '<' " Alternatively: '◄'
|
|
||||||
let g:airline_symbols_ascii = 1
|
|
||||||
let g:webdevicons_enable_airline_tabline = 0 " don't use symbols from vim-devicons
|
|
||||||
else
|
|
||||||
let g:airline_left_sep = "\uE0B0"
|
|
||||||
let g:airline_right_sep = "\uE0B2"
|
|
||||||
let g:airline_powerline_fonts = 1 " use nice symbols from powerline fonts
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Neomake
|
|
||||||
" Requires: pip install flake8
|
|
||||||
let g:neomake_python_enabled_makers = ['flake8']
|
|
||||||
let g:neomake_python_flake8_maker = {'args': ['--ignore=E501', '--format=default']}
|
|
||||||
call neomake#configure#automake('nrwi', 500)
|
|
||||||
|
|
||||||
" Deoplete
|
|
||||||
" Requires: pip install pynvim
|
|
||||||
let g:deoplete#enable_at_startup = 1
|
|
||||||
|
|
||||||
" NERDTree
|
|
||||||
map <C-n> :NERDTreeToggle<CR>
|
|
||||||
let g:NERDTreeDirArrowExpandable = '►'
|
|
||||||
let g:NERDTreeDirArrowCollapsible = '▼'
|
|
||||||
let NERDTreeShowLineNumbers=1
|
|
||||||
let NERDTreeShowHidden=1
|
|
||||||
let NERDTreeMinimalUI = 1
|
|
||||||
let g:NERDTreeWinSize=38
|
|
||||||
if empty($DISPLAY) " Disable devicons for nerdtree in TTY
|
|
||||||
let g:webdevicons_enable_nerdtree = 0
|
|
||||||
endif
|
|
||||||
|
|
15
home/.config/nvim/rc/autocmd.vim
Normal file
15
home/.config/nvim/rc/autocmd.vim
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
" Move ~/.viminfo to XDG_CACHE_HOME
|
||||||
|
"set viminfofile=$XDG_CACHE_HOME/vim/viminfo
|
||||||
|
|
||||||
|
" Disable automatic commenting on newline
|
||||||
|
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
|
||||||
|
|
||||||
|
" Have Vim jump to the last position when reopening a file
|
||||||
|
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\""
|
||||||
|
|
||||||
|
" Automatically deletes all trailing whitespace on save
|
||||||
|
autocmd BufWritePre * %s/\s\+$//e
|
||||||
|
|
||||||
|
" Vertically center document when entering insert mode
|
||||||
|
"autocmd InsertEnter * norm zz
|
||||||
|
|
24
home/.config/nvim/rc/base.vim
Normal file
24
home/.config/nvim/rc/base.vim
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
filetype plugin on " Enable filetype detection
|
||||||
|
set undolevels=999 " Lots of these
|
||||||
|
set history=1000 " More history
|
||||||
|
set expandtab " Expand tabs to spaces (inverse: noexpandtab)
|
||||||
|
set tabstop=4 " Tab size
|
||||||
|
set shiftwidth=4 " Indentation size
|
||||||
|
set softtabstop=4 " Tabs/Spaces interrop
|
||||||
|
set tabpagemax=50 " More tabs
|
||||||
|
set autoindent " Enable autoindent
|
||||||
|
set showmatch " Show matching brackets
|
||||||
|
set ignorecase " Do case insensitive matching
|
||||||
|
set incsearch " Show partial matches for a search phrase
|
||||||
|
set hlsearch " Highlight Search
|
||||||
|
set laststatus=2 " Always show status line
|
||||||
|
set splitbelow splitright " Split in more natural way
|
||||||
|
set autoread " Reload files on change
|
||||||
|
set mouse=a " Enable mouse mode
|
||||||
|
set encoding=utf-8 " Use UTF-8, not ASCII (May cause issues on TTY)
|
||||||
|
set wildmode=longest,list,full " Enable autocompletion
|
||||||
|
set path+=** " Search down into subfolders with tab completion
|
||||||
|
set wildmenu " Display all matching files when we tab complete
|
||||||
|
set scrolloff=5 " Keep 5 lines horizontal scrolloff
|
||||||
|
set sidescrolloff=5 " Keep 5 characters vertical scrolloff
|
||||||
|
|
32
home/.config/nvim/rc/mappings.vim
Normal file
32
home/.config/nvim/rc/mappings.vim
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
" Remap splits navigation to just CTRL + hjkl
|
||||||
|
nnoremap <C-h> <C-w>h
|
||||||
|
nnoremap <C-j> <C-w>j
|
||||||
|
nnoremap <C-k> <C-w>k
|
||||||
|
nnoremap <C-l> <C-w>l
|
||||||
|
|
||||||
|
" Make adjusting split sizes a bit more friendly
|
||||||
|
noremap <silent> <C-Left> :vertical resize +3<CR>
|
||||||
|
noremap <silent> <C-Right> :vertical resize -3<CR>
|
||||||
|
noremap <silent> <C-Up> :resize +3<CR>
|
||||||
|
noremap <silent> <C-Down> :resize -3<CR>
|
||||||
|
|
||||||
|
" Spell-check set to <leader>o, 'o' for 'orthography'
|
||||||
|
map <leader>o :setlocal spell! spelllang=en_US<CR>
|
||||||
|
|
||||||
|
" Stop search highlight (until next search)
|
||||||
|
map <silent> <esc> :noh<CR>
|
||||||
|
|
||||||
|
" System clipboard interactions
|
||||||
|
map <C-c> "+y
|
||||||
|
vnoremap <C-v> "+p
|
||||||
|
|
||||||
|
" Unmap arrow keys in normal mode to remove bad habits
|
||||||
|
nnoremap <Down> <nop>
|
||||||
|
nnoremap <Left> <nop>
|
||||||
|
nnoremap <Right> <nop>
|
||||||
|
nnoremap <Up> <nop>
|
||||||
|
|
||||||
|
" Use shift to move 10 lines up/down quickly
|
||||||
|
noremap <silent> K 10k
|
||||||
|
noremap <silent> J 10j
|
||||||
|
|
13
home/.config/nvim/rc/plugins.d/airline.vim
Normal file
13
home/.config/nvim/rc/plugins.d/airline.vim
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
" Airline specific theming settings
|
||||||
|
let g:airline_theme='codedark' " Use codedark theme from vim-ariline-themes
|
||||||
|
let g:airline_right_sep = "" " Don't use special separators (<)
|
||||||
|
let g:airline_left_sep = "" " Don't use special separators (>)
|
||||||
|
let g:airline#extensions#tabline#enabled = 1 " Enable tabline (top line)
|
||||||
|
let g:airline#tabline#formatter = 'unique_tail' " Tabline filename formatter
|
||||||
|
let g:webdevicons_enable_airline_statusline = 0 " Use special icons from vim-devicons (requires nerdfonts)
|
||||||
|
let g:airline_powerline_fonts = 1 " Use special symbols from powerline fonts (line no, col no)
|
||||||
|
|
||||||
|
if empty($DISPLAY) " Use ASCII-only if we're in TTY
|
||||||
|
let g:airline_symbols_ascii = 1
|
||||||
|
endif
|
||||||
|
|
12
home/.config/nvim/rc/plugins.d/nerdtree.vim
Normal file
12
home/.config/nvim/rc/plugins.d/nerdtree.vim
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
" NERDTree config
|
||||||
|
map <C-n> :NERDTreeToggle<CR>
|
||||||
|
let g:NERDTreeDirArrowExpandable = '►'
|
||||||
|
let g:NERDTreeDirArrowCollapsible = '▼'
|
||||||
|
let NERDTreeShowLineNumbers=1
|
||||||
|
let NERDTreeShowHidden=1
|
||||||
|
let NERDTreeMinimalUI = 1
|
||||||
|
let g:NERDTreeWinSize=38
|
||||||
|
if empty($DISPLAY) " Disable devicons for nerdtree in TTY
|
||||||
|
let g:webdevicons_enable_nerdtree = 0
|
||||||
|
endif
|
||||||
|
|
12
home/.config/nvim/rc/plugins.d/python.vim
Normal file
12
home/.config/nvim/rc/plugins.d/python.vim
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
" Define python-specific neomake config
|
||||||
|
" Neomake is python syntax checker, in this case, we use flake8
|
||||||
|
" Requires: pip install flake8
|
||||||
|
let g:neomake_python_enabled_makers = ['flake8']
|
||||||
|
let g:neomake_python_flake8_maker = {'args': ['--ignore=E501', '--format=default']}
|
||||||
|
call neomake#configure#automake('nrwi', 500)
|
||||||
|
|
||||||
|
" Enable deoplete on startup
|
||||||
|
" Deoplete provides autosuggestions from python standard library
|
||||||
|
" Requires: pip install pynvim
|
||||||
|
let g:deoplete#enable_at_startup = 1
|
||||||
|
|
40
home/.config/nvim/rc/plugins.vim
Normal file
40
home/.config/nvim/rc/plugins.vim
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
" This file handles plugin management with plug.vim
|
||||||
|
" It contains an automatic first-time installer for plug.vim and plugins
|
||||||
|
" It also sources plugin specific config files
|
||||||
|
|
||||||
|
" Install plugins automatically
|
||||||
|
if ! filereadable(config_dir."/autoload/plug.vim")
|
||||||
|
echo "Downloading junegunn/vim-plug to manage plugins..."
|
||||||
|
let x = system('mkdir -p '.config_dir.'/autoload')
|
||||||
|
let x = system('curl https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim > '.config_dir.'/autoload/plug.vim')
|
||||||
|
autocmd VimEnter * PlugInstall
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Plug.vim plugin list
|
||||||
|
call plug#begin(config_dir."/plugged")
|
||||||
|
|
||||||
|
" Code completion
|
||||||
|
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
|
||||||
|
" Themes
|
||||||
|
Plug 'tomasiser/vim-code-dark'
|
||||||
|
Plug 'vim-airline/vim-airline'
|
||||||
|
Plug 'vim-airline/vim-airline-themes'
|
||||||
|
Plug 'ryanoasis/vim-devicons'
|
||||||
|
" Python
|
||||||
|
Plug 'neomake/neomake'
|
||||||
|
Plug 'zchee/deoplete-jedi'
|
||||||
|
" Misc
|
||||||
|
Plug 'airblade/vim-gitgutter'
|
||||||
|
Plug 'wakatime/vim-wakatime'
|
||||||
|
Plug 'preservim/nerdcommenter'
|
||||||
|
Plug 'preservim/nerdtree'
|
||||||
|
Plug 'tiagofumo/vim-nerdtree-syntax-highlight'
|
||||||
|
|
||||||
|
call plug#end()
|
||||||
|
|
||||||
|
|
||||||
|
" Source more plugin-specific configuration files from here
|
||||||
|
let plugins_rc_dir = rc_dir."/plugins.d"
|
||||||
|
execute "source ".plugins_rc_dir."/airline.vim"
|
||||||
|
execute "source ".plugins_rc_dir."/nerdtree.vim"
|
||||||
|
execute "source ".plugins_rc_dir."/python.vim"
|
33
home/.config/nvim/rc/theme.vim
Normal file
33
home/.config/nvim/rc/theme.vim
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
" General colorscheme settings
|
||||||
|
syntax on " Turn syntax highlighting on
|
||||||
|
colorscheme codedark " Requires vim-code-dark plugin
|
||||||
|
|
||||||
|
set number relativenumber " Show relative line numbers
|
||||||
|
set cursorline " Highlight cursor line
|
||||||
|
set noruler " Don't show ruler, line is highlighted by above
|
||||||
|
|
||||||
|
set guioptions-=m " Remove menubar
|
||||||
|
set guioptions-=T " Remove toolbar
|
||||||
|
set guioptions-=r " Remove right-hand scrollbar
|
||||||
|
set guioptions-=L " Remove left-hand scrollbar
|
||||||
|
|
||||||
|
if empty($DISPLAY) " Don't use true colors (256) in TTY
|
||||||
|
set notermguicolors
|
||||||
|
else
|
||||||
|
set termguicolors
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
" Airline specific theming settings
|
||||||
|
let g:airline_theme='codedark' " Use codedark theme from vim-ariline-themes
|
||||||
|
let g:airline_right_sep = "" " Don't use special separators (<)
|
||||||
|
let g:airline_left_sep = "" " Don't use special separators (>)
|
||||||
|
let g:airline#extensions#tabline#enabled = 1 " Enable tabline (top line)
|
||||||
|
let g:airline#tabline#formatter = 'unique_tail' " Tabline filename formatter
|
||||||
|
let g:webdevicons_enable_airline_statusline = 0 " Use special icons from vim-devicons (requires nerdfonts)
|
||||||
|
let g:airline_powerline_fonts = 1 " Use special symbols from powerline fonts (line no, col no)
|
||||||
|
|
||||||
|
if empty($DISPLAY) " Use ASCII-only if we're in TTY
|
||||||
|
let g:airline_symbols_ascii = 1
|
||||||
|
endif
|
||||||
|
|
Loading…
Reference in a new issue