-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvimrc
175 lines (145 loc) · 5.32 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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
" you can find below. If you wish to change any of those settings, you should
" do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
" everytime an upgrade of the vim packages is performed. It is recommended to
" make changes after sourcing debian.vim since it alters the value of the
" 'compatible' option.
" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
runtime! debian.vim
" Uncomment the next line to make Vim more Vi-compatible
" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
" options, so any other options should be set AFTER setting 'compatible'.
" set compatible
" To avoid the ^M bug...
set fileformat=unix
set fileencoding=utf-8
set backspace=indent,eol,start
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
syntax on
" Color theme
" Available themes:
" mustang, vitamins, desert, vylight, molokai
set t_Co=256
set termguicolors
colorscheme tokyonight
" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
" set background=dark
" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
" Uncomment the following to have Vim load indentation rules and plugins
" according to the detected filetype.
if has("autocmd")
filetype plugin indent on
endif
" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
set showcmd " Show (partial) command in status line.
set showmatch " Show matching brackets.
set ignorecase " Do case insensitive matching
set smartcase " Do smart case matching
set incsearch " Incremental search
set autowrite " Automatically save before commands like :next and :make
set hidden " Hide buffers when they are abandoned
set mouse=v " Enable mouse usage (all modes)
set hlsearch
set ts=4
set shiftwidth=4
set expandtab
filetype plugin indent on
let mapleader = ","
" Define New Custom Ag command ignoring some files defined in ~/.ignore_ag
command! -bang -nargs=* AgC call fzf#vim#ag(<q-args>, "--path-to-ignore ~/.ignore_ag", fzf#vim#with_preview(), <bang>0)
" Shortcuts
"map <C-t> :tab split<CR>
map <C-PageUp> :gt<CR>
map <C-PageDown> :gT<CR>
map <F3> <Plug>MarkSet
map <C-w>2 :split<CR>
map <C-w>3 :vsplit<CR>
map <Leader>f :Files<CR>
map <Leader>a :AgC<CR>
map <Leader>q :AgC <C-R><C-W><CR>
map <Leader>t :Tags<CR>
map <Leader>b :Buffers<CR>
" I cannot use `map <Leader>m :Marks` because Marks is overrided by another
" plugin
map <Leader>m :call fzf#vim#marks()<CR>
map <Leader>< :pop<CR>
map <F4> :set number!<CR>
nnoremap <Leader>> <C-]>
" cscope
set cscopetag
set cst
set csto=0
nmap <Leader>g :cs find g <C-R>=expand("<cword>")<CR><CR>
function! Cscope(option, query)
let color = '{ x = $1; $1 = ""; z = $3; $3 = ""; printf "\033[34m%s\033[0m:\033[31m%s\033[0m\011\033[37m%s\033[0m\n", x,z,$0; }'
let opts = {
\ 'source': "cscope -dL" . a:option . " " . a:query . " | awk '" . color . "'",
\ 'options': ['--ansi', '--prompt', '> ',
\ '--multi', '--bind', 'alt-a:select-all,alt-d:deselect-all',
\ '--color', 'fg:188,fg+:222,bg+:#3a3a3a,hl+:104'],
\ 'down': '40%'
\ }
function! opts.sink(lines)
let data = split(a:lines)
let file = split(data[0], ":")
execute 'e ' . '+' . file[1] . ' ' . file[0]
endfunction
call fzf#run(opts)
endfunction
" Invoke command. 'g' is for call graph, kinda.
nnoremap <silent> <Leader>c :call Cscope('3', expand('<cword>'))<CR>
execute pathogen#infect()
set laststatus=2
map <F2> :NERDTreeToggle<CR>
" Lightline
let g:lightline = {
\ 'colorscheme': 'tokyonight',
\ 'active': {
\ 'left': [ [ 'mode', 'paste' ],
\ [ 'gitbranch', 'readonly', 'filename', 'modified' ] ]
\ },
\ 'component_function': {
\ 'gitbranch': 'gitbranch#name'
\ },
\ }
" FZF
set rtp+=~/.fzf
map <F1> :FZF ~<CR>
"command! -bang -nargs=* Ag call fzf#vim#ag(<q-args>, '--follow', <bang>0)
" ACK
let g:ackprg = 'ag --vimgrep --follow'
" Rainbow
let g:rainbow_active = 1
" Matchup
let g:loaded_matchit = 1
" UltiSnips
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
" If you want :UltiSnipsEdit to split your window.
let g:UltiSnipsEditSplit="vertical"
let g:UltiSnipsSnippetDirectories=['UltiSnips',$HOME.'/.vim/my_snippets']
" Reload snippets: :call UltiSnips#RefreshSnippets
" tex functions
function! UnderscoreSlash()
execute "normal! viW:s/\\%V_/\\\\_/g\<cr>"
endfunction
function! AddTTT()
execute "normal! diwi\\texttt{\<esc>pi\<right>}"
endfunction
function! AddEmph()
execute "normal! diwi\\emph{\<esc>pi\<right>}"
endfunction
autocmd BufRead,BufNewFile *.tex set filetype=tex textwidth=80
autocmd FileType tex nnoremap <buffer> <F5> :call UnderscoreSlash()<CR>
autocmd FileType tex nnoremap <buffer> <F11> :call AddTTT()<CR>
autocmd FileType tex nnoremap <buffer> <F12> :call AddEmph()<CR>