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
 71if has('nvim')
 72  color sorbet
 73  set clipboard+=unnamedplus
 74else
 75  color happy_hacking
 76  set termencoding=utf-8
 77  if system('uname -s') == "Darwin\n"
 78    "set clipboard^=unnamed,unnamedplus
 79    set clipboard=unnamed
 80  else
 81    set clipboard=unnamedplus
 82  endif
 83endif
 84
 85if executable('ag')
 86  set grepprg=ag\ --vimgrep\ $*
 87endif
 88
 89if has('signcolumn')
 90  set signcolumn=number
 91endif
 92
 93if has("statusline") && !&cp
 94  set laststatus=2
 95  set statusline=%f
 96  set statusline+=\ -\
 97  set statusline+=%y
 98  set statusline+=%=
 99  set statusline+=[buffer:%02n]
100  set statusline+=[column:%02v]
101  set statusline+=[line:%04l
102  set statusline+=/
103  set statusline+=%04L]
104  set statusline+=%#warningmsg#
105  set statusline+=%*
106endif
107
108if has("termguicolors")
109  let &t_8f = "\<Esc>[38:2:%lu:%lu:%lum"
110  let &t_8b = "\<Esc>[48:2:%lu:%lu:%lum"
111  set termguicolors
112endif
113
114runtime macros/matchit.vim
115filetype plugin indent on
116set omnifunc=syntaxcomplete#Complete
117
118" }}}}
119
120"" Mappings {{{{
121""
122
123let mapleader = ","
124let localleader = "\\"
125
126inoremap jk <esc>
127" nnoremap / /\v
128nnoremap ; :
129nnoremap <C-e> :Buffers<cr>
130nnoremap <C-h> <C-w>h
131nnoremap <C-j> <C-w>j<C-w>_
132nnoremap <C-k> <C-w>k<C-w>_
133nnoremap <C-l> <C-w>l
134nnoremap <C-n> :GFiles<cr>
135nnoremap <C-p> :Files<cr>
136nnoremap <leader>" viw<esc>a"<esc>hbi"<esc>lel
137nnoremap <leader>' viw<esc>a'<esc>hbi'<esc>lel
138nnoremap <leader><space> :noh<cr>
139nnoremap <leader>L mQgewvu`Q
140nnoremap <leader>U mQgewvU`Q
141nnoremap <leader>W :%s/\s\+$//<cr>:let @/=''<CR>
142nnoremap <leader>ev :vsplit $MYVIMRC<cr>
143nnoremap <leader>fef :normal! gg=G``<CR>
144nnoremap <leader>gb :Git blame -w -M<cr>
145nnoremap <leader>h <C-w>s<C-w>l
146nnoremap <leader>hs :set hlsearch! hlsearch?<CR>
147nnoremap <leader>l mQviwu`Q
148nnoremap <leader>n :NERDTreeFind<cr>
149nnoremap <leader>p "+p
150nnoremap <leader>sv :source $MYVIMRC<cr>
151nnoremap <leader>u mQviwU`Q
152nnoremap <leader>v <C-w>v<C-w>l
153nnoremap <localleader>F :Ag<space>
154nnoremap <localleader>f :grep! "\b<C-R><C-W>\b"<CR>:cw<CR>
155nnoremap <localleader>n :NERDTreeClose<cr>
156nnoremap <silent> <leader>cd :lcd %:h<CR>
157nnoremap <silent> <leader>fc <ESC>/\v^[<=>]{7}( .*\|$)<CR>
158nnoremap <silent> <leader>md :!mkdir -p %:p:h<CR>
159nnoremap <silent> <leader>tw :set invwrap<CR>:set wrap?<CR>
160nnoremap <silent> <leader>ul :t.<CR>Vr=
161nnoremap <silent> gw :s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR>`'
162nnoremap <space> za
163nnoremap <tab> %
164nnoremap H ^
165nnoremap L $
166noremap <Down> gj
167noremap <Up> gk
168noremap <leader>= <C-w>=
169vnoremap / /\v
170vnoremap <localleader>/ <leader>c<space>
171vnoremap <localleader>f y:Ag! <C-R>"<CR>
172vnoremap <space> zf
173vnoremap <tab> %
174
175nmap <localleader>/ <Plug>CommentaryLine
176xmap <localleader>/ <Plug>Commentary
177
178"imap <c-space> <plug>(fzf-maps-i)
179nmap <leader><tab> <plug>(fzf-maps-n)
180omap <leader><tab> <plug>(fzf-maps-o)
181xmap <leader><tab> <plug>(fzf-maps-x)
182
183"inoremap <expr> <c-x><c-]> fzf#vim#complete("cat tags")
184imap <c-x><c-f> <plug>(fzf-complete-path)
185imap <c-x><c-j> <plug>(fzf-complete-file-ag)
186imap <c-x><c-k> <plug>(fzf-complete-word)
187imap <c-x><c-l> <plug>(fzf-complete-line)
188imap <c-x><c-n> <plug>(fzf-complete-buffer-line)
189
190" }}}}
191
192"" Abbreviations {{{{
193""
194
195iabbrev adn and
196iabbrev ohter other
197iabbrev waht what
198iabbrev teh the
199iabbrev tehn then
200iabbrev @@ mo@mokhan.ca
201
202" }}}}
203
204"" Plugin Configuration {{{{
205""
206
207let g:fzf_tags_command = 'ctags -R'
208let g:go_fmt_autosave = 1
209let g:go_list_type = "quickfix"
210let g:go_play_browser_command = 'browser %URL%'
211let g:markdown_fenced_languages = [
212\ 'bash=sh',
213\ 'go',
214\ 'golang=go',
215\ 'html',
216\ 'javascript',
217\ 'js=javascript',
218\ 'json=javascript',
219\ 'mermaid',
220\ 'ruby',
221\ 'rust',
222\ 'sh',
223\ 'sql'
224\ ]
225let g:markdown_folding = 0
226let g:markdown_recommended_style = 0
227let g:ruby_indent_assignment_style = 'variable'
228let g:ruby_indent_block_style = 'do'
229let g:ruby_not_expensive = 1
230let g:ruby_operators = 1
231let g:ruby_space_errors = 1
232
233" }}}}