-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvimrc.airline.gruvbox.slow.bak
1112 lines (873 loc) · 31.4 KB
/
vimrc.airline.gruvbox.slow.bak
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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
" ~/.vim/.vimrc.plug
" 参考 {{{
"
" 搜索vim文件
" :t_SI filetype:vim
" F1键
" 在gnome中F1键启用term,它截获了vim中F1的响应,所以应该禁用term的F1功能
" https://askubuntu.com/questions/58147/how-do-i-disable-the-help-f1-key/244786#244786
" 在一个映射之后不能直接加入注释,
" 因为“字符”也会被认为是映射的一部分。
" 可以通过|”绕过这一限制
" :map <space> W | “这是注释
" }}}
" 一般性配置: {{{1
" 常规与外观 {{{
"
" VIM与Vi不完全兼容,因此要设置此选项
set nocompatible
colorscheme evening
" 1. 启用文件类型检测
" 2. 使用文件类型相关插件
" 3. 根据文件类型使用缩进文件
filetype plugin indent on
" 基于语法的自动补全
set omnifunc=syntaxcomplete#Complete
" 这指明在插入模式下在哪里允许 <BS>
" 删除光标前面的字符。逗号分隔的三个值分别指:
" 行首的空白字符,换行符和插入模式开始处之前的字符。
set backspace=indent,eol,start
" 显示行号
set number
" 启用鼠标支持
set mouse=a
" 中文编码方式
" vim内部采用utf-8编码方式
scriptencoding utf-8
set encoding=utf-8
" 由于vim内部采用utf-8编码方式,所以如果想要编辑16位unicode文件,必须 将其转换。
" vim会尝试着检查fileencodings选项中的编码文件,检测你需要使用哪种编码
set fencs=utf-8,gb2132,gbk
" 当写入文件的时候,会比较 fileencoding 与 encoding 的数值,如果他们的数值不相
" 同,文本会被转换
set fenc=utf-8
" 终端识别的字符编码
set termencoding=utf-8
" Tab,拖尾空白和行尾(eol)显示的字符。对非文本字符和特殊字符
" 按照灰色显示。
set listchars=tab:▸\ ,eol:¬
highlight NonText guifg=#4a4a59
highlight SpecialKey guifg=#4a4a59
" 高亮行号
" highlight LineNr ctermfg=grey ctermbg=bg
" 当前选择行高亮显示
set cursorline
" error: 出现配置问题,设置CursorLine之后,无法应用到当前配置文件中,一旦应用就
" 会出现配置被自动调整的情况
" highlight CursorLine ctermfg=yellow ctermbg=grey
" 配置foldcolumn,使得最左边出现1个空白列
" set foldcolumn=2
" highlight foldcolumn=bg
" set nowrap
set nowrap
" Command模式时,加强命令补全功能。
" 例如:使用find命令时,可以显示所有找到的匹配的文件名称,用tab键可进行选择
set wildmenu
" 在 Vim 窗口右下角,标尺的右边显示未完成的命令。例如,当你输入 "2f",Vim 在等
" 你输入要查找的字符并且显示 "2f"。当你再输入 w,"2fw" 命令被执行,"2f" 自动消
" 失。
set showcmd
" 总是显示标签页,如果不配置该选项,将看不到标签页,不便于跳转
set showtabline=2
" 键入一个右括号 ) 时,如果能知道它匹配哪个左括号 (
" 问题是,会有一个很小的时间延迟
" set showmatch
" 在命令行不显示 <-- 插入--> 这样的字符串
set noshowmode
"set showmode
" Normal模式下,向下滚动时,光标会位于最后一行,不方便阅读。
" 这个配置,让阅读位置总是距离最低端有4行的距离。
set scrolloff=4
" 最后一个窗口何时有状态行。2=总是有状态行,0=永不,1=至少有两个窗口
set laststatus=2
" 重定向临时交换文件的保存位置
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp
" 关闭viualbell,出错时没有声音,没有闪烁
set novisualbell
" 设置path路径
" **表示在当前文件夹下对子文件夹递归查找
set path+=~/Documents/hxzdiary,~/.vim/,**
" 不进入 */git , */svn 等目录
" 忽略 *.o, *.obj文件
"
" wildignore File File Dir Dir Dir + File
" Pattern "foo" "a/foo" "foo" "a/foo" "a/foo/b"
" ---------------------------------------------------------------
" `foo` match match miss miss miss
" `foo/` miss miss miss miss miss
" `foo/*` miss miss miss miss miss
" `*/foo` match match match match match
" `*/foo/` miss miss match miss miss
" `*/foo/*` miss miss match match match
"
set wildignore+=*/.git,*/.svn,*/.tmp
set wildignore+=*.o,*.obj
set wildignore+=*.aux,*._aux,*._log,*.log,*.out,*.synctex.gz,*.toc,*.tex.project.vim
" 启动界面
set shortmess=atI
" 提高esc的反应时间
set ttimeoutlen=10
" }}}
" 语法和缩进 {{{
" expandtab,把制表符转换为多个空格,具体空格数量参考 tabstop 和 shiftwidth 变量;
" tabstop 与 shiftwidth 是有区别的。tabstop 指定我们在插入模式下输入一个制表符占据的空格数量
" ,linux 内核编码规范建议是 8,看个人需要;shiftwidth 指定在进行缩进格式化源码时制表符占据的
" 空格数。所谓缩进格式化,指的是通过 vim 命令由 vim 自动对源码进行缩进处理,比如其他人的代码不
" 满足你的缩进要求,你就可以对其进行缩进格式化。缩进格式化,需要先选中指定行,要么键入 = 让
" vim 对该行进行智能缩进格式化,要么按需键入多次 < 或 > 手工缩进格式化;
"
" softtabstop,如何处理连续多个空格。因为 expandtab 已经把制表符转换为空格,当你要删除制表符
" 时你得连续删除多个空格,该设置就是告诉 vim 把连续数量的空格视为一个制表符,即,只删一个字符
" 即可。通常应将这tabstop、shiftwidth、softtabstop 三个变量设置为相同值;
"
" 另外,你总会阅读其他人的代码吧,他们对制表符定义规则与你不同,这时你可以手工执行 vim 的
" retab 命令,让 vim 按上述规则重新处理制表符与空格关系。
" 打开语法高亮功能
syntax enable
" 允许用指定语法高亮配色方案替换默认方案
syntax on
" 延续上一行的缩进方式
set autoindent
" 没有缩进文件的可用编程语言采用这种缩进方式
set smartindent
" 将制表符扩展为空格,原来以为这个配置很有用,其实完全没有必要配置的
" 问题是会导致原本存储1个<tab>二进制代码的空间
" 现在必须存储8个空格的二进制代码,存储空间变为了原来的8倍
" 其实,只要理解了tabstop是为了兼容其他编辑器而设定的固定值
" 就知道在vim中应该只改变softtabstop的数值了
" set expandtab
" 使用retab时,vim使用8个空格,这个定义不要改变
" 如果确实需要改变,改动softtabstop的数值!
set tabstop=8
" 当使用[>]缩进命令时,空格数
set shiftwidth=4
set cindent shiftwidth=4
" 在insert模式下,按一下<tab>键,产生4个空格,而不是8个
set softtabstop=4
" }}}
" 性能优化 {{{
"
" 宏和不是输入文本的操作,均延迟重画界面
" 也就是说,只有输入文字的时候时刻重新绘制界面,让输入的文字能及时显示到屏幕上
" 除此之外的操作,延迟一会儿重绘界面,问题不大
set lazyredraw
" 设置快速终端
set ttyfast
" 设置语法同步
autocmd BufWinEnter,Syntax * syn sync minlines=300 maxlines=500
" }}}
" Search {{{
" 开启实时搜索功能
set incsearch
" 对查找结果高亮显示
set hlsearch
" 搜索时忽略大小写
set ignorecase
" 如果在单词中有大写字母就自动按照大小写敏感查找
set smartcase
" 配置man.vim的查找路径,在vim中可以直接查看man手册
source $VIMRUNTIME/ftplugin/man.vim
" }}}
" 扩大窗口显示区域 {{{
" 在Ubuntu下按F11键,全屏。
" 禁止光标闪烁
set gcr=a:block-blinkon0
" 禁止显示滚动条
set guioptions-=l
set guioptions-=L
set guioptions-=r
set guioptions-=R
" 扩大窗口
set winminwidth=0 " default=1
set winminheight=0 " default=1
" 禁止显示菜单和工具条
set guioptions-=m
set guioptions-=T
" }}}
" 自定义快捷键映射 {{{
let g:mapleader=';'
" 映射source
nnoremap <silent> <leader>so :source %<CR>
" 1. qq启动记录宏命令
" 2. q 停止宏记录
" 3. Q 应用宏记录命令
nnoremap Q @q
vnoremap Q :norm @q<cr>
" 显示/隐藏不可显示字符
nmap <silent> <leader>ns :set nolist!<CR>
" 关闭查找高亮,其实是清空了查找寄存器"/
nnoremap <silent> <leader>nl :let @/=''<CR>
" 修改当前目录
nnoremap <leader>cd :cd %:p:h<CR>:pwd<CR>
" 保存当前文件修改内容。需要在.bashrc文件中添加stty -ixon这条语句,关闭bash的ctrl-s快捷功能。
nnoremap <leader>w :w<CR>
" 退出整个vim
nnoremap <leader>qa :qa<CR>
" 重新映射<c-^>
nnoremap <leader>x <c-^>
" 映射切换到shell的快捷键
nnoremap <silent> <leader>sh :<c-u>sh<CR>
" <C-J>的映射已经被latex-suite占用
nnoremap <silent> <leader>j :wincmd j<CR>
nnoremap <silent> <leader>h :wincmd h<CR>
nnoremap <silent> <leader>l :wincmd l<CR>
nnoremap <silent> <leader>k :wincmd k<CR>
noremap <Up> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>
noremap <Down> <NOP>
" 2017-07-22 放弃这种使用方法
" 原因:在Insert中文模式下,如果IME是中文,按jk键之后
" 进入中文输入法,因此改用<C-;>。这种方法的缺点是,屏蔽了
" xterm的粘贴功能
" 但是下面这个功能不起作用,仍然是terminal的粘贴功能
" inoremap <C-;> <C-[>
" 2017-09-17 通过将esc与caps交换的方法,让caps替代了esc键
" 这样就把<ctrl-c>键释放出来了
" inoremap <Ctrl-C> <ESC>
" 在insert模式下,按下jk替代ESC键。进入Insert模式,直接按下i就可以了,不需要映射。
" inoremap jk <esc>
" cnoremap jk <esc>
" 加快viewport的滚动
nnoremap <C-e> 3<C-e>
nnoremap <C-y> 3<C-y>
" 默认加载vim的快捷键
nmap <silent> <leader>vim :e ~/.vim/vimrc<cr>
" 默认打开cheat40.txt快捷键
nmap <silent> <leader>ch :e ~/.vim/cheat40.txt<cr>
" 映射netrw的开关
map <silent> <F2> :NERDTreeToggle<CR>
" 重置到一行开始和结束的快捷键
" 由于L是到达屏幕最低端的快捷键,所以当映射LB之后,按下L键响应变的慢了
" 正是由于上述原因,所以取消了映射。
" nmap LB 0
" nmap LE $
" 删除所有行末尾的空格
nnoremap <silent> <leader><space> :%s/\s\+$//<cr>:let @/=''<CR>
" 打开剪贴板历史记录
nnoremap <silent> <leader>ya :Yanks<CR>
" 移动阅读窗口
nnoremap <silent> <C-<> :call Tools_PreviousCursor(6)<CR>
nnoremap <silent> <C->> :call Tools_PreviousCursor(7)<CR>
" 运行profile测试
nnoremap <silent> <F12> :ProfileStart<CR>
nnoremap <silent> <S-F12> :ProfileEnd<CR>
" }}}
" 插件中的快捷键映射 {{{
" LaTeX Suite 快捷键
" 与UltiSnippets的向下跳转冲突
imap <C-,> <Plug>IMAP_JumpForward
" Tagbar 快捷键
" 设置显示/隐藏标签列表子窗口的快捷键。速记:identifier list by tag
nnoremap <leader>tb :TagbarToggle<CR>
" }}}
" autocmd {{{
augroup vimrc
autocmd!
augroup END
" 帮助窗口在右边垂直打开
" 相当于是重新定义了Help命令
" 使用的时候,输入大写 Help
command! -nargs=* -complete=help Help vertical belowright help <args>
" 根据文件类型设置折叠方案
autocmd vimrc BufNewFile,BufRead *.cpp,*.h set foldmethod=syntax
" 如果是 *.txt 配置折叠方式
autocmd vimrc BufNewFile,BufRead *.txt set foldmethod=marker
" 更加智能的当前行高亮
autocmd vimrc VimEnter,WinEnter,BufWinEnter * setlocal cursorline
autocmd vimrc VimEnter,WinEnter,BufWinEnter * setlocal cursorline
autocmd vimrc WinLeave * setlocal nocursorline
" 让insert和normal状态与airline的状态栏保持一直
" exe 'highlight! link CursorLine airline_tabsel'
autocmd vimrc InsertEnter * highlight! CursorLine ctermfg=229 ctermbg=24
autocmd vimrc InsertLeave * highlight! CursorLine ctermbg=223 guibg=#ebdbb2
autocmd vimrc VimEnter,WinEnter,BufWinEnter * highlight! Visual term=bold ctermfg=130 ctermbg=229
" python的代码格式配置
autocmd vimrc FileType python setlocal
\ foldmethod=indent
\ tabstop=4
\ shiftwidth=4
\ softtabstop=4
\ textwidth=79
\ expandtab
\ autoindent
\ fileformat=unix
" python格式化
autocmd vimrc FileType python nnoremap <LocalLeader>= :0,$!yapf<CR>
" }}}
" }}}1
" Plugin: {{{1
" Plugin Management: {{{2
" 配置plug存放插件的文件夹
" - 避免使用vim预留的文件夹名称,如'plugin'
"https://github.com/junegunn/vim-plug
call plug#begin('~/.vim/plugged')
if filereadable(expand('~/.vim/.vimrc.plug'))
source ~/.vim/.vimrc.plug
endif
call plug#end() " required
" }}}2
" Powerline {{{2
" " set rtp+=/home/hxz/.local/lib/python2.7/site-packages/powerline/bindings/vim/
"
" " 所需字体 YaHei Consolas Hybird需要从github上下载
" " https://github.com/yakumioto/YaHei-Consolas-Hybrid-1.12
" set guifont=YaHei\ Consolas\ Hybird\ 11.5
" let g:Powerline_symbols = 'fancy'
" let g:Powerline_colorscheme= 'solarized256'
" let g:Powerline_cache_enabled=1
" " set fillchars+=stl:\ ,stlnc:\
" set term=xterm-256color
" set termencoding=utf-8
" " }}}2
" airline {{{2
" "
" " 显示tabline
" let g:airline#extensions#tabline#enabled = 1
" " let g:airline#extensions#tabline#left_sep = ' '
" " let g:airline#extensions#tabline#left_alt_sep = '|'
"
" " 采用powerline的字体格式
" " powerline字体需要从github上专门下载 https://github.com/powerline/fonts
" let g:airline_powerline_fonts = 1
"
" " 显示 buffer 的序列号
" let g:airline#extensions#tabline#buffer_nr_show = 1
" let g:airline#extensions#tabline#buffer_nr_format = '[%s] '
" let g:airline#extensions#tabline#fnamemod = ':t'
"
" let g:airline#extensions#whitespace#enabled = 0
" let g:airline#extensions#whitespace#symbol = '!'
" let g:airline_detect_paste=1
" let g:airline_detect_crypt=1
" let g:airline_detect_spell=0
" let g:airline_skip_empty_sections = 1
" let g:airline#extensions#branch#format = 1
" let g:airline_mode_map = {
" \ '__' : '-',
" \ 'n' : 'N',
" \ 'i' : 'I',
" \ 'R' : 'R',
" \ 'c' : 'C',
" \ 'v' : 'V',
" \ 'V' : 'V',
" \ '' : 'V',
" \ 's' : 'S',
" \ 'S' : 'S',
" \ '' : 'S',
" \ }
"
" " 切换buffer快捷键
" nnoremap <silent> H :<c-u>bp<CR>
" nnoremap <silent> L :<c-u>bn<CR>
" " }}}2
" gruvbox 颜色 {{{2
"
" " 要将 ~/.vim/plugged/gruvbox/gruvbox_256palette.sh
" " 放到.bashrc文件中,否则terminal显示不正确
"
" " 在gnome的term中显示斜体
" let g:gruvbox_italic=1
"
" " 默认就是256颜色
" let g:gruvbox_termcolors=256
"
" let g:gruvbox_invert_indent_guides=1
"
" let g:gruvbox_invert_selection=1
"
" " 针对C语言的语法增强功能
" let g:gruvbox_improved_strings=1
" let g:gruvbox_improved_warnings=1
"
" " set background=dark
" set background=light
"
" colorscheme gruvbox
"
" " 在tmux中总是有背景颜色
" " 参考:https://superuser.com/questions/399296/256-color-support-for-vim-background-in-tmuxhttps://superuser.com/questions/399296/256-color-support-for-vim-background-in-tmux
" if $COLORTERM == 'gnome-terminal'
" set t_Co=256
" endif
" set t_ut=
"
" }}}2
" ATP_VIM latex {{{2
let b:atp_TexCompiler="xelatex"
let b:atp_BibCompiler="bibtex"
let b:atp_TexOptions="-synctex=1"
let b:atp_auruns=5
let b:atp_running=1
" 允许折叠
" 重新折叠方法 :filetype detect
" g:atp_fold_environments = [] 一般不配置,折叠环境变量
" 会导致vim的速度明显下降
let g:atp_folding=0
let b:atp_TexFlavor="tex"
let g:askforoutdir=1
let b:atp_OpentViewer=1
" 按下<F6>键,删除所有中间文件
let g:atp_delete_output=1
" 显示Progress Bar
let g:atp_ProgressBar=1
" 显示错误信息
let g:atp_signs=1
" 在状态栏显示tex是否运行了
let g:atp_statusNotify=1
" 在omnifunc时使用tab补全
let g:atp_tab_map=1
" 添加amsmath自动补全功能
let g:atp_amsmath=1
" 只有处于math环境时候才自动补全
let g:atp_check_if_math_mode = 1
" }}}2
" Nerd Comment {{{2
" 默认leader为"\"
" \cc -- 注释
" \cu -- 取消注释
" Add spaces after comment delimiters by default
let g:NERDSpaceDelims = 1
" Use compact syntax for prettified multi-line comments
let g:NERDCompactSexyComs = 1
" Align line-wise comment delimiters flush left instead of following code indentation
let g:NERDDefaultAlign = 'left'
" Set a language to use its alternate delimiters by default
let g:NERDAltDelims_java = 1
" Add your own custom formats or override the defaults
let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } }
" Allow commenting and inverting empty lines (useful when commenting a region)
let g:NERDCommentEmptyLines = 1
" Enable trimming of trailing whitespace when uncommenting
let g:NERDTrimTrailingWhitespace = 1
" }}}2
" NERDTree {{{2
" 文件按照数字大小排序
let g:NERDTreeNaturalSort=1
" 采用WildIgnore中配置的忽略选项
let g:NERDTreeRespectWildIgnore=1
" 显示Bookmark收藏的文件夹
let g:NERDTreeShowBookmarks=1
" 显示隐藏文件夹
let g:NERDTreeShowHidden=1
" 显示行号
let g:NERDTreeShowLineNumbers=1
" 位于左边还是右边
let g:NERDTreeWinPos="left"
" 窗口大小
let g:NERDTreeWinSize=35
" =1 不显示’Press ? for help'文本信息
let g:NERDTreeMinimalUI=0
" }}}2
" UltiSnips {{{2
"
" 自定义snippets所在目录
let g:UltiSnipsSnippetDirectories=['mysnippets','UltiSnips']
" 自定义snippets的具体路径,不能写错了,写错就会导致程序失效
let g:UltiSnipsSnippetsDir = '~/.vim/plugged/ultisnips/mysnippets'
" 重定义tab展开自动补全的方式
" let g:UltiSnipsExpandTrigger = "<c-j>"
" 这种方法已经不再适用了,直接在YCM中可以定义<tab>键与 supertab 和 ultisnipets
" 的兼容性。
" }}}2
" Tagbar {{{2
"
" 设置 tagbar 子窗口的位置出现在主编辑区的左边
let g:tagbar_left=1
" 设置标签子窗口的宽度
let g:tagbar_width=32
" tagbar 子窗口中不显示冗余帮助信息
let g:tagbar_compact=1
" 设置 ctags 对哪些代码标识符生成标签
let g:tagbar_type_cpp = {
\ 'kinds' : [
\ 'c:classes:0:1',
\ 'd:macros:0:1',
\ 'e:enumerators:0:0',
\ 'f:functions:0:1',
\ 'g:enumeration:0:1',
\ 'l:local:0:1',
\ 'm:members:0:1',
\ 'n:namespaces:0:1',
\ 'p:functions_prototypes:0:1',
\ 's:structs:0:1',
\ 't:typedefs:0:1',
\ 'u:unions:0:1',
\ 'v:global:0:1',
\ 'x:external:0:1'
\ ],
\ 'sro' : '::',
\ 'kind2scope' : {
\ 'g' : 'enum',
\ 'n' : 'namespace',
\ 'c' : 'class',
\ 's' : 'struct',
\ 'u' : 'union'
\ },
\ 'scope2kind' : {
\ 'enum' : 'g',
\ 'namespace' : 'n',
\ 'class' : 'c',
\ 'struct' : 's',
\ 'union' : 'u'
\ }
\ }
" }}}2
" Easy-align {{{2
" Start interactive EasyAlign in visual mode (e.g. vipga)
xmap ga <Plug>(EasyAlign)
" Start interactive EasyAlign for a motion/text object (e.g. gaip)
nmap ga <Plug>(EasyAlign)
" }}}2
" limelight {{{2
"
" Limelight [0.0 ~ 1.0]
" Turn Limelight on
" Limelight!
" Turn Limelight off
" Limelight!! [0.0 ~ 1.0]
" Toggle Limelight
" 显示颜色
let g:limelight_conceal_ctermfg = 'gray'
" 透明度
let g:limelight_default_coefficient = 0.7
" 上下包含几个段落
let g:limelight_paragraph_span = 1
" 对10个高亮搜索结果使用此方案
let g:limelight_priority = 0
" 段落开始和结束位置
let g:limelight_bop = '^\s'
let g:limelight_eop = '\ze\n^\s'
" }}}2
" Cusor Shape {{{2
" 使用光标形状指示I和N状态
" 参考
" 1. 代码参考 http://vim.wikia.com/wiki/Configuring_the_cursor
" https://github.com/guns/haus/blob/master/etc/vim/local/tty.vim
" 2. 转义序列 https://ttssh2.osdn.jp/manual/en/usage/tips/vim.html
" 3. The Termcap Library http://www.delorie.com/gnu/docs/termcap/termcap_toc.html
" 命令:
" 1.查看termcap的定义 :set termcap?
" 2.vim中键盘标识符的含义 :h key-notation
" 3.查看某个按键的转义 $sed -n l
" 1 or 0 -> blinking block
" 2 -> solid block
" 3 -> blinking underscore
" 4 -> solid underscore
" 5 -> blinking vertical bar
" 6 -> solid vertical bar
" 似乎在判断term时出现了问题,导致t_SI无法正确配置
" 需要知道gnome的term名称
" if &term =~"xterm"
" " 开始插入模式t_SI,underline red
" let &t_SI = "\<Esc>]12;rgb:FF/15/00\x7"
" " 结束插入模式t_EI,green
" let &t_EI = "\<Esc>]12;rgb:10/D3/02\x7"
" " solid underscore
" let &t_SI .= "\<Esc>[3 q"
" " solid block
" let &t_EI .= "\<Esc>[2 q"
" " :so % 命令之后,重置光标为Normal下green颜色
" silent !echo -ne "\033]12;rgb:10/D3/02\007"
" " reset cursor when vim exits
" autocmd vimrc VimLeave * silent !echo -ne "\033]112;gray\007"
" " use \003]12;gray\007 for gnome-terminal and rxvt up to version 9.21
" endif
" let g:togglecursor_insert='blinking_line'
" let g:togglecursor_default='blinking_block'
let g:loaded_togglecursor = 0
if has("autocmd")
au VimEnter,InsertLeave * silent execute '!echo -ne "\e[2 q"' | redraw!
au InsertEnter,InsertChange *
\ if v:insertmode == 'i' |
\ silent execute '!echo -ne "\e[6 q"' | redraw! |
\ elseif v:insertmode == 'r' |
\ silent execute '!echo -ne "\e[4 q"' | redraw! |
\ endif
au VimLeave * silent execute '!echo -ne "\e[ q"' | redraw!
endif
" }}}2
" Diminactive {{{2
hi ColorColumn ctermbg=0
" hi ColorColumn ctermbg=250
let g:diminactive_use_syntax = 0
let g:diminactive_enable_focus = 0
let g:diminactive_buftype_blacklist =[]
let g:diminactive_filetype_blacklist = ['startify']
let g:diminactive_buftype_whitelist = []
let g:diminactive_filetype_whitelist = ['vim']
"}}}2
" You Complete Me {{{2
let g:ycm_global_ycm_extra_conf = '~/.vim/.ycm_extra_conf.py'
" 让Vim的补全菜单行为与一般IDE一致
set completeopt=longest,menu
" 不用每次提示加载.ycm_extra_conf.py文件
let g:ycm_confirm_extra_conf = 0
" 关闭ycm的syntastic
let g:ycm_show_diagnostics_ui = 0
" 评论中也应用补全
let g:ycm_complete_in_comments = 1
" 两个字开始补全
let g:ycm_min_num_of_chars_for_completion = 2
" 开启 YCM 基于标签引擎
let g:ycm_collect_identifiers_from_tags_files=1
" 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_cache_omnifunc=0
" 关键字补全
let g:ycm_seed_identifiers_with_syntax = 1
""上下左右键的行为 会显示其他信息
inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-k>\<C-j>" : "\<PageDown>"
inoremap <expr> <PageUp> pumvisible() ? "\<PageUp>\<C-k>\<C-j>" : "\<PageUp>"
let g:ycm_key_invoke_completion = '<C-Space>'
let g:ycm_semantic_triggers = {'c' : ['->', '.'], 'objc' : ['->', '.'], 'ocaml' : ['.', '#'], 'cpp,objcpp' : ['->', '.', '::'], 'php' : ['->', '::'], 'cs,java,javascript,vim,coffee,python,scala,go' : ['.'], 'ruby' : ['.', '::']}
autocmd BufRead *.py nnoremap <C-]> :YcmCompleter GoTo<CR>
autocmd BufRead *.js nnoremap <C-]> :TernDef<CR>
" make YCM compatible with UltiSnips (using supertab)
let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
let g:SuperTabDefaultCompletionType = '<C-n>'
" better key bindings for UltiSnipsExpandTrigger
let g:UltiSnipsExpandTrigger = '<tab>'
let g:UltiSnipsJumpForwardTrigger = '<c-j>'
let g:UltiSnipsJumpBackwardTrigger = '<c-k>'
let g:ycm_filetype_blacklist= {
\'tex':1,
\'txt':1
\}
" }}}2
" Netrw {{{2
" 关闭上半部分的提示信息栏
let g:netrw_banner=0
" 等同于P,打开前次窗口
let g:netrw_browse_split=4
" 分割后的新窗口出现在右边
let g:netrw_altv=1
" 默认为Treelist
let g:netrw_liststyle=3
" 决定使用哪种方法处理特殊应用程序
let g:netrw_browsex_viewer= "gnome-open"
" http://coderschool.cn/1853.html
" 目录和文件的显示顺序不同
let g:netrw_sort_sequence = '[\/]$,*'
" 控制Lexplore的大小,35表示占用屏幕35%的大小
let g:netrw_winsize=35
" }}}2
" Calendar {{{2
" 颜色
let g:calendar_frame = 'default'
" 标题
let g:calendar_message_prefix="日历"
" 让光标定位在今天日期上
let g:calendar_focus_today = 1
let g:calendar_mruler = '一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月'
let g:calendar_wruler = '日 一 二 三 四 五 六'
let g:calendar_navi_label = '往前,今日,往后'
let g:calendar_view="week"
" 链接google服务器
let g:calendar_google_calendar = 1
let g:calendar_google_task = 1
" }}}2
" AG {{{2
" 配置参考
" http://kkpattern.github.io/2015/05/09/Wonderful-Vim-Plugins.html
" 高亮搜索结果
let g:ag_highlight=1
" 官方建议配置
let g:ackprg = 'ag --vimgrep --smart-case'
" }}}2
" Cheat40 {{{2
" 不使用默认的cheat40.txt
let g:cheat40_use_default = 0
" }}}2
" Command-T {{{2
" Command-T 设计理念是假设使用者大致知道自己文件放在什么位置,
" 与NERDTree 的设计理念不同,后者假设使用者对文件夹的目录层次
" 一无所知。因此,Command-T 最有效率的查找方式是 'path-centric'
" 而不是按照 ‘filename-centric' 的方式查找
"
" lib/third-party/adapters/restful-services/foobar/foobar-manager.js
"
" 效率低下: foobar-manager.js
" 效率高效: librestfoofooman 可以逐步确认所在文件夹的层次
"
" 使用当前的 pwd 配置进行扫描
let g:CommandTTraverseSCM='pwd'
" 默认情况下,不扫描dot开头的文件夹,例如:~/.vim 是不扫描的
" 如果不开启,必须 :cd ~/.vim,然后执行 :CommandT
let g:CommandTScanDotDirectories=1
" 只在查找列表中显示 30 个结果,能保证效率
let g:CommandTMaxHeight = 30
" 在复杂目录结构中,可能文件数量很多,调高文件数量上限
let g:CommandTMaxFiles = 500000
" 即时查找的响应速度
let g:CommandTInputDebounce = 50
" 最多在内存中缓冲10个不同的目录
let g:CommandTMaxCachedDirectories = 10
" 根据大小写进行智能匹配
let g:CommandTSmartCase = 1
" 超过50000个文件,不用此配置
let g:CommandTRecursiveMatch = 0
" }}}2
" h-insearch {{{2
map / <Plug>(incsearch-forward)
map ? <Plug>(incsearch-backward)
map g/ <Plug>(incsearch-stay)
" 查找完毕后自动关闭结果高亮
nnoremap <silent> <Esc><Esc> :<C-u>nohlsearch<CR>
let g:incsearch#auto_nohlsearch = 1
map n <Plug>(incsearch-nohl-n)
map N <Plug>(incsearch-nohl-N)
map * <Plug>(incsearch-nohl-*)
map # <Plug>(incsearch-nohl-#)
map g* <Plug>(incsearch-nohl-g*)
map g# <Plug>(incsearch-nohl-g#)
" }}}2
" ale {{{2
"
let g:ale_sign_error = '>>'
let g:ale_sign_warning = '--'
let g:ale_fix_on_save = 1
let g:ale_sign_column_always = 0
let g:ale_vim_vint_show_style_issues=1
let g:ale_linters={'vim':['vint'],'python':['pylint']}
" }}}2
" jedi {{{2
"
let g:jedi#goto_assignments_command = '<C-]>'
let g:jedi#usages_command = '<C-u>'
let g:jedi#documentation_command = '<C-g>'
" }}}2
" pydict {{{2
"
let g:pydiction_location = '~/.vim/plugged/Pydiction/complete-dict'
let g:pydiction_menu_height = 30
" }}}2
" asynrun {{{2
"
autocmd vimrc FileType python nnoremap <buffer> <F5> :update<Bar>execute 'AsyncRun! python '.shellescape(@%, 1)<CR>
autocmd vimrc FileType python nnoremap <buffer> <LocalLeader>cc :update<Bar>execute 'AsyncRun! python '.shellescape(@%, 1)<CR>
autocmd vimrc FileType python nnoremap <buffer> <LocalLeader>cs :update<Bar>execute 'AsyncStop!'<CR>
autocmd User AsyncRunStart call asyncrun#quickfix_toggle(10, 1)
" 打开输出窗口
noremap <silent> <F9> :call asyncrun#quickfix_toggle(10,1)<cr>
" 关闭输出窗口
noremap <silent> <F10> :call asyncrun#quickfix_toggle(10,0)<cr>
" }}}2
" easy-clipboard {{{2
" 单行粘贴和多行粘贴都将光标放在末尾处
let g:EasyClipAlwaysMoveCursorToEndOfPaste=1
" vim默认复制一段文字之后,将光标放在这段文字起始的位置。
" 这项配置保证复制文字之后,光标停留在原来的位置。
let g:EasyClipPreserveCursorPositionAfterYank=1
" vim不允许两个vim进程共享剪贴板的内容。开启此选项后
" 1. 两个vim就能够共享剪贴板数据了
" 2. 还可以保证下次启动VIM自动恢复50条剪贴板数据
" 3. 必须首先在$HOME目录下先建立1个.easyclip文件
let g:EasyClipShareYanks=1
" 原来的复制的数据如果有indent,则粘贴的数据自动去掉indent
let g:EasyClipAutoFormat=1
" 开启替换模式
let g:EasyClipUseSubstituteDefaults=1
" 插入模式下的粘贴方式
imap <c-v> <plug>EasyClipInsertModePaste
map <silent> gs <plug>SubstituteOverMotionMap
nmap gss <plug>SubstituteLine
xmap gs <plug>XEasyClipPaste
" 命令行模式下粘贴
cmap <c-v> <plug>EasyClipCommandModePaste