]> git.r.bdr.sh - rbdr/dotfiles/blob - vimrc
Update URxvt copy and paste
[rbdr/dotfiles] / vimrc
1 set nocompatible
2
3 "
4 " Basics
5 "
6
7 set number
8 set ruler
9 syntax on
10
11 " Set encoding
12 set encoding=utf-8
13
14 " Whitespace stuff
15 set nowrap
16 set tabstop=2
17 set shiftwidth=2
18 set softtabstop=2
19 set expandtab
20 set list listchars=tab:\ \ ,trail:ยท
21
22 " Searching
23 set hlsearch
24 set incsearch
25 set ignorecase
26 set smartcase
27
28 " Tab completion
29 set wildmode=list:longest,list:full
30 set wildignore+=*.o,*.obj,.git,*.rbc,*.class,.svn,vendor/gems/*
31
32 " Status bar
33 set laststatus=2
34
35 " allow backspacing over everything in insert mode
36 set backspace=indent,eol,start
37
38 " Show (partial) command in the status line
39 set showcmd
40
41 " Remember last location in file
42 if has("autocmd")
43 au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
44 \| exe "normal g'\"" | endif
45 endif
46
47 "
48 " File Type Config
49 "
50
51 " make uses real tabs
52 au FileType make set noexpandtab
53
54 " Thorfile, Rakefile, Vagrantfile and Gemfile are Ruby
55 au BufRead,BufNewFile {Gemfile,Rakefile,Vagrantfile,Thorfile,config.ru} set ft=ruby
56
57 " make Python follow PEP8 ( http://www.python.org/dev/peps/pep-0008/ )
58 au FileType python set softtabstop=4 tabstop=4 shiftwidth=4 textwidth=79
59
60 " snes syntax highlighting
61 au BufNewFile,BufRead *.asm,*.s set filetype=snes"
62
63 " load the plugin and indent settings for the detected filetype
64 filetype plugin indent on
65 filetype plugin on
66
67 " Directories for swp files
68 set backupdir=~/.vim/.backup
69 set directory=~/.vim/.backup
70
71 " Include local vimrc
72 if filereadable(expand("~/.vimrc.local"))
73 source ~/.vimrc.local
74 endif
75
76 "
77 " Tool Configs
78 "
79
80 " CTags
81 map <Leader>rt :!ctags --extra=+f -R *<CR><CR>
82 map <C-\> :tnext<CR>
83
84 " Opens an edit command with the path of the currently edited file filled in
85 " Normal mode: <Leader>e
86 map <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR>
87
88 " Opens a tab edit command with the path of the currently edited file filled in
89 " Normal mode: <Leader>t
90 map <Leader>te :tabe <C-R>=expand("%:p:h") . "/" <CR>
91
92 " % to bounce from do to end etc.
93 runtime! macros/matchit.vim
94
95 " Dank Mono Italics
96 highlight Keyword cterm=italic
97
98 " FZF config
99 set rtp+=$FZF_VIM_PATH
100
101 " Inserts the path of the currently edited file into a command
102 noremap <C-P> :FZF <CR>
103
104 let g:fzf_layout = { 'down': '40%' }
105
106 " Auto Pairs
107 let g:AutoPairsMultilineClose = 0
108
109 " ALE config
110 let g:ale_linter_aliases = {'svelte': ['css', 'javascript']}
111 let g:ale_linters = {
112 \'javascript': ['eslint'],
113 \'svelte': ['stylelint', 'eslint']
114 \}
115 let g:ale_fixers = {
116 \'javascript': ['eslint'],
117 \'svelte': ['eslint']
118 \}
119 let g:ale_fix_on_save = 1
120
121 " Svelte Config
122 let g:vim_svelte_plugin_use_typescript = 1
123
124 " Deoplete config
125 let g:deoplete#enable_at_startup = 1
126 inoremap <expr><tab> pumvisible() ? "\<c-n>" : "\<tab>"
127 inoremap <expr><S-tab> pumvisible() ? "\<c-p>" : "\<tab>"
128
129 "
130 " A E S T H E T I C S
131 "
132
133 " Color Column
134 let &colorcolumn="80,150"
135
136 " Default color scheme
137 set termguicolors
138 color rbdr
139
140 " Map colors to vim colors
141 let g:fzf_colors =
142 \ { 'fg': ['fg', 'Normal'],
143 \ 'bg': ['bg', 'Normal'],
144 \ 'hl': ['fg', 'Comment'],
145 \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
146 \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'],
147 \ 'hl+': ['fg', 'Statement'],
148 \ 'info': ['fg', 'PreProc'],
149 \ 'border': ['fg', 'Ignore'],
150 \ 'prompt': ['fg', 'Conditional'],
151 \ 'pointer': ['fg', 'Exception'],
152 \ 'marker': ['fg', 'Keyword'],
153 \ 'spinner': ['fg', 'Label'],
154 \ 'header': ['fg', 'Comment'] }
155
156 "
157 " Editing Shortcuts
158 "
159
160 " Folding Settings
161 set foldmethod=syntax
162 set foldnestmax=10
163 set nofoldenable
164 set foldlevel=1
165
166 " Relative numbers
167 autocmd FocusLost * :set norelativenumber
168 autocmd InsertEnter * :set norelativenumber
169 autocmd InsertLeave * :set relativenumber
170 autocmd CursorMoved * :set relativenumber
171
172 function! NumberToggle()
173 if(&relativenumber == 1)
174 set norelativenumber
175 else
176 set relativenumber
177 endif
178 endfunction
179
180 nnoremap <C-n> :call NumberToggle()<cr>
181
182
183 " Move things up and down using Ctrl + Shift
184 nnoremap <C-S-j> :m .+1<CR>==
185 nnoremap <C-S-k> :m .-2<CR>==
186 inoremap <C-S-j> <Esc>:m .+1<CR>==gi
187 inoremap <C-S-k> <Esc>:m .-2<CR>==gi
188 vnoremap <C-S-j> :m '>+1<CR>gv=gv
189 vnoremap <C-S-k> :m '<-2<CR>gv=gv
190
191 " Limelight / Goyo config
192
193 autocmd! User GoyoEnter Limelight
194 autocmd! User GoyoLeave Limelight!
195 nnoremap <C-S-l> :Limelight!!<CR>==
196 inoremap <C-S-l> <Esc>:Limelight!!<CR>==gi
197 vnoremap <C-S-l> :<C-u>Limelight!!<CR>gv=gv
198 nnoremap <C-S-g> :Goyo<CR>==
199 inoremap <C-S-g> <Esc>:Goyo<CR>==gi
200 vnoremap <C-S-g> :<C-u>Goyo<CR>gv=gv
201
202 "
203 " Plug Config
204 "
205
206 call plug#begin('~/.vim/plugged')
207
208 " Syntaxes
209 Plug 'https://gitlab.com/rbdr/api-notation.vim.git'
210 Plug 'elzr/vim-json'
211 Plug 'mustache/vim-mode'
212 Plug 'othree/yajs.vim'
213 Plug 'ARM9/snes-syntax-vim'
214 Plug 'posva/vim-vue'
215 Plug 'leafgarland/typescript-vim'
216 Plug 'leafOfTree/vim-svelte-plugin'
217 Plug 'bumaociyuan/vim-swift'
218 Plug 'udalov/kotlin-vim'
219 Plug 'tikhomirov/vim-glsl'
220 Plug 'jparise/vim-graphql'
221 Plug 'digitaltoad/vim-pug'
222 Plug 'https://git.sr.ht/~torresjrjr/gemini.vim'
223 Plug 'rust-lang/rust.vim'
224 Plug 'dart-lang/dart-vim-plugin'
225
226 " Editing
227 Plug 'tpope/vim-endwise'
228 Plug 'rstacruz/vim-closer'
229 Plug 'michaeljsmith/vim-indent-object'
230 Plug 'editorconfig/editorconfig-vim'
231
232 " Distraction free editing
233 Plug 'junegunn/goyo.vim'
234 Plug 'junegunn/limelight.vim'
235
236 " Tools
237 Plug 'editorconfig/editorconfig-vim'
238 Plug 'dense-analysis/ale'
239 Plug 'neoclide/coc.nvim', {'branch': 'release'}
240 Plug 'vim-scripts/LargeFile'
241 Plug 'tpope/vim-fugitive'
242 Plug 'milkypostman/vim-togglelist'
243 Plug 'jremmen/vim-ripgrep'
244
245 " List ends here. Plugins become visible to Vim after this call.
246 call plug#end()
247
248 if filereadable(expand('~/.vimrc.local'))
249 exe 'source' '~/.vimrc.local'
250 endif