-
Notifications
You must be signed in to change notification settings - Fork 13
/
init.vim
389 lines (310 loc) · 11.4 KB
/
init.vim
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
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" _ "
" __ _(_)_ __ ___ _ __ ___ "
" \ \ / / | '_ ` _ \| '__/ __| "
" \ V /| | | | | | | | | (__ "
" \_/ |_|_| |_| |_|_| \___| "
" "
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" NOTE: NeoVim
" The config if NeoVim set it to default or don't work with nvim,
" comment out with '">>> '
"
" See :h vim_diff
"
" written by Shotaro Fujimoto (https://github.com/ssh0)
"------------------------------------------------------------------------------
" Initial Setting: {{{
"------------------------------------------------------------------------------
" Note: Skip initialization for vim-tiny or vim-small.
if !1 | finish | endif
" use <Space> for mapleader & localleader
let mapleader = "\<Space>"
let localleader = "\<Space>"
" encoding
scriptencoding utf8
set fileencoding=utf-8
set fileencodings=utf-8,iso-2022-jp,euc-jp,sjis
"---------------------------------------------------------------------------}}}
" Load plugins: {{{
"------------------------------------------------------------------------------
source ~/.config/nvim/plug.vim
"---------------------------------------------------------------------------}}}
" Autocmd: {{{
"------------------------------------------------------------------------------
" set title for currently viewing
" [tmux tabs with name of file open in vim - Stack Overflow]
" http://stackoverflow.com/questions/15123477/tmux-tabs-with-name-of-file-open-in-vim
if $TMUX != ""
augroup titlesettings
autocmd!
autocmd BufEnter,InsertEnter * call system("tmux rename-window '(vim) " . expand("%:t") . "'")
autocmd VimLeave * call system("tmux rename-window zsh")
autocmd BufEnter * let &titlestring = ' ' . expand("%:t")
augroup END
endif
augroup filetype
autocmd!
" markdown
autocmd BufRead,BufNewFile *.{mkd,md} set filetype=markdown
autocmd! FileType markdown hi! def link markdownItalic Normal
autocmd FileType markdown set commentstring=<\!--\ %s\ -->
" tex file (I always use latex)
autocmd BufRead,BufNewFile *.tex set filetype=tex
let md_to_latex = "pandoc --from=markdown --to=latex "
autocmd Filetype tex let &formatprg=md_to_latex
autocmd Filetype tex set colorcolumn=
" bib file
autocmd BufRead,BufNewFile *.bib set filetype=bib
autocmd Filetype bib let &formatprg="bibclean"
" python
autocmd Filetype python let &formatprg="autopep8 -"
autocmd FileType python setlocal completeopt-=preview
" html
let html_to_html = "pandoc --from=html --to=markdown"
let html_to_html .= " | pandoc --from=markdown --to=html"
autocmd Filetype html let &formatprg=html_to_html
" sql
autocmd FileType sql set commentstring=--\ %s
autocmd Filetype sql let &formatprg="sqlformat -r -k lower --comma_first TRUE --indent_width 4 -"
augroup END
augroup set_K_help
autocmd!
autocmd FileType vim setlocal keywordprg=:help
augroup END
augroup texmath
autocmd!
autocmd FileType texmath setlocal syntax=tex
augroup END
" Update shada file manually
augroup write_shada
autocmd!
autocmd VimLeavePre * wshada!
augroup END
"---------------------------------------------------------------------------}}}
" Set Options: {{{
"------------------------------------------------------------------------------
" System {{{
" ------
" don't use backup or swap files
set nowritebackup nobackup noswapfile
" how many stock command history
set history=1000
" save information to ~/.viminfo
set shada='1000,f1,<4000,c,h
" use unnamed register (for outer programs)
set clipboard+=unnamedplus
" less timeoutlen
set timeout timeoutlen=400 ttimeoutlen=75
" disable 8-bit num
set nrformats-=octal
" use mouse
">>> if has('mouse')
">>> set mouse=a
">>> endif
" set completion popup's height
set pumheight=10
" always split vertically when using vimdiff
set diffopt=vertical
" Indicates a fast terminal connection
">>> set ttyfast
set whichwrap=b,s,[,],<,>
" help language
set helplang=ja,en
" TOhtml
let g:html_ignore_conceal=1
let g:html_ignore_folding=1
" let g:html_dynamic_folds=1
" suppress the banner
let g:netrw_banner=0
" =2: vertically splitting the window first
let g:netrw_browse_split=2
" try to open under the cursor with `gx`
let g:netrw_browsex_viewer="xdg-open"
" right splitting
let g:netrw_altv=1
" =3: tree style listing
let g:netrw_liststyle=3
" }}}
" Search {{{
" ------
" case sensitive for search
set noignorecase nosmartcase
" Show matches while typing
">>> set incsearch
" highlighted search index
">>> set hlsearch
" wrapscan
set wrapscan
" }}}
" Apearance {{{
" ---------
" don't give the intro message
">>> set shortmess+=I
" don't redraw screen during macros
set lazyredraw
" no number line
set nonumber norelativenumber numberwidth=3
" autoindent
">>> set autoindent
" insert space instead of TAB
set expandtab shiftround
">>> set smarttab
" default tab width
set softtabstop=4 shiftwidth=4
" don't break a long line
set textwidth=0
" wrapped by 80 characters(PEP8)
set colorcolumn=80
" status line
set title noshowcmd
" highlight cursorline
set cursorline
" height of commandline
set cmdheight=1
" the last window will have a status line always
">>> set laststatus=2
" show wildmenu
set wildmenu
" show Tab and Space at end of the line
set list listchars=tab:▸\ ,trail:~
" showbreaks
set showbreak=\ ↪
" highlight mathched parenthesis
set showmatch matchtime=1
" folding
set foldmethod=marker foldcolumn=0
" characters to vertical separator
set fillchars=vert:\|
" modeline
set modeline
" disable the conceal function
let g:tex_conceal=''
set conceallevel=2
" }}}
"---------------------------------------------------------------------------}}}
" Indent: {{{
"------------------------------------------------------------------------------
autocmd FileType sh setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab
autocmd FileType apache setlocal shiftwidth=4 softtabstop=4 tabstop=4 expandtab
autocmd FileType css setlocal shiftwidth=4 softtabstop=4 tabstop=4 expandtab
autocmd FileType diff setlocal shiftwidth=4 softtabstop=4 tabstop=4 noexpandtab
autocmd FileType html setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab
autocmd FileType java setlocal shiftwidth=4 softtabstop=4 tabstop=4 expandtab
autocmd FileType javascript setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab
autocmd FileType ruby setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab
autocmd FileType eruby setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab
autocmd FileType sql setlocal shiftwidth=4 softtabstop=4 tabstop=4 expandtab
autocmd FileType tex setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab
autocmd FileType vim setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab
autocmd FileType xml setlocal shiftwidth=4 softtabstop=4 tabstop=4 noexpandtab
autocmd FileType yaml setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab
autocmd FileType zsh setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab
autocmd FileType coffee setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab
autocmd FileType sql setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab
autocmd FileType velocity setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab
"---------------------------------------------------------------------------}}}
" My function: {{{
"------------------------------------------------------------------------------
function! Markdown_h1()
normal! V"ly"lpVr=
endfunction
function! Markdown_h2()
normal! V"ly"lpVr-
endfunction
function! Markdown_h3()
normal! I###
endfunction
"---------------------------------------------------------------------------}}}
" Key Bindings: {{{
"------------------------------------------------------------------------------
" Escape by jj, kk
inoremap <silent> jj <ESC>
inoremap <silent> kk <ESC>
" Toggle relative number by <Space> + l
nnoremap <silent> <Leader>l :setlocal relativenumber! number!<CR>
" execute shell command written in a line
nnoremap Q !!$SHELL<CR>
" move in wrapped line by arrow key
nnoremap <Down> gj
nnoremap <Up> gk
vnoremap <Down> gj
vnoremap <Up> gk
" move from line head to line end
nnoremap h <Left>zv
" move from line end to line head
nnoremap l <Right>zv
" yank to line end
nnoremap Y y$
" cursor moved in insert mode
" inoremap <C-j> <Down>
" inoremap <C-k> <Up>
" inoremap <C-h> <Left>
" inoremap <C-l> <Right>
" move between windows by easy key mapping
nnoremap <silent> <C-h> :wincmd h<CR>
nnoremap <silent> <C-j> :wincmd j<CR>
nnoremap <silent> <C-k> :wincmd k<CR>
nnoremap <silent> <C-l> :wincmd l<CR>
" create new tab
nnoremap <C-n> :tabnew<Space>
" clear highlight by pressing Esc twice
nnoremap <silent> <ESC><ESC> :nohlsearch<CR>
" open the file in new tab
nnoremap gf <C-w>gf
" create the file and open in new tab
nnoremap gF :tabedit <C-r><C-f><CR>
" multi tab jamp
nnoremap <C-]> g<C-]>
" 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 ・ /
"}}}
" quote and bracket
inoremap {} {}<Left>
inoremap [] []<Left>
inoremap () ()<Left>
inoremap "" ""<Left>
inoremap """ """<CR>"""<Up>
inoremap ”” ””<Left>
inoremap '' ''<Left>
inoremap ’’ ’’<Left>
inoremap <> <><Left>
inoremap $$ $$<Left>
vnoremap < <gv
vnoremap > >gv
" source vimrc
map <Leader>so :source ~/.config/nvim/init.vim
" my functions
nnoremap <silent> <Leader>h1 :call Markdown_h1()<CR>
nnoremap <silent> <Leader>h2 :call Markdown_h2()<CR>
nnoremap <silent> <Leader>h3 :call Markdown_h3()<CR>
"---------------------------------------------------------------------------}}}
" Local_setting: {{{
"------------------------------------------------------------------------------
" Load settings for each location.
augroup vimrc-local
autocmd!
autocmd BufNewFile,BufReadPost * call s:vimrc_local(expand(':p:h'))
augroup END
function! s:vimrc_local(loc)
let files = findfile('.vimrc.local', escape(a:loc, ' ') . ':', -1)
for i in reverse(filter(files, 'filereadable(v:val)'))
source `=i`
endfor
endfunction
"
"
"---------------------------------------------------------------------------}}}