-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.vimrc
185 lines (166 loc) · 6.04 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
set nocompatible " vi 互換を使用しない
" 表示系
" --------------------
set number " 行番号表示
set ruler " ステータスバーにルーラー表示
set laststatus=2 " ステータスバー表示
set cmdheight=2 " コマンドバー調整
set title " タイトルバー
set linespace=0 " 行間
set wildmenu " 補完強化
set showcmd " コマンドライン補完を表示
set showtabline=2 " タブバーの表示
set cursorline " カーソル行をハイライト
set showmatch " 対応する括弧の表示
syntax on " カラーハイライト
" ステータスバーに文字コード/改行コードを表示
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P
" 基本設定
" --------------------
" タブ
set tabstop=4 " 半角スペース4つ分
set expandtab " タブを半角スペースにする
set smarttab " 行頭の余白内でタブを入力すると shiftwidth の数だけインデントする
set shiftwidth=4 " 行頭の余白内でタブを入力すると4つ分追加される
set shiftround " shiftwidth で設定された整数倍のスペースが追加される
set nowrap " 折り返し表示をしない
" 検索
set ignorecase " 大文字小文字の無視
set smartcase " 検索語句に大文字を含んでいたら区別する
set wrapscan " 最後まで検索したら先頭へ戻る
set hlsearch " 検索文字列をハイライト
set incsearch " インクリメンタルサーチ
" インデント
set autoindent " 自動インデント
set smartindent " より高度な自動インデント
" 編集
set hidden " 編集中でも他のファイルを開けるようにする
set whichwrap=b,s,h,l,<,>,[,] " カーソルを行頭、行末で止まらないようにする
set backspace=indent,eol,start " 改行して自動インデントされたスペースを BS で削除
set clipboard+=unnamed " OS のクリップボードを使用する
set clipboard=unnamed " yank は OS のクリップボードを使用する
" キーマップ
" --------------------
" スペースキーでカーソルを中心に保ってスクロール
nnoremap <Space> jzz
" ESC キー2回押しでハイライトを消去
nmap <ESC><ESC> :nohlsearch<CR><ESC>
nmap <F2> :NERDTreeToggle<CR><ESC>
nmap <F5> gT
nmap <F6> gt
nmap t :tabnew<Space>
" 文字コード
" --------------------
" 文字コードの自動認識
" 参照:http://www.kawaz.jp/pukiwiki/?vim#cb691f26
if &encoding !=# 'utf-8'
set encoding=japan
set fileencoding=japan
endif
if has('iconv')
let s:enc_euc = 'euc-jp'
let s:enc_jis = 'iso-2022-jp'
" iconvがeucJP-msに対応しているかをチェック
if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb"
let s:enc_euc = 'eucjp-ms'
let s:enc_jis = 'iso-2022-jp-3'
" iconvがJISX0213に対応しているかをチェック
elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb"
let s:enc_euc = 'euc-jisx0213'
let s:enc_jis = 'iso-2022-jp-3'
endif
" fileencodingsを構築
if &encoding ==# 'utf-8'
let s:fileencodings_default = &fileencodings
let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
let &fileencodings = &fileencodings .','. s:fileencodings_default
unlet s:fileencodings_default
else
let &fileencodings = &fileencodings .','. s:enc_jis
set fileencodings+=utf-8,ucs-2le,ucs-2
if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\)$'
set fileencodings+=cp932
set fileencodings-=euc-jp
set fileencodings-=euc-jisx0213
set fileencodings-=eucjp-ms
let &encoding = s:enc_euc
let &fileencoding = s:enc_euc
else
let &fileencodings = &fileencodings .','. s:enc_euc
endif
endif
" 定数を処分
unlet s:enc_euc
unlet s:enc_jis
endif
" 日本語を含まない場合は fileencoding に encoding を使うようにする
if has('autocmd')
function! AU_ReCheck_FENC()
if &fileencoding =~# 'iso-2022-jp' && search("[^\x01-\x7e]", 'n') == 0
let &fileencoding=&encoding
endif
endfunction
autocmd BufReadPost * call AU_ReCheck_FENC()
endif
" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
set ambiwidth=double
endif
" お役立ち
" --------------------
" 対応したカッコを補完し、カッコの中にカーソルを戻す
imap { {}<Left>
imap [ []<Left>
imap ( ()<Left>
imap < <><Left>
" カッコの中にカーソルを戻す
imap '' ''<Left>
imap "" ""<Left>
imap `` ``<Left>
" 行末の不要なスペースを削除
function! RTrim()
let s:cursor = getpos(".")
%s/\s\+$//e
call setpos(".", s:cursor)
endfunction
autocmd BufWritePre * call RTrim()
" プラグイン
" --------------------
" neocomplcache
" vim 起動時に有効化
let g:neocomplcache_enable_at_startup = 1
" 大文字が入力されるまで大文字小文字を区別しない
let g:neocomplcache_enable_smart_case = 1
" _ 区切りの補完を有効化
let g:neocomplcache_enable_underbar_completion = 1
" 日本語は補完しない
" Define keyword.
if !exists('g:neocomplcache_keyword_patterns')
let g:neocomplcache_keyword_patterns = {}
endif
let g:neocomplcache_keyword_patterns['default'] = '\h\w*'
" スニペット補完
" スニペットファイルの置き場所
let g:neosnippet#snippets_directory = '~/.vim/bundle/vim-snippets/snippets'
imap <C-k> <Plug>(neosnippet_expand_or_jump)
smap <C-k> <Plug>(neosnippet_expand_or_jump)
xmap <C-k> <Plug>(neosnippet_expand_target)
" vundle
set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'
" github/vim-scripts
Bundle "grep.vim"
Bundle "The-NERD-tree"
" github
Bundle "Shougo/neocomplcache"
Bundle "Shougo/neosnippet"
Bundle "Shougo/neosnippet-snippets"
Bundle "honza/vim-snippets"
Bundle "kchmck/vim-coffee-script"
Bundle "groenewege/vim-less"
filetype plugin indent on