トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

VimTips

Vim Tips

 設定

<ESC><ESC> でハイライト解除

set hlsearch
nmap <Esc><Esc> :nohlsearch<CR><Esc>

ステータスラインに文字コードと改行コードを表示

"set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P
set statusline=[*%n]\ %<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P

ファイル保存時に折り畳み情報を保存

set viewdir=~/.vim/view
au BufWritePost * mkview
"au BufWritePost * call MkViewIfHasFold()
autocmd BufReadPost * loadview

加減算コマンド(Ctrl+a,Ctrl+x)にアルファベットや 8/16 進数を追加

"alpha アルファベット
"octal 8進数
"hex   16進数
set nrformats+=alpha
set nrformats+=octal
set nrformats+=hex

% での移動に <> も追加

"下の3つはdefaultで移動可能
"{}
"[]
"()
set matchpairs+=<:>

バックアップファイルの位置

set backupdir=$VIM/vimtmp

スワップファイルの位置

set directory=$VIM/vimtmp

vimrc/gvimrc の読み込みと反映

if has("win32")
   let vimrc="$VIM/vimrc"
   let gvimrc="$VIM/gvimrc"
endif
map ,u :source <C-R>=vimrc<CR><CR>:source <C-R>=gvimrc<CR><CR>
map ,g :edit   <C-R>=gvimrc<CR><CR>
map ,v :edit   <C-R>=vimrc<CR><CR>

ファイル整形(オートインデント)

map <C-i> migg=G'i

タブ操作

map <C-t> :tabnew<CR>
map <C-n> :tabnext<CR>
map <C-p> :tabprevious<CR>
map <C-d> :tabclose<CR>
imap <C-n> <ESC>:tabnext<CR>
imap <C-p> <ESC>:tabprevious<CR>
imap <C-t> <ESC>:tabnew<CR>
imap <C-d> <ESC>:tabclose<CR>

ファイル名を付けて保存(KaoriYa 版 GVIM のみ?)

map <C-s><C-a> :browse confirm saveas<CR>
imap <C-s><C-a> <ESC>:browse confirm saveas<CR>a

インテリジェンス機能

"imap <TAB> <C-X><C-O>
"imap <C-TAB> <C-X><C-O>
imap <C-TAB> <C-X><C-I>
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd Filetype ruby set omnifunc=rubycomplete#Complete
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete
autocmd FileType sql set omnifunc=sqlcomplete#Complete
autocmd FileType html set filetype=xhtml
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags

表示上のタブ幅を4文字相当に設定

set tabstop=4

>> や << の際のインデント幅を4文字分に設定

set shiftwidth=4

grep や :make の実行後、自動的に QuickFix ウィンドウを開く

au QuickfixCmdPost make,grep,grepadd,vimgrep,helpgrep copen
au QuickfixCmdPost l* lopen

表示行単位で行移動する

nnoremap j gj
nnoremap k gk
vnoremap j gj
vnoremap k gk

内臓 grep を使わず GNU Grep を使う

set grepprg=grep.exe\ -nH

Ctrl + マウス左右クリックでフォントを大きくしたり小さくしたりする

map <C-LeftMouse> :set guifont=MS_Gothic:h12:cSHIFTJIS<CR>
map <C-RightMouse> :set guifont=MS_Gothic:h20:cSHIFTJIS<CR>

プラグイン

  • howm.vim
"set runtimepath+=$VIM/runtime/plugin
let g:howm_dir = 'howm'
"let g:howm_grepprg=''
"let g:howm_findprg=""
let g:howm_removeEmpty=1
"let g:howm_instantpreview = 0
  • calender.vim
"週番号表示
let g:calendar_weeknm=1
"カレンダーディレクトリ指定
let g:calendar_diary='diary'
"月
let g:calendar_mruler ='睦月,如月,弥生,卯月,皐月,水無月,文月,葉月,長月,神無月,霜月,師走'
"let g:calendar_mruler ='JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER'
"let g:calendar_mruler ='Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'
"let g:calendar_mruler ='睦月:Jan,如月:Feb,弥生:Mar,卯月:Apr,皐月:May,水無月:Jun,文月:Jul,葉月:Aug,長月:Sep,神無月:Oct,霜月:Nov,師走:Dec'
"曜日
let g:calendar_wruler = '日 月 火 水 木 金 土'
"let g:calendar_wruler = 'Su Mo Tu We Th Fr Sa'
  • skk.vim
let skk_jisyo = '$VIM/dict/skk-jisyo'
let skk_large_jisyo = '$VIM/dict/SKK-JISYO.L'
let skk_auto_save_jisyo = 1
let skk_keep_state = 0
let skk_egg_like_newline = 1
let skk_show_annotation = 1
let skk_use_face = 1
  • Viki
let g:vikiNameSuffix=".viki"
autocmd! BufRead,BufNewFile $VIM/Viki/* set filetype=viki
let g:vikiHomePage =$VIM . "/Viki/index.viki"

 コマンド

ファイルを暗号化する

vim -x secret.txt

暗号化を解除する、もしくはパスワードを変更する

:X

折畳み

コマンド 動作
zf 折り畳みを作成する
zo カーソル位置の折り畳みを開く
zO カーソル位置の折り畳みを再帰的に開く
zr 折り畳みを開く
zR すべての折り畳みを開く
zc カーソル位置の折り畳みを閉じる
zC カーソル位置の折り畳みを再帰的に閉じる
zm 折り畳みを閉じる
zM すべて折り畳みを閉じる
za 折り畳みが閉じていれば開き、開いていればそれを閉じる
zA 折り畳みが閉じていれば再帰的に開き、開いていればそれを再帰的に閉じる
zd カーソル下の折り畳みを削除する
zD カーソル下の折り畳みを再帰的に削除する
zE そのファイルの折り畳みをすべて削除する
zi 折り畳みの有効・無効を切り替える

画面分割

コマンド 動作
CTRL-W s 画面を縦に二分割する(split)
CTRL-W v 画面を横に二分割する(vsplit)
CTRL-W n 画面分割し新規ファイルを作成
CTRL-W ^ 画面分割し#がついているバッファを表示
CTRL-W c カレント画面を閉じる(close)
CTRL-W q カレント画面を閉じる(quit)
CTRL-W j 下の画面に移動する
CTRL-W k 上の画面に移動する
CTRL-W h 左の画面に移動する
CTRL-W l 右の画面に移動する
CTRL-W w 次の画面に移動する
CTRL-W W 前の画面に移動する

空白行の削除(1)

:g/^$/d

空白行の削除(2)

:'<,'>s/^$\n/

バイト単位移動

1700go

or

:go 1700

何バイト目にいるかを調べる

g CTRL-G

全てのウィンドウを閉じる

:qall

全てのウィンドウを保存して閉じる

:wqall

^M を削除する

:%s/^M//g

^M の入力は Ctrl+V、Ctrl+M

インデントを一つ浅くする

<<

インデントを一つ深くする

>>

複数のファイルにある文字列を一括で変更する

対象のファイルを設定する。以下の例だと全ての HTML ファイルを指定。

:args *.html

フォルダ内も対象にする場合は以下のようにする。

:args **/*.html

対象となるファイルを確認するには以下のようにする。

:args

実際に変更する場合は以下のようにする。例では対象のファイルにある全ての hoge を fuga に変更する。

:argdo %s/hoge/fuga/g | update