-
Notifications
You must be signed in to change notification settings - Fork 0
/
vimrc
299 lines (258 loc) · 7.65 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
" vim:set fenc=utf-8 ff=unix
" encoding
set encoding=utf-8
" insert mode でバックスペースで削除可能な文字の設定
set backspace=indent,eol,start
" vimfiles
let s:vimfilesdir = $HOME . '/.vim'
if has("win32")
" for windows
let s:vimfilesdir = $HOME . '/vimfiles'
endif
" スワップファイルを作成
set swapfile
let &directory = s:vimfilesdir . '/swap'
" バックアップファイルを作成
set backup
let &backupdir = s:vimfilesdir . '/backup'
" undo ファイルを作成
set undofile
let &undodir = s:vimfilesdir . '/undo'
" コマンドライン履歴を50行保存
set history=50
" カーソル位置を常時表示
set ruler
" カーソル行をハイライト
set cursorline
" 画面上下のスクロール開始位置のオフセット
set scrolloff=3
" 入力中のコマンドを表示
set showcmd
" バッファー切替時に hidden にする
set hidden
" インクリメタルサーチを実行
set incsearch
" ステータス行の表示
set laststatus=2
" 検索件数の表示
set shortmess-=S
" ファイルの末尾に自動で改行を入れない
set nofixendofline
" 補完の一覧表示
set wildmenu
if v:version >= 802 && has("patch4325")
set wildoptions=pum
else
set wildmode=list:full
endif
" 曖昧な幅の文字を single width で表示
set ambiwidth=single
" netrw にてファイル名、サイズ、タイムスタンプをデフォルト表示
let g:netrw_liststyle=1
" .netrwhist 及び .netrwbook の格納場所
let g:netrw_home=expand("$HOME/.vim/netrw")
" コマンドラインの高さ
set cmdheight=4
" 行番号
set number
set numberwidth=6
" 行番号を相対表示する
set relativenumber
" ビープを鳴らさない
set vb t_vb=
" Leader に '<Space>' を設定
let mapleader = "\<Space>"
" LocalLeader に '' を設定
let maplocalleader = "\\"
" キーコードの待ち時間を50msに設定
set ttimeoutlen=50
" C-A や C-X によるインクリメント、デクリメントで負号を無視する
set nrformats+=unsigned
" <C-p>, <C-n> による履歴の参照の動作を <Up>, <Down> に合わせる
cnoremap <C-p> <Up>
cnoremap <C-n> <Down>
" 折り返し行のカーソル移動を簡単にする
nmap gj gj<SID>g
nmap gk gk<SID>g
nnoremap <script> <SID>gj gj<SID>g
nnoremap <script> <SID>gk gk<SID>g
nnoremap <script> <SID>gq <Nop>
nmap <SID>g <Nop>
" 画面サイズの変更を簡単にする
nmap <C-w>+ <C-w>+<SID>ws
nmap <C-w>- <C-w>-<SID>ws
nmap <C-w>> <C-w>><SID>ws
nmap <C-w>< <C-w><<SID>ws
nnoremap <script> <SID>ws+ <C-w>+<SID>ws
nnoremap <script> <SID>ws- <C-w>-<SID>ws
nnoremap <script> <SID>ws> <C-w>><SID>ws
nnoremap <script> <SID>ws< <C-w><<SID>ws
nnoremap <script> <SID>wsq <Nop>
nmap <SID>ws <Nop>
" 検索ハイライトを消す
nmap <silent> <Esc><Esc> :nohlsearch<CR>
" grep プログラム設定
if executable('jvgrep')
set grepprg=jvgrep
endif
" grep を silent で実行する Grep コマンドを定義
command! -nargs=+ Grep execute 'silent grep! <args>'
" 非表示文字の設定
set list
set listchars=tab:\ \ ,trail:-,nbsp:%
" モード変更時にカーソルを変更する設定
if &term =~ 'xterm\|screen'
let &t_ti .= "\e[1 q" " termcap mode に入った時
let &t_SI .= "\e[5 q" " insert mode に入った時
let &t_EI .= "\e[1 q" " insert mode を抜けた時
let &t_te .= "\e[0 q" " termcap mode を抜けた時
endif
" マウス
if has('mouse')
set mouse=nv
endif
" フォントの設定
if has("gui_running")
set guifont=Cica:h14:cSHIFTJIS:qDRAFT
endif
" カラー表示可能かどうかチェック
if &t_Co > 2 || has("gui_running")
" シンタックスハイライトを on
syntax on
" 検索時のハイライト表示を on
set hlsearch
if has("win32")
" True Color 有効化
set termguicolors
" カラーテーマ設定
colorscheme iceberg
" ダークテーマに設定
set background=dark
else
" True Color をサポートしている場合
if $COLORTERM =~? 'truecolor\|24bit'
" True Color 有効化
set termguicolors
let &t_8f = "\<Esc>[38:2:%lu:%lu:%lum"
let &t_8b = "\<Esc>[48:2:%lu:%lu:%lum"
endif
" 256色以上の場合
if &t_Co >= 256 || has("gui_running")
" カラーテーマ設定
colorscheme iceberg
" ダークテーマに設定
set background=dark
endif
endif
" 背景を透過する
if &termguicolors
hi Normal guibg=NONE
else
hi Normal ctermbg=NONE
endif
" lightline.vim
let g:lightline = {
\ 'active':{
\ 'right': [ [ 'lineinfo' ],
\ [ 'percent' ],
\ [ 'charinfo', 'fileformat', 'fileencoding', 'filetype', 'lsperror', 'lspwarning' ] ]
\ },
\ 'component': {
\ 'charinfo': 'U+%04B',
\ 'lineinfo': '%3l:%-2v'
\ },
\ 'component_function': {
\ 'filetype': 'LightLineFiletype',
\ 'fileformat': 'LightLineFileformat'
\ },
\ 'component_expand': {
\ 'lsperror': 'LightlineLspErrorCount',
\ 'lspwarning': 'LightlineLspWarningCount'
\ },
\ 'component_type': {
\ 'lsperror': 'error',
\ 'lspwarning': 'warning'
\ },
\ 'colorscheme': 'iceberg'
\ }
function! LightLineFiletype()
return winwidth(0) > 70 ? (strlen(&filetype) ? &filetype . ' ' . WebDevIconsGetFileTypeSymbol() : 'no ft') : ''
endfunction
function! LightLineFileformat()
return winwidth(0) > 70 ? (&fileformat . ' ' . WebDevIconsGetFileFormatSymbol()) : ''
endfunction
function LightlineLspErrorCount()
if !exists('*lsp#get_buffer_diagnostics_counts')
return ''
endif
let l:counts = lsp#get_buffer_diagnostics_counts()
if l:counts['error'] > 0
return printf('E:%d', l:counts['error'])
else
return ''
endif
endfunction
function LightlineLspWarningCount()
if !exists('*lsp#get_buffer_diagnostics_counts')
return ''
endif
let l:counts = lsp#get_buffer_diagnostics_counts()
if l:counts['warning'] > 0
return printf('W:%d', l:counts['warning'])
else
return ''
endif
endfunction
endif
" クリップボードが有効な場合
if has("clipboard")
" Yank と Clipboard を連携
set clipboard=unnamedplus,unnamed
endif
" autocmd が有効な場合
if has("autocmd")
" ファイルタイプの検出を有効にする
" ファイルタイププラグインを使用する
" インデントファイルを使う
filetype plugin indent on
" quickfix を自動で開く設定
augroup QuickFixCmd
autocmd!
autocmd QuickFixCmdPost *grep*,make cwindow
augroup END
" バッファーが閉じられたとき Quickfix が最後のバッファーのとき
" Quickfix を自動で閉じる
augroup QuickFixAutoClose
autocmd BufEnter * if (winnr("$") == 1 && &buftype == "quickfix") | q | endif
augroup END
" カーソル位置を復元する設定
augroup RestoreCursorPos
autocmd!
" ファイルを開いた時に、前回のカーソル位置に移動する
autocmd BufReadPost *
\ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
\ | exe "normal! g`\""
\ | endif
augroup END
" File types
augroup MyFileTypes
autocmd!
autocmd BufNewFile,BufRead *.metal setf metal
augroup END
else
" autoindent を設定
set autoindent
endif " has("autocmd")
if has('quickfix')
set previewheight=6
nnoremap <silent> <C-n> :cnext<CR>
nnoremap <silent> <C-p> :cprevious<CR>
nnoremap <silent> <leader>q :cclose<CR>
endif
if has('langmap') && exists('+langnoremap')
" langmap の文字がマッピングの結果として適用されないようにする
" (このオプションは後方互換性のためデフォルトはOFF)
set langnoremap
endif
" load vimrc.d/*.vim
runtime! vimrc.d/*.vim