文書の過去の版を表示しています。
vim
プラグイン
~/.vim/plugin
に入れるだけ
- rails.vim - Rails用のプラグイン
- svncommand.vim - SVNを操作する
- closetag.vimg - HTML/XMLタグを閉じる
- quickrun.vim - その場で実行する
vimrc
Mac の vim のデフォルト設定は非常に寂しいので色々設定してやる。ホームディレクトリに.vimrc
を作って以下の記述
" ライン番号を表示 set number " タブ幅制御 set tabstop=4 set softtabstop=4 set shiftwidth=4 " タブをスペースで入力(タブを入力する時はCtrl-v tab) set expandtab=on " 折り返しの設定 set nolinebreak set nowrap " ステータス行の表示 set laststatus=2 " シンタックスハイライト syntax on " ファイルタイプ別の設定 filetype on filetype indent on filetype plugin on " 検索結果をハイライト set hlsearch " インラインモードでCtrl Spaceを押したらノーマルモードに戻る imap <C-space> <ESC> " ノーマルモードでCtrl a、Ctrl eで行頭、行末へ移動 "nmap <C-a> 0 "nmap <C-e> $ " 行頭、行末への移動をシェルと同じに map <C-a> <Home> map <C-e> <End> " CJK記号の幅を調整 set ambiwidth=double
色々設定があるので試して自分好みに改良してみるがよろし。以下の設定は環境によって最初から有効になってる場合もある
" 一番下まで検索したら最初の検索結果に戻る set wrapscan " インサートモード時にバックスペースで空行を削除できる set backspace=2
インデント制御
<html> <dl> <dt>autoindent</dt> <dd>改行したときにインデントを前の行と同じにする。</dd> <dt>smartindent</dt> <dd>C言語風のインデントを自動的に行うが、C言語系の場合はcindentを使うのが良い。CSSの編集に相性が良い</dd> <dt>cindent</dt> <dd>smartindentより高度なC言語風のインデントを自動的に行う。C言語はもちろんJava等のC風シンタックスの言語に有効。</dd> </dl> </html>
ただし各言語用のindent定義が最初から入っているので上の設定は不要
filetype on filetype plugin on filetype indent on
としておく
ファイルタイプ別の設定
例えばvimrcでインデントがスペース4つ分のタブに設定されているが、rubyファイルを編集する時はインデント幅を2スペースにし、タブではなくスペースを使いたいというならば、~/.vimrc
に以下を追記
filetype on filetype plugin on
~/.vim/ftplugin/ruby.vim
というファイルを作成し、
setlocal expandtab setlocal shiftwidth=2 setlocal tabstop=2 setlocal softtabstop=2
setではなくsetlocalを使うこと。setでは.vimrcの設定を完全に上書きし、rubyファイルと同時に他の種類のファイルを開くとそちらにも影響してしまう。
コマンドいろいろ
ノーマルモード
分割画面の移動は
Ctrl-w p 画面間の移動 Ctrl-w k 上の画面に移動 Ctrl-w j 下の画面に移動 Ctrl-w l 右の画面に移動 Ctrl-w h 左の画面に移動
サイズ調整は
Ctrl-w + 選択中の画面を一行分大きくする Ctrl-w - 選択中の画面を一行分小さくする Ctrl-w = 画面のサイズを同じにする
指定の文字までカット
df 指定文字
繰り返し
.
カーソルの下の文字列をパスとみなしてファイルを開く
gf
コマンドモード
今開いているエディタに指定のファイルの中身をコピー
:read filename
分割オープン
:split filename :vsplit filename
一時的にシェルへ(exitでviに戻る)
:shell :sh
コマンド実行
:!cmd
文字コードを指定して再読み込み
:e ++enc=utf8
ファイルタイプを指定(シンタックス指定)
:set filetype=html
タブ・スペースの変換
:retab
ここみれ http://tonetsutomu.com/tone/linux/Reference/Vi/ViReference1.htm
RSpecを実行する
rspec.vimというファイルを作って ~/.vim/plugin/ に設置
function RunRspec () :!rspec -cfs % endfunction function RunRspecLine () exe '!rspec -cfs -l ' . line('.') . ' %' endfunction au BufRead,BufNewFile *_spec.rb :command! Rspec :call RunRspec() au BufRead,BufNewFile *_spec.rb :command! Rspecl :call RunRspecLine() function RunSpec () :!spec -cfs % endfunction function RunSpecLine () exe '!spec -cfs -l ' . line('.') . ' %' endfunction au BufRead,BufNewFile *_spec.rb :command! Spec :call RunSpec() au BufRead,BufNewFile *_spec.rb :command! Specl :call RunSpecLine()
:Rspecで今開いているRSpecファイルを全体を、:Rspeclで現在カーソルのある行を含むテストケースをRSpec2で実行する。RSpec1を実行したい場合は、:Spec、:Specl