main
1"" Basic Settings {{{{
2""
3
4syntax enable
5
6set autoindent
7set autoread
8set autowrite
9set backspace=indent,eol,start
10set backupdir=~/tmp,/var/tmp,/tmp/
11set cmdheight=1
12set completeopt=menu,preview
13set cursorline
14set diffopt=vertical
15set directory=~/tmp,/var/tmp,/tmp/
16set encoding=utf-8
17set expandtab
18set foldmethod=marker
19set gdefault
20set hidden
21set hlsearch
22set ignorecase
23set incsearch
24set lazyredraw
25set list
26set listchars=extends:>,nbsp:_,precedes:<,tab:\ \ ,trail:·
27set modelines=0
28set nobackup
29set nocompatible
30set noerrorbells
31set noexrc
32set nojoinspaces
33set nostartofline
34set noswapfile
35set nowrap
36set nowritebackup
37set number
38set numberwidth=5
39set ruler
40set scrolloff=3
41set secure
42set shell=bash
43set shiftround
44set shiftwidth=2
45set showcmd
46set showmatch
47set showmode
48set showtabline=2
49set smartcase
50set softtabstop=2
51set splitbelow
52set splitright
53set t_Co=256
54set t_vb=
55set tabstop=2
56set tags=./tags;,tags;
57set title
58set ttyfast
59set updatetime=200
60set visualbell
61
62set wildmenu
63set wildmode=longest,list:longest
64set wildignore+=*.o,*.out,*.obj,.git,*.rbc,*.rbo,*.class,.svn,*.gem
65set wildignore+=*.zip,*.tar.gz,*.tar.bz2,*.rar,*.tar.xz,*.zst
66set wildignore+=*/vendor/gems/*,*/vendor/cache/*,*/.bundle/*,*/.sass-cache/*
67set wildignore+=*.swp,*~,._*
68set wildignore+=*/tmp/*,*.so,*/coverage/*
69set wildignore+=*/vendor/*
70
71color sorbet
72if has('nvim')
73 set clipboard+=unnamedplus
74else
75 set termencoding=utf-8
76 if system('uname -s') == "Darwin\n"
77 "set clipboard^=unnamed,unnamedplus
78 set clipboard=unnamed
79 else
80 set clipboard=unnamedplus
81 endif
82endif
83
84if executable('ag')
85 set grepprg=ag\ --vimgrep\ $*
86endif
87
88if has('signcolumn')
89 set signcolumn=number
90endif
91
92if has("statusline") && !&cp
93 set laststatus=2
94 set statusline=%f
95 set statusline+=\ -\
96 set statusline+=%y
97 set statusline+=%=
98 set statusline+=[buffer:%02n]
99 set statusline+=[column:%02v]
100 set statusline+=[line:%04l
101 set statusline+=/
102 set statusline+=%04L]
103 set statusline+=%#warningmsg#
104 set statusline+=%*
105endif
106
107if has("termguicolors")
108 let &t_8f = "\<Esc>[38:2:%lu:%lu:%lum"
109 let &t_8b = "\<Esc>[48:2:%lu:%lu:%lum"
110 set termguicolors
111endif
112
113runtime macros/matchit.vim
114filetype plugin indent on
115set omnifunc=syntaxcomplete#Complete
116
117" }}}}
118
119"" Mappings {{{{
120""
121
122let mapleader = ","
123let localleader = "\\"
124
125inoremap jk <esc>
126" nnoremap / /\v
127nnoremap ; :
128nnoremap <C-e> :Buffers<cr>
129nnoremap <C-h> <C-w>h
130nnoremap <C-j> <C-w>j<C-w>_
131nnoremap <C-k> <C-w>k<C-w>_
132nnoremap <C-l> <C-w>l
133nnoremap <C-n> :GFiles<cr>
134nnoremap <C-p> :Files<cr>
135nnoremap <leader>" viw<esc>a"<esc>hbi"<esc>lel
136nnoremap <leader>' viw<esc>a'<esc>hbi'<esc>lel
137nnoremap <leader><space> :noh<cr>
138nnoremap <leader>L mQgewvu`Q
139nnoremap <leader>U mQgewvU`Q
140nnoremap <leader>W :%s/\s\+$//<cr>:let @/=''<CR>
141nnoremap <leader>ev :vsplit $MYVIMRC<cr>
142nnoremap <leader>fef :normal! gg=G``<CR>
143nnoremap <leader>gb :Git blame -w -M<cr>
144nnoremap <leader>h <C-w>s<C-w>l
145nnoremap <leader>hs :set hlsearch! hlsearch?<CR>
146nnoremap <leader>l mQviwu`Q
147nnoremap <leader>n :NERDTreeFind<cr>
148nnoremap <leader>p "+p
149nnoremap <leader>sv :source $MYVIMRC<cr>
150nnoremap <leader>u mQviwU`Q
151nnoremap <leader>v <C-w>v<C-w>l
152nnoremap <localleader>F :Ag<space>
153nnoremap <localleader>f :grep! "\b<C-R><C-W>\b"<CR>:cw<CR>
154nnoremap <localleader>n :NERDTreeClose<cr>
155nnoremap <silent> <leader>cd :lcd %:h<CR>
156nnoremap <silent> <leader>fc <ESC>/\v^[<=>]{7}( .*\|$)<CR>
157nnoremap <silent> <leader>md :!mkdir -p %:p:h<CR>
158nnoremap <silent> <leader>tw :set invwrap<CR>:set wrap?<CR>
159nnoremap <silent> <leader>ul :t.<CR>Vr=
160nnoremap <silent> gw :s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR>`'
161nnoremap <space> za
162nnoremap <tab> %
163nnoremap H ^
164nnoremap L $
165noremap <Down> gj
166noremap <Up> gk
167noremap <leader>= <C-w>=
168vnoremap / /\v
169vnoremap <localleader>/ <leader>c<space>
170vnoremap <localleader>f y:Ag! <C-R>"<CR>
171vnoremap <space> zf
172vnoremap <tab> %
173
174nmap <localleader>/ <Plug>CommentaryLine
175xmap <localleader>/ <Plug>Commentary
176
177"imap <c-space> <plug>(fzf-maps-i)
178nmap <leader><tab> <plug>(fzf-maps-n)
179omap <leader><tab> <plug>(fzf-maps-o)
180xmap <leader><tab> <plug>(fzf-maps-x)
181
182"inoremap <expr> <c-x><c-]> fzf#vim#complete("cat tags")
183imap <c-x><c-f> <plug>(fzf-complete-path)
184imap <c-x><c-j> <plug>(fzf-complete-file-ag)
185imap <c-x><c-k> <plug>(fzf-complete-word)
186imap <c-x><c-l> <plug>(fzf-complete-line)
187imap <c-x><c-n> <plug>(fzf-complete-buffer-line)
188
189" }}}}
190
191"" Abbreviations {{{{
192""
193
194iabbrev adn and
195iabbrev ohter other
196iabbrev waht what
197iabbrev teh the
198iabbrev tehn then
199iabbrev @@ mo@mokhan.ca
200
201" }}}}
202
203"" Plugin Configuration {{{{
204""
205
206let g:fzf_tags_command = 'ctags -R'
207let g:go_fmt_autosave = 1
208let g:go_list_type = "quickfix"
209let g:go_play_browser_command = 'browser %URL%'
210let g:markdown_fenced_languages = [
211\ 'bash=sh',
212\ 'go',
213\ 'golang=go',
214\ 'html',
215\ 'javascript',
216\ 'js=javascript',
217\ 'json=javascript',
218\ 'mermaid',
219\ 'ruby',
220\ 'rust',
221\ 'sh',
222\ 'sql'
223\ ]
224let g:markdown_folding = 0
225let g:markdown_recommended_style = 0
226let g:ruby_indent_assignment_style = 'variable'
227let g:ruby_indent_block_style = 'do'
228let g:ruby_not_expensive = 1
229let g:ruby_operators = 1
230let g:ruby_space_errors = 1
231
232" }}}}