dotfiles
1filetype plugin on
2
3" leader key
4let mapleader = ' '
5
6" enabled options
7set colorcolumn=80
8set confirm
9set cursorline
10set expandtab
11set ignorecase
12set laststatus=2
13set mouse=n
14set nowrap
15set number
16set path=**
17set relativenumber
18set scrolloff=5
19set shiftwidth=4
20set showcmd
21set sidescrolloff=12
22set splitbelow
23set splitright
24set tabstop=4
25set termguicolors
26set timeoutlen=200
27set undofile
28set undolevels=10000
29set winminwidth=10
30
31" keymaps
32nnoremap q <cmd>wincmd q<cr>
33nnoremap Q q
34xnoremap <silent> J :m '>+1<cr>gv=gv
35xnoremap <silent> K :m '<-2<cr>gv=gv
36nnoremap <c-j> <cmd>lnext<cr>
37nnoremap <c-k> <cmd>lprev<cr>
38nnoremap - <cmd>e %:h<cr>
39
40" Auto undo breakpoints
41inoremap , ,<c-g>u
42inoremap . .<c-g>u
43inoremap ; ;<c-g>u
44
45nnoremap <leader>, :lclose<bar>call setloclist(0, map(filter(range(1, bufnr('$')), 'buflisted(v:val)'), '{"bufnr": v:val}'))<bar>lopen<cr>
46nnoremap <leader>sg :lgrep -rn '' *<left><left><left>
47nnoremap <leader>e :vimgrep "\%^" **/
48" FIXME: really hacky way to do. I know
49nnoremap <expr> <leader><leader> HarpoonPin()
50func! HarpoonPin()
51 return ":\u0015nnoremap <leader>" . count . " :buffer " . bufnr('%') . "<cr>\n"
52endfunc
53
54colorscheme evening
55
56cnoreabbrev rere redir @*<bar>
57cnoreabbrev sos source %
58cabbrev w' w
59
60" turn on autochdir while in Insert Mode to get relative path completion
61" autochdir is quite dangerouse though
62" autocmd InsertEnter * let save_cwd = getcwd() | set autochdir
63" autocmd InsertLeave * set noautochdir | execute 'cd' fnameescape(save_cwd)
64
65command! Inspect echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')