.vimrc
" ■0.目次 "
" 1.初期設定
" 2.キー設定
" 3.表示設定
" 4.入力設定
" 5.プラグイン設定
" 6.文字コードの自動認識
" ■1.初期設定 "
set nocompatible
set backup
set swapfile
set runtimepath+=$HOME/.vim/runtime
set backupdir=$HOME/.vim/backup
set directory=$HOME/.vim/swap
cd $HOME
colorscheme darkblue
" ■2.キー設定 "
" □2.1.一般 "
"
" 置換
"" 置換は、:s/foo/bar/g
"" 確認置換は、:s/foo/bar/gc
"" 行末置換は、v して :s/$/<br>/
"
" コメント
"" 行頭を Ctrl + v して I#<ESC>
" □2.2.すべて "
" マーク位置へのジャンプを行だけでなく桁位置も復元できるようにする
map ' `
" Ctrl+Nで次のバッファを表示、Ctrl+Pで前のバッファを表示
map <C-N> :bnext<CR>
map <C-P> :bprevious<CR>
" □2.3.ノーマル "
" 表示行単位で行移動するようにする
nnoremap j gj
nnoremap k gk
" Ctrl+Shift+Jで上に表示しているウィンドウをスクロールさせる
nnoremap <C-S-J> <C-W>k<C-E><C-W><C-W>
" 検索語が画面の真ん中に来るようにする
nmap n nzz
nmap N Nzz
nmap * *zz
nmap # #zz
nmap g* g*zz
nmap g# g#zz
"" Esc連打でハイライトを消す
nmap <Esc><Esc> :nohlsearch<CR><Esc>
"" encoding
nmap ,U :set encoding=utf-8<CR>
nmap ,E :set encoding=euc-jp<CR>
nmap ,S :set encoding=cp932<CR>
" □2.4.インサート "
" insert モードの時に Ctrl-J を押せば normal モード
imap <C-J> <ESC>
" 挿入モードでCtrl+kを押すとクリップボードの内容を貼り付けられるようにする
imap <C-K> <ESC>"*pa
" ■3.表示設定 "
"" 行番号の表示
set number
"" ステータスラインを常に表示(編集中のファイル名が常に確認できるようになる)
set laststatus=2
"" 入力中のコマンドをステータスに表示する
set showcmd
"" ステータスラインに文字コードと改行文字を表示する
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P
"" シンタックスハイライトを有効にする
syntax on
"" 検索結果文字列のハイライトを有効にする
set hlsearch
"" タブや改行を表示しない(表示する場合は行末が$、TABが^Iで表示される)
set nolist
"" 括弧入力時の対応する括弧を表示
set showmatch
"" タブ幅の設定
set expandtab
set tabstop=2
set softtabstop=2
set shiftwidth=2
"" スペースとタブを表示する
set list
set listchars=tab:>-,trail:_
" ■4.入力設定 "
"" システムのクリップボードを使う
set clipboard=unnamed
"" more powerful backspacing
set backspace=indent,eol,start
"" 自動改行を OFF にする
set tw=0
"set formatoptions=q ""これで、gqコマンド以外では自動改行しない。
"" 編集中の内容を保ったまま別の画面に切替えられるようにする(デフォルトだと一度保存しないと切り替えられない)
set hidden
"" コマンドライン補完するときに強化されたものを使う(参照 :help wildmenu)
set wildmenu
"" コマンドライン補間をシェルっぽく
set wildmode=list:longest
"" 検索文字を打ち込むと即検索する(インクリメンタルサーチ)
set incsearch
"" 小文字の検索で大文字も見つかるようにする(検索時に大文字小文字を無視する)
set ignorecase
"" 大文字を混ぜて検索した場合だけ大文字/小文字を区別する
set smartcase
"" 検索時に最後まで行ったら最初に戻る
set wrapscan
"" タブの入力を空白文字に置き換える
set expandtab
"" 新しくファイルを開いてインサートモードに入ると、なぜかIMEがオンの状態になる(オフであってほしい)
set iminsert=0
set imsearch=0
"" 打ち間違い防止
abbr lamdba lambda #λな人向け
abbr funciton function #JavaScripter向け
abbr reuqire require #Rubyist向け
abbr incldue include #C/C++使い向け
abbr improt import #Haskeller/蛇遣い向け
" ■5.プラグイン設定 "
"" ChangeLog
let g:changelog_timeformat = "%Y-%m-%d"
let g:changelog_username = ""
"" Vim付属のエクスプローラで簡単にファイルを開く(:Explore)
"set browsedir=last " 前回にファイルブラウザを使ったディレクト
set browsedir=buffer " バッファで開いているファイルのディレクトリ
"set browsedir=current " カレントディレクトリ
"set browsedir={path} " {path} で指定されたディレクトリ
" ■6.文字コードの自動認識 "
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=dos,unix,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
set ambiwidth=double
endif