-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.vimrc
209 lines (179 loc) · 10.8 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
" Init {{{
set shellslash " ファイル名の区切りにスラッシュを使う
" }}}
" Flags {{{
" ====================================================================================================
" Common
" ---------------------------------------------------------------------------------------------------
filetype plugin indent on " ファイルタイプ別のプラグイン・インデントロードを有効化
syntax on " シンタックスハイライトを有効化
let mapleader='\'
" File
" ---------------------------------------------------------------------------------------------------
set autoread " 編集中のファイルが外部から書き換えられたとき自動的に読み直す
set noautochdir " ファイルを開いたときにディレクトリを変更しない
set hidden " バッファを破棄するときに開放せず隠れ状態にする
set noswapfile " スワップファイルを作らない
set backupdir=>/tmp " バックアップディレクトリを/tmpに指定
set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc " ワイルドカードにマッチしたとき優先度を低くする拡張子
set noundofile " アンドゥファイルを作らない
" Bell
" ---------------------------------------------------------------------------------------------------
set vb t_vb= " ビープ音も画面フラッシュも使わない
" Search
" ---------------------------------------------------------------------------------------------------
set ignorecase " 検索時に大文字小文字を区別しない
set smartcase " パターンに大文字が含まれているときに限り大文字小文字を区別する
set incsearch " 検索パターンを入力中に、入力途中のパターンにマッチする文字列を表示する
set hlsearch " 前回の検索パターンを強調表示する
set wrapscan " 検索がファイル末尾まで進んだら、ファイル先頭から再び検索する
" Completion
" ---------------------------------------------------------------------------------------------------
set shiftround " '<'や'>'でインデントする際に'shiftwidth'の倍数に丸める
set infercase " 補完時に大文字小文字を区別しない
set wildmenu " コマンドライン補完を拡張モードで行う
set wildmode=longest:full,full " コマンドライン補完時の優先設定
" History
" ---------------------------------------------------------------------------------------------------
set history=1000 " コマンドと検索パターンの履歴を1000件保持する
" Indent
" ---------------------------------------------------------------------------------------------------
set tabstop=4 " タブをスペース4個分にする
set expandtab " タブ入力をスペースに入れ替える
set softtabstop=4 " 編集でTabの幅として使用する空白の数
set shiftwidth=4 " インデントの各段階に使われる空白の数
set autoindent " 新しい行のインデントを現在行と同じにする
set smartindent " 新しい行を作ったときに高度なインデントを行う
augroup FileDependentIndentSettings
autocmd!
autocmd FileType html setlocal ts=2 sw=2 " htmlのときだけインデント幅を変更する
augroup end
" Edit
" ---------------------------------------------------------------------------------------------------
set virtualedit=all " カーソルを文字が存在しない部分でも動けるようにする
set hidden " バッファを閉じる代わりに隠す(Undo履歴を残すため)
set switchbuf=useopen " 新しく開く代わりにすでに開いてあるバッファを開く
set backspace=indent,eol,start " バックスペースでなんでも消せるようにする
set clipboard+=unnamed,unnamedplus " クリップボードレジスタを利用する
set whichwrap=b,s,h,l,<,>,[,] " カーソルキーのみで行末/頭の移動ができるようにする
" View
" ---------------------------------------------------------------------------------------------------
set cursorline " カーソルのある行を強調する
set showmatch " 対応する括弧などをハイライト表示する
set matchtime=3 " 対応括弧のハイライト表示を3秒にする
set matchpairs& matchpairs+=<:> " 対応括弧に'<'と'>'のペアを追加
set showcmd " コマンドの一部を最下行に表示する
set showmode " I,R,Vモードで最終行にメッセージを表示する
set number " 行番号の表示
set wrap " 長いテキストの折り返し
set textwidth=0 " 自動的に改行が入るのを無効化
set ruler " カーソルが何行目・何列目に置かれているかを表示する
set showbreak=>> " 折り返された行のはじめに>>を表示する
set list lcs=tab:¦_ " タブをわかりやすく表示する
set scrolloff=5 " カーソルの上下に少なくとも5行表示する
set pumheight=10 " ポップアップメニューい表紙する最大項目数を10にする
set completeopt=menuone,noinsert " 候補が一つしかないときもポップアップを使う
set t_Co=256 " 256色使う
" Folding
" ---------------------------------------------------------------------------------------------------
set foldenable " 折りたたみを有効化
set foldmethod=marker " マーカーで折りたたみを指定する
set foldcolumn=1 " ウインドウの端の列で折りたたみの情報を表示する
set foldlevel=0 " すべての折りたたみを閉じた状態で表示する
" Status Line
" ---------------------------------------------------------------------------------------------------
set cmdheight=2 " コマンドラインに使われる行数
set laststatus=2 " ステータス行を常に表示する
" Title
" ---------------------------------------------------------------------------------------------------
set title " ファイル名やファイル属性をタイトルに表示する
set titlestring=Vim:\ %f\ %h%r%m " タイトルのフォーマットの指定
set ttimeoutlen=10 " キーコードの完了を待つ時間を10msにする
" Charset, Line ending
" ---------------------------------------------------------------------------------------------------
set encoding=utf-8 " Vim 内部の文字エンコーディングをutf-8で行う
scriptencoding utf-8 " スクリプトで使われている文字コードがutf-8であると宣言する
set termencoding=utf-8 " ターミナルのエンコーディングがutf-8であることを前提に処理を行う
set fileencodings=utf-8,iso-2022-jp,euc-jp,cp932,ucs-bom,default,latin1 " カレントバッファで扱うエンコーディング
set fileformats=unix,dos,mac " 想定される改行の種類
if exists('&ambiwidth')
set ambiwidth=double " 幅不明な文字はASCIIの二倍の幅で扱う
endif
" }}}
" Keys {{{
"====================================================================================================
" Move
" ---------------------------------------------------------------------------------------------------
nnoremap j gj
nnoremap k gk
nnoremap gj j
nnoremap gk k
nnoremap J <C-d>
nnoremap K <C-u>
vnoremap J <C-d>
vnoremap K <C-u>
nnoremap H ^
nnoremap L $
vnoremap H ^
vnoremap L $
" Buffer
" ---------------------------------------------------------------------------------------------------
nnoremap <silent> <C-j> :bn<CR>
nnoremap <silent> <C-k> :bp<CR>
" Tab
" ---------------------------------------------------------------------------------------------------
nnoremap <silent> <TAB> :tabn<CR>
nnoremap <silent> <S-TAB> :tabp<CR>
nnoremap <silent> <C-TAB> :tabnew<CR>
nnoremap <silent> <C-l> :tabn<CR>
nnoremap <silent> <C-h> :tabp<CR>
" Wrap
" ---------------------------------------------------------------------------------------------------
nnoremap [prefix]sw :set wrap<CR>
nnoremap [prefix]snw :set nowrap<CR>
" Indent
" ---------------------------------------------------------------------------------------------------
nnoremap > >>
nnoremap < <<
vnoremap > >gv
vnoremap < <gv
" Popup
" ---------------------------------------------------------------------------------------------------
inoremap <expr> <C-j> pumvisible() ? "\<C-n>" : "\<C-j>"
inoremap <expr> <C-k> pumvisible() ? "\<C-p>" : "\<C-k>"
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
" }}}
" Plugins {{{
"====================================================================================================
call plug#begin('~/.vim/plugged')
" general
Plug 'scrooloose/nerdtree' " ファイルシステムエクスプローラー
Plug 'thinca/vim-quickrun' " 編集中のファイルを実行する
Plug 'thinca/vim-template' " ファイルタイプごとのテンプレートを自動で読み込む
Plug 'ctrlpvim/ctrlp.vim' " バッファやファイルのファインダー
" lsp
Plug 'prabirshrestha/vim-lsp' " LSPクライアント
Plug 'prabirshrestha/asyncomplete-lsp.vim' " LSP補完ソース
Plug 'prabirshrestha/asyncomplete.vim' " 自動補完フレームワーク
Plug 'mattn/vim-lsp-settings' " ファイルタイプに応じてLSをセッティングする
" visual
Plug 'beikome/cosme.vim' " カラースキームcosme
Plug 'itchyny/lightline.vim' " ステータスバー
Plug 'gko/vim-coloresque' " カラーコードのプレビュー
call plug#end()
" }}}
" Others {{{
"====================================================================================================
" カラースキームを設定
colorscheme cosme
" .vim/_config以下の設定ファイル群を読み込むための準備
" UsePluginコマンドを用い、使用中のPluginの設定のみ読み込むようにする
let s:plugs = get(s:, 'plugs', get(g:, 'plugs', {}))
function! FindPlugin(name) abort
return has_key(s:plugs, a:name) ? isdirectory(s:plugs[a:name].dir) : 0
endfunction
command! -nargs=1 UsePlugin if !FindPlugin(<args>) | finish | endif
" 各プラグインの設定ファイルを読み込む
runtime! _config/*.vim
" }}}