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