-
Notifications
You must be signed in to change notification settings - Fork 0
/
.vimrc
171 lines (151 loc) · 5.92 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
" 在 vim 首次启动时自动安装 vim-plug 并执行 :PlugInstall 安装插件
if empty(glob('~/.vim/autoload/plug.vim'))
slient !curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall | source $MYVIMRC
endif
call plug#begin()
" vim 启动屏幕,可显示最近打开的文件
Plug 'mhinz/vim-startify'
" vim 主题
Plug 'NLKNguyen/papercolor-theme'
" Plug 'cocopon/iceberg.vim'
" Plug 'joshdick/onedark.vim'
" vim 图标
Plug 'ryanoasis/vim-devicons'
" vim 底部状态栏增强
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" vim 目录树
Plug 'preservim/nerdtree'
" vim 撤销树
Plug 'mbbill/undotree'
" vim 展示文件整体结构
Plug 'preservim/tagbar'
" vim git插件
Plug 'tpope/vim-fugitive'
" vim 括号自动补全
Plug 'jiangmiao/auto-pairs'
" vim 快速模糊搜索
Plug 'Yggdroot/LeaderF', { 'do': ':LeaderfInstallCExtension' }
" vim 分割线
Plug 'Yggdroot/indentLine'
" vim 代码自动补全
Plug 'ycm-core/YouCompleteMe'
" vim 代码块
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
" vim 代码模板
Plug 'chxuan/prepare-code'
" vim 快速注释
" Plug 'scrooloose/nerdcommenter'
" vim 语法高亮
Plug 'sheerun/vim-polyglot'
" wakatime
Plug 'wakatime/vim-wakatime'
call plug#end()
" 语法高亮
syntax enable
" 启用256色
set t_Co=256
set background=dark
" 配置主题
colorscheme PaperColor
" colorscheme iceberg
" colorscheme onedark
" airline 配置
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1 " enable airline tabline
let g:airline#extensions#tabline#show_close_button = 0 " remove 'X' at the end of the tabline
let g:airline#extensions#tabline#tabs_label = '' " can put text here like BUFFERS to denote buffers (I clear it so nothing is shown)
let g:airline#extensions#tabline#buffers_label = '' " can put text here like TABS to denote tabs (I clear it so nothing is shown)
let g:airline#extensions#tabline#fnamemod = ':t' " disable file paths in the tab
let g:airline#extensions#tabline#show_tab_count = 0 " dont show tab numbers on the right
let g:airline#extensions#tabline#show_buffers = 0 " dont show buffers in the tabline
let g:airline#extensions#tabline#tab_min_count = 2 " minimum of 2 tabs needed to display the tabline
let g:airline#extensions#tabline#show_splits = 0 " disables the buffer name that displays on the right of the tabline
let g:airline#extensions#tabline#show_tab_nr = 0 " disable tab numbers
let g:airline#extensions#tabline#show_tab_type = 0 " disables the weird ornage arrow on the tabline
" set nocompatible " 关闭兼容模式,启用更多功能特性
set encoding=utf-8 " 指定使用utf-8
filetype plugin on " 文件类型检测
set number " 开启行号
set cursorline " 高亮显示当前行
set linebreak " 只有遇到指定符号才换行
set laststatus=2 " 显示状态栏
set virtualedit=block,onemore " 允许光标出现在最后一个字符的后面
set backspace=indent,eol,start " 设置backspace可在INSERT模式下删除
" set cmdheight=2 " 设置命令行的高度
set showcmd " 在命令行显示输入的命令
set ttimeoutlen=0 " 设置<ESC>键响应时间
" 在命令模式下启用命令补全
set wildmenu
set wildmode=longest:list,full
set autoindent " 设置自动缩进
set smartindent " 智能选择对齐方式
set expandtab " 将制表符扩展为空格
set tabstop=4 " 设置tab=4空格
set shiftwidth=4 " 设置缩进为4空格
set smarttab " 在行和段开始处使用制表符
set hlsearch " 高亮显示搜索结果
set incsearch " 开启实时搜索功能
set nobackup " 设置不备份
set noswapfile " 禁止生成临时文件
set autowrite " 设置自动保存
set autoread " 自动重新文件更改
set confirm " 在处理未保存或只读文件的时候,弹出确认
" 保留撤销历史
if !isdirectory($HOME."/.vim")
call mkdir($HOME."/.vim", "", 0700)
endif
if !isdirectory($HOME."/.vim/.undo")
call mkdir($HOME."/.vim/.undo", "", 0700)
endif
set undodir=~/.vim/.undo//
set undofile
" 设置记录的历史操作次数
set history=1000
" 当重新打开文件时光标回到上一次所在位置
if has('viminfo')
autocmd BufWinLeave ?* mkview " 在离开缓冲区时保存视图
autocmd BufWinEnter ?* silent loadview " 在进入缓冲区时加载视图
endif
" 配置粘贴时自动切换为粘贴模式
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
function! XTermPasteBegin()
set pastetoggle=<Esc>[201~
set paste
return ""
endfunction
" 自定义映射
" 定义<leader>键
let mapleader = ","
" 快速注释
let g:NERDSpaceDelims=1
let g:NERDCommentEmptyLines = 1
let g:NERDCustomDelimiters = { 'c': { 'left': '// ','right': '' } }
" 开启目录树
nnoremap <C-n> :NERDTreeToggle<CR>
" 开启撤销树
nnoremap <F5> :UndotreeToggle<CR>
" 开启文件视图
nnoremap <C-m> :TagbarToggle<CR>
" 配置 U 为重做
nnoremap U <C-r>
" 修改连按kj为ESC
inoremap kj <ESC>
" 重复上次执行的命令
nnoremap ..c @:
" pwn
nnoremap <leader><leader>r :!%:p<CR>
nnoremap <leader><leader>g :!%:p GDB<CR>
nnoremap <leader><leader>x :!chmod +x %:p<CR><CR>
nnoremap <leader><leader><leader>r :!%:p REMOTE<CR>
" 代码块相关
let g:UltiSnipsExpandTrigger="<C-g>"
let g:UltiSnipsJumpForwardTrigger="<C-f>"
let g:UltiSnipsJumpBackwardTrigger="<C-b>"
" 代码模板相关
let g:prepare_code_plugin_path = expand($HOME . "/.vim/plugged/prepare-code")