Vim

個人用Vimrc

More than 1 year has passed since last update.


.vimrc


" プログラム作成はしていなくて、スケジュール管理と文書作成に使用しています。
" Vimwikiが最初動かなくて往生する。最初の三行を追加する。
" Neobundleも最近の書き方があり、最初は動かなかった。
" jj のキーアサインでインサートモードから抜けるはよい。
" Uniteのスペースアサイン、ESCのぬけもよし。
" 相対行の指定をして、できるだけjkを連打しないようにする。
" インサートモードからノーマルモードへ抜けるときIMEをオフにする。大変に助かりました。
" TAB操作の追加 すごい便利です。
" フォント指定の追加

filetype plugin on
syntax on
set gfn=Monospace\ 12

" 入力モードでのカーソル移動
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-h> <Left>
inoremap <C-l> <Right>
inoremap <C-u> <Home>
inoremap <C-i> <End>
" ノーマルで改行挿入
" inoremap <CR> <CR><Up>
"---------------------------
" Start Neobundle Settings.
"---------------------------
" bundleで管理するディレクトリを指定
set runtimepath+=~/.vim/bundle/neobundle.vim/"{{{

" Required:
call neobundle#begin(expand('~/.vim/bundle/'))

" neobundle自体をneobundleで管理
" NeoBundleFetch 'Shougo/neobundle.vim'

NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/neomru.vim'
NeoBundle 'itchyny/lightline.vim'
NeoBundle 'Chiel92/vim-autoformat'
NeoBundle 'vim-jp/vimdoc-ja'
NeoBundle 'yuratomo/w3m.vim'
NeoBundle 'pangloss/vim-javascript'
NeoBundle 'tomasr/molokai'
NeoBundle 'vim-scripts/vim-auto-save'
NeoBundle 'deton/jasegment.vim'
" NeoBundle 'nathanaelkane/vim-indent-guides'
call neobundle#end()
"}}}

" Required:
filetype plugin indent on

" デフォルトで有効にする
let g:auto_save = 1

" 日本語文字化けを防ぐ"{{{
set encoding=utf-8
set fileencodings=utf-8,euc-jp,sjis,iso-2022-jp
set ruler
" コマンドラインに使われる画面上の行数
set cmdheight=2
" エディタウィンドウの末尾から2行目にステータスラインを常時表示させる
set laststatus=2
" ステータス行に表示させる情報の指定(どこからかコピペしたので細かい意味はわかっていない)
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P
" ウインドウのタイトルバーにファイルのパス情報等を表示する
set title
" コマンドラインモードで<Tab>キーによるファイル名補完を有効にする
set wildmenu
" 入力中のコマンドを表示する
set showcmd
" バッファで開いているファイルのディレクトリでエクスクローラを開始する(でもエクスプローラって使ってない)
set browsedir=buffer
" 小文字のみで検索したときに大文字小文字を無視する
" set smartcase
set ignorecase
" 検索結果をハイライト表示する
set hlsearch
" 暗い背景色に合わせた配色にする
set background=dark
" タブ入力を複数の空白入力に置き換える
set expandtab
" 検索ワードの最初の文字を入力した時点で検索を開始する
set incsearch
" 保存されていないファイルがあるときでも別のファイルを開けるようにする
set hidden
" 不可視文字を表示する
set list
" タブと行の続きを可視化する
set listchars=tab:>\ ,extends:<
" 行番号を表示する
set number
" 対応する括弧やブレースを表示する
set showmatch
" 改行時に前の行のインデントを継続する
set autoindent
" 改行時に入力された行の末尾に合わせて次の行のインデントを増減する
set smartindent
" タブ文字の表示幅
set tabstop=4
" Vimが挿入するインデントの幅
set shiftwidth=4
" 行頭の余白内で Tab を打ち込むと、'shiftwidth' の数だけインデントする
set smarttab
" カーソルを行頭、行末で止まらないようにする
set whichwrap=b,s,h,l,<,>,[,]
" 構文毎に文字色を変化させる
syntax on
" カラースキーマの指定
colorscheme desert
" 行番号の色
highlight LineNr ctermfg=darkyellow"}}}

"unite.vimの設定 {{{
"インサートモードで開始
let g:unite_enable_start_insert = 1
"ヒストリー/ヤンク機能を有効化
let g:unite_source_history_yank_enable =1
"file_recのキャッシュの最小値/最大値を設定
let g:unite_source_rec_min_cache_files = 100
let g:unite_source_rec_max_cache_files = 5000
"prefix keyの設定
nmap <Space> [unite]

"スペースキーとaキーでVimShellを起動
nnoremap <silent> [unite]a :<C-u>UniteWithBufferDir -buffer-name=files file<CR>
"スペースキーとfキーでバッファと最近開いたファイル一覧を表示
nnoremap <silent> [unite]f :<C-u>Unite<Space>buffer file_mru<CR>
"スペースキーとdキーで最近開いたディレクトリを表示
nnoremap <silent> [unite]d :<C-u>Unite<Space>directory_mru<CR>
"スペースキーとhキーでヒストリ/ヤンクを表示
nnoremap <silent> [unite]h :<C-u>Unite<Space>history/yank<CR>
"スペースキーとoキーでoutline
nnoremap <silent> [unite]o :<C-u>Unite<Space>outline<CR>
"スペースキーとENTERキーでfile_rec:!
nnoremap <silent> [unite]<CR> :<C-u>Unite<Space>file_rec:!<CR>
"unite.vimを開いている間のキーマッピング
autocmd FileType unite call s:unite_my_settings()
function! s:unite_my_settings()"{{{
" ESCでuniteを終了
nmap <buffer> <ESC> <Plug>(unite_exit)
endfunction"}}}
"}}}

"vimwikiの設定 {{{
" Wikiページファイルのディレクトリ: ~/my_site/
" HTMLファイルの出力先ディレクトリ: ~/public_html/
let g:vimwiki_list = [{'path':'~/Dropbox/vimwiki/', 'path_html':'~/Documents/vimwiki-html/'}]

" 左右にウィンドウを分割して、Vimwikiを表示する。
:let g:vimwiki_list = [{'path':'~/Dropbox/vimwiki/', 'gohome':'vsplit'}]

"}}}

" 相対行の表示
set relativenumber
"
set wrap

nmap <silent> <F7> ggVG

set laststatus=2
set t_Co=256

set foldmethod=marker

set noswapfile
"インサートモードからノーマルモードへ抜けるときIMEをオフにする。
function! ImInActivate()
call system('fcitx-remote -c')
endfunction

" insertモードから抜ける
inoremap <silent> jj <ESC>:call ImInActivate()<CR>
inoremap <silent> っj <ESC>:call ImInActivate()<CR>
inoremap <silent> <C-j> <ESC>:call ImInActivate()<CR>

" タブ操作 ------------------------------
" Anywhere SID.
function! s:SID_PREFIX()"{{{
return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSID_PREFIX$')
endfunction

" Set tabline.
function! s:my_tabline() "{{{
let s = ''
for i in range(1, tabpagenr('$'))
let bufnrs = tabpagebuflist(i)
let bufnr = bufnrs[tabpagewinnr(i) - 1] " first window, first appears
let no = i " display 0-origin tabpagenr.
let mod = getbufvar(bufnr, '&modified') ? '!' : ' '
let title = fnamemodify(bufname(bufnr), ':t')
let title = '[' . title . ']'
let s .= '%'.i.'T'
let s .= '%#' . (i == tabpagenr() ? 'TabLineSel' : 'TabLine') . '#'
let s .= no . ':' . title
let s .= mod
let s .= '%#TabLineFill# '
endfor
let s .= '%#TabLineFill#%T%=%#TabLine#'
return s
endfunction "}}}
let &tabline = '%!'. s:SID_PREFIX() . 'my_tabline()'
set showtabline=2 " 常にタブラインを表示

" The prefix key.
nnoremap [Tag] <Nop>
nmap t [Tag]
" Tab jump
for n in range(1, 9)
execute 'nnoremap <silent> [Tag]'.n ':<C-u>tabnext'.n.'<CR>'
endfor
" t1 で1番左のタブ、t2 で1番左から2番目のタブにジャンプ"}}}

map <silent> [Tag]c :tablast <bar> tabnew<CR>
" tc 新しいタブを一番右に作る
map <silent> [Tag]x :tabclose<CR>
" tx タブを閉じる
map <silent> [Tag]n :tabnext<CR>
" tn 次のタブ
map <silent> [Tag]p :tabprevious<CR>
" tp 前のタブ

let g:w3m#command = '/usr/bin/w3m'

noremap n nzz
noremap N Nzz