-
Notifications
You must be signed in to change notification settings - Fork 0
/
.vimrc
1565 lines (1339 loc) · 52.5 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
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
"-----------------------------------------------
" setting
"-----------------------------------------------
if has('win32')||has('win64')
"vimprocを利用する
let g:vimproc#download_windows_dll = 1
" □や○文字が崩れる問題を解決
"set ambiwidth=double
"画面最後の行をできる限り表示する。
set display+=lastline
"mM=日本語(マルチバイト文字)行の連結時には空白を入力しない。"
""j=コメント行処理
set formatoptions+=mMj
"grep設定
if executable('C:\Program Files\Git\usr\bin\grep.exe')
set grepprg=C:/Program\ Files/Git/usr/bin/grep.exe\ -n\ --exclude-dir=.svn\ --exclude-dir=.git\ --exclude-dir=__pycache__
let $PATH='C:\Program Files\Git\usr\bin;'.$PATH
elseif executable('C:\tools\msys64\usr\bin\grep.exe')
set grepprg=C:\tools\msys64\usr\bingrep.exe\ -n\ --exclude-dir=.svn\ --exclude-dir=.git\ --exclude-dir=__pycache__
let $PATH='C:\tools\msys64\usr\bin;'.$PATH
endif
endif
"ファイル読み込み時の文字コード
set encoding=utf-8
"Vim script内でマルチバイト文字を使う場合の設定
scriptencoding utf-8
set fileencoding=utf-8 " 保存時の文字コード
set fileencodings=ucs-boms,utf-8,euc-jp,cp932 " 読み込み時の文字コードの自動判別. 左側が優先される
set fileformats=unix,dos,mac " 改行コードの自動判別. 左側が優先される
" バックアップファイルを作らない
set nobackup
" スワップファイルを作らない
set noswapfile
" 編集中のファイルが変更されたら自動で読み直す
set autoread
" バッファが編集中でもその他のファイルを開けるように
set hidden
" 入力中のコマンドをステータスに表示する
set showcmd
"開いているディレクトリへ自動的に移動する
set autochdir
" 自動的にquickfix-windowを開く
"autocmd QuickFixCmdPost *grep* cwindow
" qでQuickFixを閉じる
au FileType qf nnoremap <silent><buffer>q :quit<CR>
"---------
" undoファイル(.{ファイル名}.un~)
"---------
" 無効化する
set noundofile
" undoファイルを一箇所にまとめる
"set undodir=D:/home/koron/var/vim/undo
" logging
if has('win32')||has('win64')
"set verbosefile=$TEMP/vim.log
"set verbose=20
endif
"------------------------------------------------
"ウインドウ
"------------------------------------------------
" タイトルをウィンドウ枠に表示
set title
"------------------------------------------------
"ステータスライン
"------------------------------------------------
" ファイル名表示
set statusline=%F
" 変更チェック表示
set statusline+=%m
" 読み込み専用かどうか表示
set statusline+=%r
" ヘルプページなら[HELP]と表示
set statusline+=%h
" プレビューウインドウなら[Prevew]と表示
set statusline+=%w
" これ以降は右寄せ表示
set statusline+=%=
" file encoding
set statusline+=[ENC=%{&fileencoding}]
" 現在行数/全行数
set statusline+=[LOW=%l/%L]
" ステータスラインを常に表示(0:表示しない、1:2つ以上ウィンドウがある時だけ表示)
set laststatus=2
"---------
"コマンド補完
"---------
set wildmenu " コマンドモードの補完
set wildmode=longest:full,full
set nocompatible
set history=1000 " 保存するコマンド履歴の数
if 1
" コマンドラインモードでbash同様のキー操作を行う
cnoremap <C-b> <Left>
cnoremap <C-f> <Right>
cnoremap <C-n> <Down>
cnoremap <C-p> <Up>
cnoremap <C-a> <Home>
cnoremap <C-e> <End>
cnoremap <C-d> <Del>
" emacs
cnoremap <C-p> <Up>
cnoremap <C-n> <Down>
cnoremap <C-b> <Left>
cnoremap <C-f> <Right>
cnoremap <C-a> <Home>
cnoremap <C-e> <End>
cnoremap <C-d> <Del>
endif
"------------------------------------------------
" 見た目(ウインドウの中身に関する設定)
"------------------------------------------------
" 行番号を表示
set number
"シンタックスハイライト
syntax on
" 現在の行を強調表示
"set cursorline
" 現在の行を強調表示(縦)
"set cursorcolumn
" 右下に表示される行・列の番号を表示する
set ruler
" 行末の1文字先までカーソルを移動できるように
set virtualedit=onemore
" ビープ音を可視化
"set visualbell
" エラーメッセージの表示時にビープを鳴らさない
set noerrorbells
" 対応括弧に<と>のペアを追加
set matchpairs& matchpairs+=<:>
" 全角括弧関連
set matchpairs+=「:」,『:』,(:),【:】,《:》,〈:〉,[:],‘:’,“:”
" 括弧入力時の対応する括弧を表示
"set showmatch
source $VIMRUNTIME/macros/matchit.vim " ノーマルモード時に「%」で対応するカッコにジャンプする。
" コマンドラインの補完
set wildmode=list:longest
"---------
"背景
"---------
highlight Normal ctermbg=black ctermfg=grey
highlight StatusLine term=none cterm=none ctermfg=black ctermbg=grey
highlight CursorLine term=none cterm=none ctermfg=none ctermbg=darkgray
"-------------------------------------------------
" Tab文字系
"-------------------------------------------------
" 不可視文字を可視化(タブが「▸-」と表示される)
set list listchars=tab:→\ ,trail:-,eol:↲
"set expandtab " タブ入力を複数の空白入力に置き換える
set tabstop=4 " 画面上でタブ文字が占める幅
set softtabstop=4 " 連続した空白に対してタブキーやバックスペースキーでカーソルが動く幅
if 0
" 'autoindent'と同様だが幾つかのC構文を認識し、適切な箇所のインデントを増減させる。
set smartindent
else
set cindent
set cinoptions+=:0,g0
endif
set shiftwidth=4 " smartindentで増減する幅
"------------------------------------------------
" 検索系
"------------------------------------------------
" 検索文字列が小文字の場合は大文字小文字を区別なく検索する
set ignorecase
" 検索文字列に大文字が含まれている場合は区別して検索する
set smartcase
" 検索文字列入力時に順次対象文字列にヒットさせる
set incsearch
" 検索時に最後まで行ったら最初に戻る
set wrapscan
" 検索語をハイライト表示
set hlsearch
" ESC連打でハイライト解除
nmap <silent> <Esc><Esc> :<c-u>nohlsearch<CR>
"再描画キー<c-l>でハイライト解除
nnoremap <silent> <C-l> :<C-u>nohlsearch<CR><C-l>
"-----------------------------------------------
"カーソル移動
"-----------------------------------------------
set whichwrap=b,s,h,l,<,>,[,],~ " カーソルの左右移動で行末から次の行の行頭への移動が可能になる
" 行が折り返し表示されていた場合、行単位ではなく表示行単位でカーソルを移動する
nnoremap j gj
nnoremap k gk
nnoremap <down> gj
nnoremap <up> gk
"----------------------------------------------- "ペースト設定 "-----------------------------------------------
set clipboard+=unnamed
"クリップボードから普通にペーストすると自動インデントが効いて下に行くほど右にずれていきますが、
"以下の設定をすることで、クリップボードからペーストする時だけインデントしないようにしてくれます。
if &term =~ "xterm"
let &t_SI .= "\e[?2004h"
let &t_EI .= "\e[?2004l"
let &pastetoggle = "\e[201~"
function XTermPasteBegin(ret)
set paste
return a:ret
endfunction
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin("")
endif
"-----------------------------------------------
"ショートカットキー
"-----------------------------------------------
if 1
" Shift+hjklで移動量を大きく
noremap H 3h
noremap J 3j
noremap K 3k
noremap L 3l
endif
if 1
" Shift + Enterで下に、Shift + Ctrl + Enterで上に空行を挿入します。
imap <S-CR> <End><CR>
imap <C-S-CR> <Up><End><CR>
nnoremap <S-CR> mzo<ESC>`z
nnoremap <C-S-CR> mzO<ESC>`z
if !has('gui_running')
" CUIで入力された<S-CR>,<C-S-CR>が拾えないので
" iTerm2のキー設定を利用して特定の文字入力をmapする
"(see) https://stackoverflow.com/questions/5388562/cant-map-s-cr-in-vim
map ✠ <S-CR>
imap ✠ <S-CR>
map ✢ <C-S-CR>
imap ✢ <C-S-CR>
endif
endif
if 1
" 行を上下に移動
nnoremap <C-Up> "zdd<Up>"zP
nnoremap <C-Down> "zdd"zp
" 複数行を上下に移動
vnoremap <C-Up> "zx<Up>"zP`[V`]
vnoremap <C-Down> "zx"zp`[V`]
endif
if 1
" タイポ修正(同じ機能がMACにあります)
"|がカーソルだとして)teh|の状態で<C-t>を入力するとthe|という状態になります。
"(memo)標準の<c-t>キー(インデントを増やす) を潰しています。
inoremap <C-t> <Esc><Left>"zx"zpa
endif
if 1
" xやsではヤンクしない
nnoremap x "_x
nnoremap s "_s
endif
if 1
" ビジュアルモードで連続ペーストできるようにする
xnoremap <expr> p 'pgv"'.v:register.'y`>'
endif
"メタキーを使うための設定
"http://blog.remora.cx/2012/07/using-alt-as-meta-in-vim.html
"
"let c = 'a'
"while c <= 'z'
" execute "set <M-" . c . ">=\e" . c
" execute "imap \e" . c . " <M-" . c . ">"
" execute "set <M-S-" . c . ">=\e" . toupper(c)
" execute "imap \e" . toupper(c) . " <M-" . c . ">"
" let c = nr2char(1+char2nr(c))
"endw
function! DefineKey_M(c)
execute "set <M-" . a:c . ">=\e" . a:c
execute "imap \e" . a:c . " <M-" . a:c . ">"
endfunction
"Windowsのキーマッピング
"source $VIMRUNTIME/mswin.vim
if 1
"ウインドウ上下分割
"call DefineKey_M('h')
"noremap <M-h> :<C-u>sp<CR>
"inoremap <M-h> <ESC>:<C-u>sp<CR>
"ウインドウ左右分割
"call DefineKey_M('v')
"noremap <M-v> :<C-u>vs<CR>
"noremap <M-v> <ESC>:<C-u>vs<CR>
"ウインドウとタブのクローズ
call DefineKey_M('q')
noremap <M-q> :<C-u>q<CR>
noremap <M-q> <ESC>:<C-u>q<CR>
"分割したウインドウ内を上下左右移動
nnoremap <M-right> <C-w>l
nnoremap <M-down> <C-w>j
nnoremap <M-up> <C-w>k
nnoremap <M-left> <C-w>h
inoremap <M-right> <ESC><C-w>l
inoremap <M-down> <ESC><C-w>j
inoremap <M-up> <ESC><C-w>k
inoremap <M-left> <ESC><C-w>h
call DefineKey_M('h')
call DefineKey_M('j')
call DefineKey_M('k')
call DefineKey_M('l')
nnoremap <M-l> <C-w>l
nnoremap <M-j> <C-w>j
nnoremap <M-k> <C-w>k
nnoremap <M-h> <C-w>h
inoremap <M-l> <ESC><C-w>l
inoremap <M-j> <ESC><C-w>j
inoremap <M-k> <ESC><C-w>k
inoremap <M-h> <ESC><C-w>h
"タブ左右移動
"call DefineKey_M('_')
"nnoremap <M-_> gt
"call DefineKey_M('/')
"nnoremap <M-/> gT
"inoremap <M-_> <ESC>gt
"inoremap <M-/> <ESC>gT
"新規タブ
"nnoremap <C-n> :<C-u>tabnew<CR>
endif
" quote and bracket {{{
"inoremap {} {}<Left>
"inoremap [] []<Left>
"inoremap () ()<Left>
"inoremap "" ""<Left>
"inoremap """ """<CR>"""<Up>
"inoremap ”” ””<Left>
"inoremap '' ''<Left>
"inoremap ’’ ’’<Left>
"inoremap <> <><Left>
"inoremap $$ $$<Left>
"}}}
" for Japanese IME mode"{{{
nnoremap あ a
nnoremap い i
nnoremap う u
nnoremap え e
nnoremap お o
nnoremap っd dd
nnoremap っy yy
nnoremap し” ci"
nnoremap し’ ci'
nnoremap せ ce
nnoremap で de
inoremap <silent> っj <ESC>
nnoremap っz zz
nnoremap ・ /
"}}}
"
"memo: vim-submodeプラグインを利用しています、そちらの設定も参照してください。
"
"deleteキーが効かない問題の回避
"https://qiita.com/omega999/items/23aec6a7f6d6735d033f
set backspace=indent,eol,start
"-----------------------------------------------
"補完のヒント表示
"(See) http://koturn.hatenablog.com/entry/2018/02/10/170000
"-----------------------------------------------
" 入力キーの辞書
let s:compl_key_dict = {
\ char2nr("\<C-l>"): "\<C-x>\<C-l>",
\ char2nr("\<C-n>"): "\<C-x>\<C-n>",
\ char2nr("\<C-p>"): "\<C-x>\<C-p>",
\ char2nr("\<C-k>"): "\<C-x>\<C-k>",
\ char2nr("\<C-t>"): "\<C-x>\<C-t>",
\ char2nr("\<C-i>"): "\<C-x>\<C-i>",
\ char2nr("\<C-]>"): "\<C-x>\<C-]>",
\ char2nr("\<C-f>"): "\<C-x>\<C-f>",
\ char2nr("\<C-d>"): "\<C-x>\<C-d>",
\ char2nr("\<C-v>"): "\<C-x>\<C-v>",
\ char2nr("\<C-u>"): "\<C-x>\<C-u>",
\ char2nr("\<C-o>"): "\<C-x>\<C-o>",
\ char2nr('s'): "\<C-x>s",
\ char2nr("\<C-s>"): "\<C-x>s"
\}
" 表示メッセージ
let s:hint_i_ctrl_x_msg = join([
\ '<C-l>: While lines',
\ '<C-n>: keywords in the current file',
\ "<C-k>: keywords in 'dictionary'",
\ "<C-t>: keywords in 'thesaurus'",
\ '<C-i>: keywords in the current and included files',
\ '<C-]>: tags',
\ '<C-f>: file names',
\ '<C-d>: definitions or macros',
\ '<C-v>: Vim command-line',
\ "<C-u>: User defined completion ('completefunc')",
\ "<C-o>: omni completion ('omnifunc')",
\ "s: Spelling suggestions ('spell')"
\], "\n")
function! s:hint_i_ctrl_x() abort
echo s:hint_i_ctrl_x_msg
let c = getchar()
return get(s:compl_key_dict, c, nr2char(c))
endfunction
inoremap <expr> <C-x> <SID>hint_i_ctrl_x()
"-----------------------------------------------
"NeoBundle(Vimプラグインの管理)
"-----------------------------------------------
if has('win32')||has('win64')
if has('vim_starting')
" 初回起動時のみruntimepathにNeoBundleのパスを指定する(絶対パス)
set runtimepath+=$VIM/~/.vim/bundle/neobundle.vim/
" NeoBundleが未インストールであればgit cloneする
if !isdirectory(expand("$VIM/~/.vim/bundle/neobundle.vim/"))
echo "install NeoBundle..."
:call system("git clone https://github.com/Shougo/neobundle.vim.git $VIM/~/.vim/bundle/neobundle.vim")
endif
endif
else
if has('vim_starting')
" 初回起動時のみruntimepathにNeoBundleのパスを指定する
set runtimepath+=~/.vim/bundle/neobundle.vim/
" NeoBundleが未インストールであればgit cloneする
if !isdirectory(expand("~/.vim/bundle/neobundle.vim/"))
echo "install NeoBundle..."
:call system("git clone https://github.com/Shougo/neobundle.vim.git ~/.vim/bundle/neobundle.vim")
endif
endif
endif
call neobundle#begin(expand('~/.vim/bundle/'))
" インストールするVimプラグインを以下に記述
" NeoBundle自身を管理
NeoBundleFetch 'Shougo/neobundle.vim'
"----------------------------------------------------------
" ここに追加したいVimプラグインを記述する
if has('win32')||has('win64')
"pass
else
NeoBundle 'Shougo/vimproc.vim', {
\ 'build' : {
\ 'mac' : 'make',
\ 'linux' : 'make',
\ 'unix' : 'gmake',
\ },
\ }
endif
" カラースキームmolokai
NeoBundle 'tomasr/molokai'
" ステータスラインの表示内容強化
NeoBundle 'itchyny/lightline.vim'
"ステータスラインの表示内容強化
"NeoBundle 'vim-airline/vim-airline'
"NeoBundle 'vim-airline/vim-airline-themes'
NeoBundle 'vim-jp/vital.vim'
" 末尾の全角と半角の空白文字を赤くハイライト(FixWhitespace コマンド)
NeoBundle 'bronson/vim-trailing-whitespace'
"括弧を自動で閉じる
NeoBundle 'cohama/lexima.vim'
" インデントの可視化
NeoBundle 'Yggdroot/indentLine'
" tab->space / space->tab
NeoBundle 'rhlobo/vim-super-retab'
" 対応する括弧を虹色で表示する
NeoBundle 'luochen1990/rainbow'
"ユーザー定義のモードを追加する
"NeoBundle 'kana/vim-submode'
" 多機能セレクタ
NeoBundle 'ctrlpvim/ctrlp.vim'
" CtrlPの拡張プラグイン. 関数検索
NeoBundle 'tacahiroy/ctrlp-funky'
" CtrlPの拡張プラグイン. コマンド履歴検索
NeoBundle 'suy/vim-ctrlp-commandline'
" CtrlPの検索にagを使う
NeoBundle 'rking/ag.vim'
" psearch
NeoBundle 'idanarye/psearch.vim'
"置換を可視化する
NeoBundle 'osyo-manga/vim-over'
"現在の検索位置を画面に表示する(ハイライトしたままになるので未使用)
"NeoBundle 'osyo-manga/vim-anzu'
"カーソル位置の単語をハイライトする
NeoBundle 'osyo-manga/vim-brightest'
"サイドバーにファイル一覧を表示
"NeoBundle 'scrooloose/nerdtree'
NeoBundle 'Shougo/vimfiler.vim'
"vimfilerにアイコン追加
" NeoBundle 'ryanoasis/vim-devicons'
"選択範囲を広げる
NeoBundle 'terryma/vim-expand-region'
" text-object拡張"{{{
NeoBundle 'kana/vim-textobj-user'
NeoBundle 'kana/vim-textobj-line'
NeoBundle 'kana/vim-textobj-entire'
" NeoBundle 'emonkak/vim-operator-comment'
" NeoBundle 'https://github.com/kana/vim-textobj-jabraces.git'
" NeoBundle 'kana/vim-textobj-datetime' " d 日付
" NeoBundle 'kana/vim-textobj-fold.git' " z 折りたたまれた{{ {をtext-objectに
" NeoBundle 'kana/vim-textobj-lastpat.git' " /? 最後に検索されたパターンをtext-objectに
" NeoBundle 'kana/vim-textobj-syntax.git' " y syntax hilightされたものをtext-objectに
" NeoBundle 'textobj-entire' " e buffer全体をtext-objectに
" NeoBundle 'thinca/vim-textobj-comment' " c commentをtext-objectに
" NeoBundle 'kana/vim-operator-user'
" NeoBundle 'kana/vim-textobj-function.git' " f 関数をtext-objectに
" NeoBundle 'kana/vim-textobj-indent.git' " i I インデントをtext-objectに
" NeoBundle 'kana/vim-textobj-user' " textobject拡張の元
" NeoBundle 'operator-camelize' "operator-camelize : camel-caseへの変換
" NeoBundle 'thinca/vim-textobj-plugins.git' " vim-textobj-plugins : いろんなものをtext-objectにする
" NeoBundle 'tyru/operator-html-escape.vim'
" }}}
"テキストを囲う
NeoBundle 'tpope/vim-surround'
"Pythonの補完
NeoBundle 'davidhalter/jedi-vim'
"pythonのインデントをpep8スタイルに合わせる
NeoBundle 'Vimjas/vim-python-pep8-indent'
"C#の補完(そもそも動作しないためコメントアウト)
"NeoBundle 'OmniSharp/omnisharp-vim'
"構文検査
NeoBundle 'scrooloose/syntastic'
"QuickRun
NeoBundle 'thinca/vim-quickrun'
"コメントアウト
NeoBundle 'tyru/caw.vim'
"Undo
"neobundle "sjl/gundo.vim"
"一部のsvnコマンドを実行して結果を表示するunite-source (動かないためコメントアウト)
"NeoBundle 'kmnk/vim-unite-svn'
"変更がある行を表示
NeoBundle 'airblade/vim-gitgutter'
"Unite
NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/unite-outline'
"NeoBundle 'Shougo/neocomplete.vim'
NeoBundle 'Shougo/neomru.vim'
NeoBundle 'Shougo/neoyank.vim'
NeoBundle 'Shougo/neosnippet'
NeoBundle 'Shougo/neosnippet-snippets'
NeoBundle 'h1mesuke/vim-alignta'
"LSP
NeoBundle 'prabirshrestha/asyncomplete.vim'
NeoBundle 'prabirshrestha/asyncomplete-lsp.vim'
NeoBundle 'prabirshrestha/vim-lsp'
NeoBundle 'mattn/vim-lsp-settings'
NeoBundle 'mattn/vim-lsp-icons'
NeoBundle 'hrsh7th/vim-vsnip'
NeoBundle 'hrsh7th/vim-vsnip-integ'
NeoBundle 'PProvost/vim-ps1'
"----------------------------------------------------------
call neobundle#end()
" ファイルタイプ別のVimプラグイン/インデントを有効にする
filetype plugin indent on
" 未インストールのVimプラグインがある場合、インストールするかどうかを尋ねてくれるようにする設定・・・・・・③
NeoBundleCheck
"----------------------------------------------------------
"[設定] molokai
"----------------------------------------------------------
if neobundle#is_installed('molokai') " molokaiがインストールされていれば
colorscheme molokai " カラースキームにmolokaiを設定する
endif
set t_Co=256 " iTerm2など既に256色環境なら無くても良い
syntax enable " 構文に色を付ける
"----------------------------------------------------------
" [設定]lightline.vim
"----------------------------------------------------------
if neobundle#is_installed('lightline.vim')
set laststatus=2 " ステータスラインを常に表示
set showmode " 現在のモードを表示
set showcmd " 打ったコマンドをステータスラインの下に表示
set ruler " ステータスラインの右側にカーソルの現在位置を表示する
let g:lightline = {
\ 'colorscheme': 'wombat',
\ 'mode_map': {'c': 'NORMAL'},
\ 'active': {
\ 'left' : [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ] ]
\ },
\ 'component_function': {
\ 'modified': 'LightlineModified',
\ 'readonly': 'LightlineReadonly',
\ 'fugitive': 'LightlineFugitive',
\ 'filename': 'LightlineFilename',
\ 'fileformat': 'LightlineFileformat',
\ 'filetype': 'LightlineFiletype',
\ 'fileencoding': 'LightlineFileencoding',
\ 'mode': 'LightlineMode'
\ }
\ }
function! LightlineModified()
return &ft =~ 'help\|vimfiler\|gundo' ? '' : &modified ? '+' : &modifiable ? '' : '-'
endfunction
function! LightlineReadonly()
return &ft !~? 'help\|vimfiler\|gundo' && &readonly ? 'x' : ''
endfunction
function! LightlineFilename()
return ('' != LightlineReadonly() ? LightlineReadonly() . ' ' : '') .
\ (&ft == 'vimfiler' ? vimfiler#get_status_string() :
\ &ft == 'unite' ? unite#get_status_string() :
\ &ft == 'vimshell' ? vimshell#get_status_string() :
\ '' != expand('%:t') ? expand('%:t') : '[No Name]') .
\ ('' != LightlineModified() ? ' ' . LightlineModified() : '')
endfunction
function! LightlineFugitive()
if &ft !~? 'vimfiler\|gundo' && exists('*fugitive#head')
return fugitive#head()
else
return ''
endif
endfunction
function! LightlineFileformat()
return winwidth(0) > 70 ? &fileformat : ''
endfunction
function! LightlineFiletype()
return winwidth(0) > 70 ? (&filetype !=# '' ? &filetype : 'no ft') : ''
endfunction
function! LightlineFileencoding()
return winwidth(0) > 70 ? (&fenc !=# '' ? &fenc : &enc) : ''
endfunction
function! LightlineMode()
return winwidth(0) > 60 ? lightline#mode() : ''
endfunction
endif
"----------------------------------------------------------
" [設定]vim-airline
"----------------------------------------------------------
if neobundle#is_installed('vim-airline')
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#buffer_idx_mode = 1
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
"左側に使用されるセパレータ
let g:airline_left_sep = '⮀'
let g:airline_left_alt_sep = '⮁'
"右側に使用されるセパレータ
let g:airline_right_sep = '⮂'
let g:airline_right_alt_sep = '⮃'
let g:airline_symbols.crypt = '🔒' "暗号化されたファイル
let g:airline_symbols.linenr = '¶' "行
let g:airline_symbols.maxlinenr = '㏑' "最大行
let g:airline_symbols.branch = '⭠' "gitブランチ
let g:airline_symbols.paste = 'ρ' "ペーストモード
let g:airline_symbols.spell = 'Ꞩ' "スペルチェック
let g:airline_symbols.notexists = '∄' "gitで管理されていない場合
let g:airline_symbols.whitespace = 'Ξ' "空白の警告(余分な空白など)
endif
"----------------------------------------------------------
" [設定]luochen1990/rainbow
"----------------------------------------------------------
if neobundle#is_installed('indentLine')
let g:indentLine_color_term = 111
let g:indentLine_color_gui = '#708090'
let g:indentLine_char = '┆'
endif
"----------------------------------------------------------
" [設定]luochen1990/rainbow
"----------------------------------------------------------
if neobundle#is_installed('rainbow')
let g:rainbow_active = 1 "0 if you want to enable it later via :RainbowToggle
endif
"----------------------------------------------------------
" [設定]vim-submode.vim
"----------------------------------------------------------
"ウインドウサイズ変更
if neobundle#is_installed('vim-submode')
call submode#enter_with('bufmove', 'n', '', 's+', '<C-w>+')
call submode#enter_with('bufmove', 'n', '', 's-', '<C-w>-')
call submode#map('bufmove', 'n', '', '+', '<C-w>+')
call submode#map('bufmove', 'n', '', '-', '<C-w>-')
endif
"----------------------------------------------------------
"[設定] CtrlPの設定
"----------------------------------------------------------
if neobundle#is_installed('ctrlp.vim')
let g:ctrlp_match_window = 'order:ttb,min:20,max:20,results:100' " マッチウインドウの設定. 「下部に表示, 大きさ20行で固定, 検索結果100件」
let g:ctrlp_show_hidden = 1 " .(ドット)から始まるファイルも検索対象にする
let g:ctrlp_types = ['fil'] "ファイル検索のみ使用
let g:ctrlp_extensions = ['funky', 'commandline'] " CtrlPの拡張として「funky」と「commandline」を使用
let g:ctrlp_regexp = 0 "
let g:ctrlp_use_caching = 1 " キャッシュを使用して検索を高速化
let g:ctrlp_clear_cache_on_exit = 0 " " vim終了時にキャッシュをクリアしない
let g:ctrlp_show_hidden = 0 " 隠しファイルを表示しない
" 検索してほしくないファイルやディレクトリを除外
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/]\.?(extlib|git|hg|svn)$',
\ 'file': '\v\.(exe|elf|so|dll|o|so|swp|ga|db|terminal|zip|jpg|png|xlsx|xls)$',
\ 'link': 'some_bad_symbolic_links',
\ }
"set wildignore+=*/Music/*,*/tmp/*,*.so,*.swp,*.zip,*.jpg,*.png,*.gif,*.doc,*.xlsx,*.xls
"memo: \Library\Musicを除外できていない。(要調査)
let wildignore = $HOME.'/\(Library\|Google Drive\|Music\|Movies\|Pictures\|Documents\)\|.\(pdf\|epub\|mobi\|rar\|png\|jpg\|dmg\|nib\|bz\|gz\|tar\|db\|terminal\|plist\|xib\)$'
" CtrlPCommandLineの有効化
command! CtrlPCommandLine call ctrlp#init(ctrlp#commandline#id())
" CtrlPFunkyの有効化
let g:ctrlp_funky_matchtype = 'path'
endif
"----------------------------------------------------------
"osyo-manga/vim-over
"----------------------------------------------------------
"----------------------------------------------------------
"osyo-manga/vim-anzu
"----------------------------------------------------------
if neobundle#is_installed('vim-anzu')
nmap n <Plug>(anzu-n-with-echo)
nmap N <Plug>(anzu-N-with-echo)
nmap * <Plug>(anzu-star-with-echo)
nmap # <Plug>(anzu-sharp-with-echo)
" clear status
nmap <Esc><Esc> <Plug>(anzu-clear-search-status)
" statusline
set statusline=%{anzu#search_status()}
endif
"----------------------------------------------------------
" osyo-manga/vim-brightest
"----------------------------------------------------------
if neobundle#is_installed('vim-brightest')
" ハイライトするグループ名を設定します
" アンダーラインで表示する
let g:brightest#highlight = {
\ "group" : "BrightestUnderline"
\}
" ハイライトする単語のパターンを設定します
" デフォルト(空の文字列の場合)は <cword> が使用されます
"let g:brightest#pattern = '\k\+'
endif
"----------------------------------------------------------
" [設定]ag.vim
"----------------------------------------------------------
if neobundle#is_installed('ag.vim') && executable('ag')
" agが使える環境の場合
if has('win32')||has('win64')
let g:ctrlp_user_command='ag %s --files-with-matches --nocolor --hidden -g ""'.' --path-to-ignore '.$HOME.'/.agignore'
else
let g:ctrlp_user_command='ag %s --files-with-matches --nocolor --hidden -g ""'
endif
"let g:ctrlp_use_caching=0 " CtrlPのキャッシュを使わない
"let g:ctrlp_user_command = "ag --ignore-case --files-with-matches --nocolor --hidden -g '\\.(asm|bat|cs|cfg|config|cpp|hpp|c|h|fish|go|html|ini|js|java|json|lua|py|pl|rb|vbs|md|mac|txt|sh|bash|ps1|md|xml|csv|log|vim)$'"
"--asm --batch --csharp --cc --cpp --glsl --go --haskell --html --ini --java --js --json --log --lua --make --markdown --md --perl --php --python --ruby --shell --yaml --vim --xml --yaml'
endif
"----------------------------------------------------------
" [設定]psearch.vim
"----------------------------------------------------------
if neobundle#is_installed('psearch.vim')
"nmap * :PSearchw<CR>
endif
"----------------------------------------------------------
" [設定]nerdtree
"----------------------------------------------------------
function! s:copy_grep_menuitem()
"NERDTreeからgrepを行うプラグインをインストールする
let s:nerdtree=expand('~/.vim/bundle/nerdtree/nerdtree_plugin')
let s:grep_menuitem_path=s:nerdtree.'/grep_menuitem.vim'
if filereadable(s:grep_menuitem_path)
return
endif
execute '!wget --no-check-certificate https://gist.githubusercontent.com/17g/5141204/raw/d427f0f2699bc4713e75ca0e34963c617a668188/grep_menuitem.vim -O '.s:grep_menuitem_path
"execute '!wget --no-check-certificate https://raw.githubusercontent.com/seventhsense/nerdtree/development/nerdtree_plugin/grep_menuitem.vim -O '.s:grep_menuitem_path
endfunction
if neobundle#is_installed('nerdtree')
"<c-o>でnerdtreeをオンオフ。いつでもどこでも。
"map <silent> <c-o> :nerdtreetoggle<cr>
"lmap <silent> <c-o> :nerdtreetoggle<cr>
nmap <silent> <c-o> :NERDTreeToggle<CR>
vmap <silent> <c-o> <Esc>:NERDTreeToggle<CR>
omap <silent> <c-o> :NERDTreeToggle<CR>
imap <silent> <c-o> <Esc>:NERDTreeToggle<CR>
cmap <silent> <c-o> <C-u>:NERDTreeToggle<CR>
" コマンドラインでファイル指定されていないときはNerdtreeを開く。
" autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
function! s:StartUp()
"memo:初期状態でNERDTreeにフォーカスがあるため編集したいファイルに移動する必要あり。
" NERDTree
" normal! <c-w><c-w>
if 0 == argc()
NERDTree
end
endfunction
autocmd VimEnter * call s:StartUp()
"他のバッファをすべて閉じた時にNERDTreeが開いていたらNERDTreeも一緒に閉じる。
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
"ファイルオープン後の動作
"0 : そのままNERDTreeを開いておく。
"1 : NERDTreeを閉じる。
let g:NERDTreeQuitOnOpen=0
"NERDTreeIgnore 無視するファイルを設定する。
"'\.vim$'ならばfugitive.vimなどのファイル名が表示されない。
"\ エスケープ記号
"$ ファイル名の最後
"f コマンドの設定値
let g:NERDTreeIgnore=['\.clean$', '\.swp$', '\.bak$', '\~$', "\.DS_Store$", "tags$", ]
"NERDTreeShowHidden 隠しファイルを表示するか?
"I コマンドの設定値
"0 : 隠しファイルを表示しない。
"1 : 隠しファイルを表示する。
let g:NERDTreeShowHidden=1
"ブックマークリストの表示。
"0 : ブックマークリストを最初から表示しない。
"1 : ブックマークリストを最初から表示する。
let g:NERDTreeShowBookmarks=1
"NERDTreeのツリーを開く場所、左側か、右側か。
"let g:NERDTreeWinPos="left"
let g:NERDTreeWinPos="right"
"NERDTreeのツリーの幅
"Default: 31.
"let g:NERDTreeWinSize=45
"ブックマークや、ヘルプのショートカットをメニューに表示する。
"0 表示する
"1 表示しない
"Values: 0 or 1.
"Default: 1.
let g:NERDTreeMinimalUI=0
" let g:NERDTreeMinimalUI=1
call s:copy_grep_menuitem()
endif
"----------------------------------------------------------
" [設定]vimfiler
"----------------------------------------------------------
if neobundle#is_installed('vimfiler.vim')
autocmd VimEnter * if !argc() | VimFiler -split -simple -winwidth=45 -toggle -no-quit | endif
autocmd BufEnter * if (!has('vim_starting') && winnr('$') == 1
\ && &filetype ==# 'vimfiler') | quit | endif
"<c-o>でvimfilerをオンオフ。いつでもどこでも。
"map <silent> <c-o> :vimfiler<cr>
"lmap <silent> <c-o> :vimfiler<cr>
nmap <silent> <c-o> :VimFilerBufferDir -simple -winwidth=45 -split -toggle<CR>
vmap <silent> <c-o> <Esc>:VimFilerBufferDir -simple -winwidth=45 -split -toggle<CR>
omap <silent> <c-o> :VimFilerBufferDir -simple -winwidth=45 -split -toggle<CR>
imap <silent> <c-o> <Esc>:VimFilerBufferDir -simple -winwidth=45 -split -toggle<CR>
cmap <silent> <c-o> <C-u>:VimFilerBufferDir -simple -winwidth=45 -split -toggle<CR>
":VimFilerBufferDir -split -simple -winwidth=35 -no-quit
"右側に表示
call vimfiler#custom#profile('default', 'context',{'direction' : 'rightbelow'})
"vimデフォルトのエクスプローラをvimfilerで置き換える
let g:vimfiler_as_default_explorer = 1
"セーフモードを無効にした状態で起動する(0=アンセーフ/1=セーフ)
let g:vimfiler_safe_mode_by_default = 1
let g:vimfiler_auto_cd=1
" Like Textmate icons.
let g:vimfiler_tree_leaf_icon = ' '
let g:vimfiler_tree_opened_icon = '▾'
let g:vimfiler_tree_closed_icon = '▸'
let g:vimfiler_file_icon = '-'
let g:vimfiler_readonly_file_icon = '✗'
let g:vimfiler_marked_file_icon = '✓'
" Use trashbox.(Windows only and require latest vimproc.)
let g:unite_kind_file_use_trashbox = 1
"表示しないファイル
let g:vimfiler_ignore_pattern = [
\'^[cg]?tags$',
\'^\.svn$', '^\.git$',
\'\.swp$', '^\.DS_Store$', '\.dll$', '\.exe$', '\.lnk$',
\'^__pycache__$', '\.py[co]$' ]
"現在開いているバッファのディレクトリを開く
"nnoremap <silent> <Leader>fe :<C-u>VimFilerBufferDir -quit<CR>
"現在開いているバッファをIDE風に開く
"nnoremap <silent> <Leader>fi :<C-u>VimFilerBufferDir -split -simple -winwidth=35 -no-quit<CR>
autocmd FileType vimfiler nnoremap <buffer><silent>/ :<C-u>Unite file -default-action=vimfiler<CR>
"VimFilerKeyMapping{{{
aug VimFilerKeyMapping
au!
au FileType vimfiler call s:vimfiler_local()
function! s:vimfiler_local()
setl nonumber
" Unite bookmark連携
nmap <buffer>B :<C-U>Unite bookmark<CR>
nmap <buffer>BA :<C-U>UniteBookmarkAdd<CR>
nmap <buffer>Ba BA
" Unite bookmarkのアクションをVimFilerに
call unite#custom_default_action('source/bookmark/directory' , 'vimfiler')
endfunction
aug END
"}}}
endif