-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.vimrc
135 lines (118 loc) · 3.39 KB
/
.vimrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
" Settings
filetype plugin on
set tabstop=4 softtabstop=0 expandtab shiftwidth=4 smarttab
set number
set clipboard^=unnamed
set re=0
set lazyredraw
set smartcase
set hidden
set updatetime=100
set laststatus=2
set signcolumn=yes
" Plugins
call plug#begin()
Plug 'tpope/vim-surround'
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'tpope/vim-commentary'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-repeat'
Plug 'ctrlpvim/ctrlp.vim'
Plug 'jremmen/vim-ripgrep'
Plug 'jpalardy/vim-slime'
Plug 'catppuccin/vim', { 'as': 'catppuccin' }
Plug 'lifepillar/vim-mucomplete'
Plug 'airblade/vim-gitgutter'
Plug 'justinmk/vim-sneak'
call plug#end()
" Plugin configuration
runtime macros/sandwich/keymap/surround.vim
let g:sneak#label = 1
let g:slime_target = 'tmux'
let g:slime_bracketed_paste = 1
let g:slime_default_config = {"socket_name": "default", "target_pane": ".1"}
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/]\.(git|hg|svn)$',
\ 'file': '\v\.(exe|so|dll|png|jpg|jpeg|gif|pdf|a|log|aux|cls|out)$',
\ }
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']
" Minimal statusline
" filename, [modified] ... git status, line/column, filetype
function! GitStatus()
let [a,m,r] = GitGutterGetHunkSummary()
return printf('<+%d ~%d -%d>', a, m, r)
endfunction
set statusline=
set statusline+=\ %f
set statusline+=\ %m
set statusline+=%=
set statusline+=%{GitStatus()}
set statusline+=\ :%l:%c:
set statusline+=\ (%p%%)
set statusline+=\ %y
" Completion
let g:mucomplete#enable_auto_at_startup = 1
imap <expr> <right> mucomplete#extend_fwd("\<right>")
set omnifunc=syntaxcomplete#Complete
set completeopt=menuone,noselect
set shortmess+=c
" Mappings
let mapleader=" "
nnoremap <leader>q :q<cr>
nnoremap <leader>w :w<cr>
nnoremap <leader>h :nohlsearch<cr>
nnoremap <leader>m :make<cr>
nnoremap <leader>, :bprev<cr>
nnoremap <leader>. :bnext<cr>
nnoremap <leader>c :bdelete<cr>
nnoremap <leader><leader> :CtrlP<cr>
nnoremap <leader>b :CtrlPBuffer<cr>
nnoremap <C-n> :NERDTreeToggle<cr>
nnoremap <leader>Lc :e ~/.vimrc<cr>
nnoremap <leader>Lr :source ~/.vimrc<cr>
nnoremap <leader>pi :PlugInstall<cr>
nnoremap <leader>pc :PlugClean<cr>
nnoremap <leader>pu :PlugUpdate<cr>
nnoremap <leader>pU :PlugUpgrade<cr>
" for typos
command-bang Q q
command-bang W w
" swap display line up/down
nnoremap j gj
nnoremap k gk
nnoremap gj j
nnoremap gk k
" Center selection when searching
nnoremap n nzzzv
nnoremap N Nzzzv
" swap lines up and down in visual mode
vnoremap K :m '<-2<CR>gv=gv
vnoremap J :m '>+1<CR>gv=gv
" easy split navigation
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
" Increment all values within a visual selection
vnoremap <C-a> :s/\d\+/\=(submatch(0)+1)/g<cr>:nohlsearch<cr>
" A shorter way of entering markdown links (select text then press <C-k>)
" Only works with vim-surround
vmap <C-k> S]%a()<Esc>i
" Persistent undo
let vimDir = '$HOME/.vim'
if stridx(&runtimepath, expand(vimDir)) == -1
" vimDir is not on runtimepath, add it
let &runtimepath.=','.vimDir
endif
if has('persistent_undo')
" different undo files for vim and neovim
let myUndoDir = expand(vimDir . '/undodir' . (has('nvim') ? 'neo' : ''))
call system('mkdir ' . vimDir)
call system('mkdir ' . myUndoDir)
let &undodir = myUndoDir
set undolevels=1000
set undoreload=10000
set undofile
endif
" the most important part
colorscheme catppuccin_mocha