魔法使いの卵

WEBエンジニアの卵の成長記録

1年近くかけて育てたvimrcを晒してみる

晒す目的

  • おすすめの設定あれば教えて下さい
  • マサカリによって更なる便利さを手にしたい

エディタ歴

  • メモ帳
    • 気が狂ってたと思う
  • DW(有料)
    • 無料でもっといいのがあるよって教えてあげたい
    • ほぼ強要されて昔これつかってた気がする。
  • sublimetext
    • プラグイン色々あって自分の色に染まっていくのが素敵
    • 軽くてよかった。最後のほうがメモ帳に変貌。
  • vim
    • そろそろ1年近く
    • 基本的になんでもできるから最強だとおもう
    • なんでもできるようにしようとした場合、設定書くためそこに時間が取られて本末転倒になっていた時期もありました。
    • でもたぶんこれからもよく使っていくことになるとおもう。
  • phpstorm(有料)[IDE]
    • 最近隣になった方に完全にインスパイアされて買った。
    • vimでやりたいことは全部できてる
    • 挙げ出したらきりがない
    • これからはこれメインにします

vimになれるためにやったこと

一年近くvim使っておもったこと

  • これからもvimとは離れることはできない気がする(コマンドを使う限り)
  • linuxのコマンドも平行して覚えることができた
    • むしろこれが一番でかいかもしれない

vimrcで一応意識したこと

  • 設定はネットに落ちているものや本を拾い集めてつなぎあわせた
  • プラグインは極力いれないようにする
  • vimのちからだけでがんばってみる

.vimrcを晒してみる

"---------------------------
" Start Neobundle Settings.
"---------------------------
" bundleで管理するディレクトリを指定
set runtimepath+=~/.vim/bundle/neobundle.vim/

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

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

" 以下プラグイン"
" 高速ソースディレクトリ一覧
" :NERDTree
NeoBundle 'scrooloose/nerdtree'
" autoclose
NeoBundle 'Townk/vim-autoclose'
" Emmet
NeoBundle 'mattn/emmet-vim'
" quickrun
NeoBundle 'thinca/vim-quickrun'
" grep.vim
NeoBundle 'grep.vim'
" syntastic
NeoBundle 'scrooloose/syntastic'
" ソースコード上のメソッド宣言、変数宣言の一覧を表示
" :Tlist
NeoBundle 'taglist.vim'

call neobundle#end()

" Required:
filetype plugin indent on

" 未インストールのプラグインがある場合、インストールするかどうかを尋ねてくれるようにする設定
" 毎回聞かれると邪魔な場合もあるので、この設定は任意。
NeoBundleCheck

"-------------------------
" End Neobundle Settings.
"-------------------------

""""""""""""""""""""""""""""""
" 各種オプションの設定
""""""""""""""""""""""""""""""
" タグファイルの指定(今は使ってない)
set tags=~/.tags
" クリップボードに保存する"
set clipboard=unnamed,autoselect
" 日本語文字化けを防ぐ
set encoding=utf-8
set fileencodings=utf-8,euc-jp,sjis,iso-2022-jp
" スワップファイルは使わない(ときどき面倒な警告が出るだけで役に立ったことがない)
set noswapfile
" カーソルが何行目の何列目に置かれているかを表示する
set ruler
" コマンドラインに使われる画面上の行数
set cmdheight=2
" エディタウィンドウの末尾から2行目にステータスラインを常時表示させる
set laststatus=2
" ステータス行に表示させる情報の指定(どこからかコピペしたので細かい意味はわかっていない)
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P
" ステータス行に現在のgitブランチを表示する
"set statusline+=%{fugitive#statusline()}
" ウインドウのタイトルバーにファイルのパス情報等を表示する
set title
" コマンドラインモードで<Tab>キーによるファイル名補完を有効にする
set wildmenu
" 入力中のコマンドを表示する
set showcmd
" バックアップディレクトリの指定(でもバックアップは使ってない)
set backupdir=$HOME/.vimbackup
" バッファで開いているファイルのディレクトリでエクスクローラを開始する(でもエクスプローラって使ってない)
set browsedir=buffer
" 小文字のみで検索したときに大文字小文字を無視する
set smartcase
" 検索結果をハイライト表示する
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
" コピーデータのインデントをコピーデータと統一
set paste

""""""""""""""""""""""""""""""
" 最後のカーソル位置を復元する
if has("autocmd")
    autocmd BufReadPost *
    \ if line("'\"") > 0 && line ("'\"") <= line("$") |
    \   exe "normal! g'\"" |
    \ endif
endif
""""""""""""""""""""""""""""""
" 自動的に閉じ括弧を入力
imap { {}<LEFT>
imap [ []<LEFT>
imap ( ()<LEFT>
""""""""""""""""""""""""""""""
" 挿入モード時、ステータスラインの色を変更
let g:hi_insert = 'highlight StatusLine guifg=darkblue guibg=darkyellow gui=none ctermfg=blue ctermbg=yellow cterm=none'

if has('syntax')
  augroup InsertHook
    autocmd!
    autocmd InsertEnter * call s:StatusLine('Enter')
    autocmd InsertLeave * call s:StatusLine('Leave')
  augroup END
endif

let s:slhlcmd = ''
function! s:StatusLine(mode)
  if a:mode == 'Enter'
    silent! let s:slhlcmd = 'highlight ' . s:GetHighlight('StatusLine')
    silent exec g:hi_insert
  else
    highlight clear StatusLine
    silent exec s:slhlcmd
  endif
endfunction

function! s:GetHighlight(hi)
  redir => hl
  exec 'highlight '.a:hi
  redir END
  let hl = substitute(hl, '[\r\n]', '', 'g')
  let hl = substitute(hl, 'xxx', '', '')
  return hl
endfunction
""""""""""""""""""""""""""""""
" 全角スペースの表示
function! ZenkakuSpace()
    highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=darkgray
endfunction

if has('syntax')
    augroup ZenkakuSpace
        autocmd!
        autocmd ColorScheme * call ZenkakuSpace()
        autocmd VimEnter,WinEnter,BufRead * let w:m1=matchadd('ZenkakuSpace', ' ')
    augroup END
    call ZenkakuSpace()
endif
""""""""""""""""""""""""""""""
" ;でコマンド入力( ;と:を入れ替)
noremap ; :
noremap : ;
""""""""""""""""""""""""""""""
" failetreesをnetrwからNERDTreeに変更し左に設置
let g:netrw_liststyle = 3
let g:netrw_browse_split = 4
let g:netrw_altv = 1

function! ToggleVExplorer()
    if !exists("t:netrw_bufnr")
       exec '1wincmd w'
       25Vexplore
       let t:netrw_bufnr = bufnr("%")
       return
    endif
    let win = bufwinnr(t:netrw_bufnr)
    if win != -1
       let cur = winnr()
       exe win . 'wincmd w'
       close
       exe cur . 'wincmd w'
    endif
    unlet t:netrw_bufnr
endfunction
map <silent> <leader>e :NERDTreeToggle<cr>
""""""""""""""""""""""""""""""
" シンボルブラウザ(taglist)を右に設置
let Tlist_Show_One_File = 1
let Tlist_Use_Right_Window = 1
let Tlist_Exit_OnlyWindow = 1
map <silent> <leader>E :TlistToggle<cr>
""""""""""""""""""""""""""""""
" CtrIPでファイルを中央のウィンドウで開く設定
function! CtrIP_OpenAtCenter(action, line)
    let cw = bufwinnr('.')
    for n in range(0, bufnr('$'))
      let bw = bufwinnr(n)
      if bw == cw && buflisted(n)
        exe bw . 'wincmd w'
        break
      endif
    endfor
    call call('ctrlp#acceptfile',[a:action,a:line])
endfunction
let g:ctrlp_open_func = {'files': 'CtrIP_OpenAtCenter'}
""""""""""""""""""""""""""""""

参考元: もう覚えてないぐらいたくさんのところ