aboutsummaryrefslogtreecommitdiff
path: root/config/nvim/init.vim
blob: 5ab37d7bbdcf43ca087967906bae784f7e100015 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Style
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Editor Style
set number                              " Show number column
set nowrap                              " Don't wrap text
set list                                " Display tabs and trailing space
let &colorcolumn="80,150"               " Show color columns

" Color
set termguicolors
color rbdr

" Tab Style (Always override with editorconfig)
set tabstop=2                           " 2 Spaces per tab
set shiftwidth=2                        " Spaces used in Autoindent
set softtabstop=2                       " Spaces used when soft tabbing
set expandtab                           " Always use spaces

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Behavior
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Search Behavior
set ignorecase                          " Ignore case when searching
set smartcase                           " Unless we use both cases in search

" Autocomplete Behavior
set wildmode=list:longest,list:full     " Autocomplete common matching string
                                        " first, and then the full match.

" Folding Behavior
set foldmethod=syntax                   " Use syntax highlight to define folds
set foldnestmax=10                      " Max 10 folds
set foldlevelstart=99                   " Start with all folds open

" Relative Number Behavior
autocmd FocusLost * :set norelativenumber
autocmd InsertEnter * :set norelativenumber
autocmd InsertLeave * :set relativenumber
autocmd CursorMoved * :set relativenumber

function! NumberToggle()
  if(&relativenumber == 1)
    set norelativenumber
  else
    set relativenumber
  endif
endfunction

nnoremap <C-n> :call NumberToggle()<cr>

" Move lines / blocks up and down using Ctrl + Shift
nnoremap <C-S-j> :m .+1<CR>==
nnoremap <C-S-k> :m .-2<CR>==
inoremap <C-S-j> <Esc>:m .+1<CR>==gi
inoremap <C-S-k> <Esc>:m .-2<CR>==gi
vnoremap <C-S-j> :m '>+1<CR>gv=gv
vnoremap <C-S-k> :m '<-2<CR>gv=gv

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" File Specific Behavior
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Makefiles
au FileType make set noexpandtab        " Makefiles need real tabs

" SNES files
au BufNewFile,BufRead *.asm,*.s set filetype=snes"
"

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Local Overrides
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if filereadable(expand("~/.init.local.vim"))
  source ~/.init.local.vim
endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Plugin Specific Behavior
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" FZF
set rtp+=$FZF_VIM_PATH                  " Load FZF vim plugin
noremap <C-P> :FZF <CR>
let g:fzf_layout = { 'down': '40%' }
let g:fzf_colors =
\ { 'fg':      ['fg', 'Normal'],
  \ 'bg':      ['bg', 'Normal'],
  \ 'hl':      ['fg', 'Comment'],
  \ 'fg+':     ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
  \ 'bg+':     ['bg', 'CursorLine', 'CursorColumn'],
  \ 'hl+':     ['fg', 'Statement'],
  \ 'info':    ['fg', 'PreProc'],
  \ 'border':  ['fg', 'Ignore'],
  \ 'prompt':  ['fg', 'Conditional'],
  \ 'pointer': ['fg', 'Exception'],
  \ 'marker':  ['fg', 'Keyword'],
  \ 'spinner': ['fg', 'Label'],
  \ 'header':  ['fg', 'Comment'] }

" Svelte Config
let g:vim_svelte_plugin_use_typescript = 1

" Limelight / Goyo config

let g:limelight_conceal_ctermfg = 'gray'
let g:limelight_conceal_guifg = 'DarkGray'

autocmd! User GoyoEnter Limelight
autocmd! User GoyoLeave Limelight!
nnoremap <leader>i :Limelight!!<CR>==
inoremap <leader>i <Esc>:Limelight!!<CR>==gi
vnoremap <leader>i :<C-u>Limelight!!<CR>gv=gv
nnoremap <leader>g :Goyo<CR>==
inoremap <leader>g <Esc>:Goyo<CR>==gi
vnoremap <leader>g :<C-u>Goyo<CR>gv=gv

" Plug
runtime plugins.vim