春なのでemacsとvimと二股かけてみました

春なのでemacsからvimに乗り換えてみました
http://fifnel.com/2009/04/07/2300/
にいんすぱいやされました。

emacsのせいなのかどうかわからないけど、小指っていうか左肩ばかりやたら凝るようになって、viへの乗り換えを検討中にこれを発見。
vimperatorでviぽい操作に慣れてきたっていうのも大きいのかもしれない。


いんすぱいやされて、さっそく試してみようと思ったら、cocoavimを配布してくれている
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim72
のサーバが昨日辺りから死んでるぽいので、macvim-kaoriya(http://code.google.com/p/macvim-kaoriya/)を使ってみることにした。
ここ最近、すごい勢いでupdateが繰り返されてるので、インストールも簡単だし、長い目で見てこっちの方が期待できるのではないかと考えることにした。


早速いくつかプラグインを試してみたり、実際にファイルの編集してみたりしてみた。

とにかくなによりも surround.vim がもの凄く凄くて本当にすごくてかなり感動。

http://d.hatena.ne.jp/secondlife/20061225/1167032528
↑surround.vimについて色々

xml,htmlなんかの編集はもうこいつに任せろ。任せておけ。

こいつがとても面白くて、ひたすらhtmlを触り続けてしまった。
vimperl触ってないからわからないけど、多分perlとかでも便利に使えると思う。


と、ここまで色々感動しながらも、なんだかんだ完全な乗り換えはもう少し先になりそうです。


macvim-kaoriya自体、もの凄い勢いで更新されてて、作者の方には本当に頭が下がる思いなのですが、まだまだイマイチな部分もいくつか。
インサートモードから抜けるときにIMEがOFFに出来ないぽく、手動でIMEをOFFにしないといけなかったり(そもそも日本語でvimを使うときの宿命なのかもしれない)、
今現在migemoがうまく動かなかったり。

そして、これは自分のせいだと思うけど、yankring.vimが機能しません。

vimだと、xやらdで削除したものが、とにかくレジスタに入ってくれてしまうようで、
コピー→貼り付け→ちょろっと修正→同じの貼り付け
とかよくあるんだけど、こんなときにどうしても過去のクリップボード履歴を参照したくなる。
これがうまく動かないのはイタイ。

このあたり、もう少し時間をかけて試してみたい。
が、いつまでも環境設定だけしまくるのもどうかと思うし、出来るならばプラグインでゴテゴテになることも避けたいので、
ひたすらカスタマイズは少しだけ我慢して、(バッファ周りのプラグインとかは特に色々と試してみたいが)、とりあえず現状のvimrc,gvimrcを載せておこうと思います。


vimrc

"----------------------------------------------------------
" 文字コードの指定
"----------------------------------------------------------
set enc=utf-8
set fenc=utf-8
set fencs=iso-2022-jp,utf-8,euc-jp,cp932

"----------------------------------------------------------
"ステータスライン
"----------------------------------------------------------
set laststatus=2 " 常にステータスラインを表示
set statusline=%<%F\ %r%h%w%y%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%4v\ %l/%L(%P)%m

"----------------------------------------------------------
"基本設定
"----------------------------------------------------------
set autoread                   " 他で書き換えられたら自動で読み直す
set backup
set backupdir=~/Dropbox/bak
set noswapfile                 " スワップファイル作らない
set hidden                     " 編集中でも他のファイルを開けるようにする
set backspace=indent,eol,start " バックスペースでなんでも消せるように
set vb t_vb=                   " ビープをならさない
set whichwrap=b,s,h,l,<,>,[,]  " カーソルを行頭、行末で止まらないようにする
set showcmd					" コマンドをステータス行に表示

"----------------------------------------------------------
"表示
"----------------------------------------------------------
"タブの画面上での幅
set tabstop=2
" タブをスペースに展開(expandtab:展開する) 
set expandtab
" 行数表示
set nu
" タブや改行を表示 (list:表示) 
set nolist

set showmatch		 " 括弧の対応をハイライト
set showcmd		   " 入力中のコマンドを表示
set number			" 行番号表示

"---------------------------------------------------------
" 補完・履歴
"----------------------------------------------------------
set wildmenu		   " コマンド補完を強化
set wildchar=<tab>	 " コマンド補完を開始するキー
set wildmode=list:full " リスト表示,最長マッチ
set history=1000	   " コマンド・検索パターンの履歴数
set complete+=k		" 補完に辞書ファイル追加
"-------------------------------------------------------------------------------
" 検索設定
"----------------------------------------------------------
set wrapscan   " 最後まで検索したら先頭へ戻る
set ignorecase " 大文字小文字無視
set smartcase  " 大文字ではじめたら大文字小文字無視しない
set incsearch  " インクリメンタルサーチ
set hlsearch   " 検索文字をハイライト
"選択した文字列を検索
vnoremap <silent> // y/<C-R>=escape(@", '\\/.*$^~[]')<CR><CR>
"選択した文字列を置換
vnoremap /r "xy:%s/<C-R>=escape(@x, '\\/.*$^~[]')<CR>//gc<Left><Left><Left>

"---------------------------------------------------------
"その他
"----------------------------------------------------------
" 自動的にインデントする (noautoindent:インデントしない) 
set noautoindent
" バックスペースでインデントや改行を削除できるようにする
set backspace=2
" 検索時にファイルの最後まで行ったら最初に戻る (nowrapscan:戻らない) 
set wrapscan
" テキスト挿入中の自動折り返しを日本語に対応させる
set formatoptions+=mM
" 日本語整形スクリプト(by. 西岡拓洋さん)用の設定
let format_allow_over_tw = 1    " ぶら下り可能幅
" コマンドをステータス行に表示
set showcmd
"esc連打で検索ハイライトを消す
set hlsearch
nmap <Esc><Esc> :nohlsearch<CR><Esc>

"-------------------------------------------------------------------------------
" キーバインド関係
"-------------------------------------------------------------------------------
 
" 行単位で移動(1行が長い場合に便利)
nnoremap j gj
nnoremap k gk
 
" バッファ周り
nmap <silent> <C-l> :bnext<CR>
nmap <silent> <C-h> :bprevious<CR>
nmap <silent> ,l    :BufExplorer<CR>
 
" 検索などで飛んだらそこを真ん中に
nmap n nzz
nmap N Nzz
nmap * *zz
nmap # #zz
nmap g* g*zz
nmap g# g#zz
nmap G Gzz
 
"usキーボードで使いやすく
nmap ; :

"無名レジスタに入るデータを、*レジスタにも入れる。
:set clipboard+=unnamed
"ビジュアルモードの選択テキストをクリップボードに
:set clipboard+=autoselect

"-------------------------------------------------------------------------------
"プラグイン
"-------------------------------------------------------------------------------
"YankRing動かない?
:helptags ~/.vim/doc


gvimrc

"-------------------------------------------------------------------------------
" デザイン
colorscheme desert		 " カラースキーム
set guifont=Monaco:h14		 "font
set antialias			  " アンチエイリアシング
if has('gui_macvim')
  set transparency=5	   " 半透明
endif
set guioptions-=T		  " ツールバー削除
highlight CursorLine ctermbg=black guibg=gray10  " カーソル行の色

" 挿入モード・検索モードでのデフォルトのIME状態設定
if has('gui_macvim')
  set imdisable     
endif
set iminsert=0 imsearch=0

"日本語入力中のカーソルの色
"highlight Cursor guifg=NONE guibg=Green
highlight CursorIM guifg=NONE guibg=Red

" メニューを英語に戻す
"source $VIMRUNTIME/delmenu.vim
"set langmenu=none
"source $VIMRUNTIME/menu.vim

" 様々な箇所を英語に戻す
lang en_gb

"----------------------------------------------------------
" ウィンドウ
set sessionoptions+=resize " 行・列を設定する
set lines=48			   " 行数
set columns=160			" 横幅
set cmdheight=1			" コマンドラインの高さ
set previewheight=5		" プレビューウィンドウの高さ
set splitbelow			 " 横分割したら新しいウィンドウは下に
set splitright			 " 縦分割したら新しいウィンドウは右に

"----------------------------------------------------------
" タブ
set showtabline=0  "タブを常に非表示
map <silent> gw :macaction selectNextWindow:
map <silent> gW :macaction selectPreviousWindow:


"ビジュアルモードの選択テキストをクリップボードにfor gvim
:set guioptions+=a

まだまだ全然満足にはほど遠い状況ではあるけれど、ひとまずここで一区切り。

左肩だけ肩凝りっていう状況を脱するためにも、早く二股をやめて本命一人に絞りたい。
なんだけど、この記事自体をemacsで書いているというこの悲しさ。
まだまだemacsの方が使い心地がいいのは間違いない状態です。
anything.elみたいな方法でファイルを開けるプラグインがあったら、もう迷うことなくvimvim言えるんだけどなぁ。



オレオレdot fileはgithubにも上げてます。
http://github.com/goryugo/my-dot-files/tree/master