目次

vi

コマンド系

:control + f

control + c, control + c

:source ~/.vimrc

ファイル系

:e ++enc=文字コード

 (例):e ++enc=sjis 
* 文字コードを変更して保存する\\ 
  :set fileencoding=utf-8\\ 
  :set fenc=utf-8 
  * 指定可能な文字コード例\\ 
    utf-8, euc-jp, shift_jis 
* 改行文字を指定して保存する\\ 
  :set fileformat=dos\\ 
  :set ff=dos 
  * 指定可能な改行文字\\ 
    dos, mac, unix 
* バイナリモードで開く\\ 
   -b パラメータを付けてファイルを開き 
  <code>vi -b xxx.bin</code> 
  xxd コマンドを実行して、16進数表示し 
  <code>:%! xxd</code> 
  編集したら -r を付けて xxd コマンドを実行して表示モードを元に戻し 
  <code>:%! xxd -r</code> 
  保存する 
  <code>:w</code> 
* 開いているファイルを再読み込み\\ 
  :e! 
* カーソル位置のファイルを開く\\ 
  gf 

検索

/ で検索開始

  Ctrl + r, " でペースト 
* 検索文字列を編集するバッファを表示\\ 
  q/ 
* 大文字・小文字 
  * 識別する: set ic 
  * 同一視する: set noic 

netrw

mf

md

表示系

(常に表示)

  (ファイル名、編集状態、読み取り専用、文字コード、改行コード、行番号) 
  <code>:set laststatus=2 

:set statusline=%<%f\ %m%r%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l/%L,%v</code>

編集系

control + a

~

g~[移動操作]

gu[移動操作]

gU[移動操作]

削除系

dd

3dd

d0

d$

d1G

dG

Undo

u

control + r

移動系

%

H

M

L

スクロール系

zt または z + Enter

zz または z + .

zb または z + -

置換

Ctrl + v, m または Ctrl + v, Enter

\(バックスラッシュ)でエスケープする。

&

正規表現

Mac の場合は option + ¥ で入力する。

複数ファイルにまたがった置換

 
:args **/*.txt 
:args 
:argdo %s/foo/bar/gc | update 

ウィンドウ

:sp

ctrl + w, w

  ctrl  + w, p 
* カーソルがあるウィンドウのみにする\\ 
  ctrl + w, o\\ 
* カーソルがあるウィンドウを閉じる\\ 
  ctrl + w, c\\ 
* ひとつに戻す\\ 
  :q 

分割したウィンドウのサイズ調整

ctrl + w, =

ctrl + w, +

    [数値]ctrl + w, +\\ 
  * カーソルがある方のウィンドウを小さくする\\ 
    ctrl + w, -\\ 
    [数値]ctrl + w, -\\ 
* 水平分割 
  * カーソルがある方のウィンドウを大きくする\\ 
    ctrl + w, >\\ 
    [数値]ctrl + w, >\\ 
  * カーソルがある方のウィンドウを小さくする\\ 
    ctrl + w, <\\ 
    [数値]ctrl + w, <\\ 

タブ

:set tabstop=4

  :set ts=4 
* オートインデント\\ 
  :set autoindent\\ 
  :set ai 
* C言語を意識したオートインデント\\ 
  :set cindent 
* インデント幅\\ 
  :set shiftwidth=4\\ 
  :set sw=4 
* ソフトタブ\\ 
  :set expandtab 

copy & paste

:di

折りたたみ

za

zR

zM

実行系

:r!<command> [<parameter>]

:r!grep -n <検索文字列> <対象ファイル>

grep

vimgrep

ファイルに対して

:vimgrep /検索文字列/j 対象ファイル
:vimgrep /検索文字列/j 対象ファイル | cwin

または

  <code>:vim /検索文字列/j 対象ファイル | cw</code> 
  * 最後に「 | cwin」を付けると、検索後すぐに結果一覧が表示される 
  * 単語検索\\ 
    \<\>で検索文字列を囲む\\ 
    <code>:vim /\<検索文字列\>/j 対象ファイル | cw</code> 
  * ディレクトリ階層を再起的に検索\\ 
    ディレクトリ指定に %%**%% を入れると、そのディレクトリ階層以下のファイルが対象となる\\ 
    <code>:vim /検索文字列/j java/src/**/*.java | cw</code> 
* 検索結果の一覧ウィンドウを開く 
  <code>:copen</code> 
* 検索結果の一覧ウィンドウからファイルを開く\\ 
  カーソルを開きたいファイルに移動して Enter 
* Quickfix の操作\\ 
  * 次の検索結果に移動\\ 
    <code>:cn</code> 
  * 前の検索結果に移動\\ 
    <code>:cp</code> 
  * 開いたファイルを閉じる 
    <code>:ccl</code> 
* vimgrep 実行前にカレントディレクトリを変更する。 
  <code>:cd ~/doc/html</code> 

パッファに対して

:bufdo vimgrepadd /<検索文字列>/ %
:windo vimgrepadd /<検索文字列>/ %

grep コマンドを使う

:r! grep -ir –include “ファイルパターン” “検索文字列” <検索ディレクトリ>

  (例)<code>:r! grep -ir --include "*.rb" "connect" src</code> 
* 指定したディレクトリ以下を再帰的拡張正規表現で検索して、結果をバッファに取り込む\\ 
  :r! grep -Er --include "ファイルパターン" "検索文字列" <検索ディレクトリ>\\ 
  (例) <code>:r! grep -Er --include "*.java" "0x[0-9]+" src</code> 

ソート

:1,$!sort

開始位置でマークする。

  1. (例) 開始位置にカーソルを置き、mx。(xでマークする)
  2. 終了位置で以下をタイプ。
:'x,.!sort

(例) 10行目から20行目までをソート

  <code>:10,20!sort</code> 

スキーマ

  1. ~/.vim/colors ディレクトリを作成。
  2. 作成したディレクトリにカラースキーマファイルをコピー。
  3. :colorscheme <スキーマファイル名>

(ディレクトリ ~/.vim/colors/ と、拡張子 .vim は付けなくてよい)

colorscheme <スキーマファイル名>

Tips

※行頭でなくとも良い。(行頭はイメージをつかみやすくするため)

r!jot -w'(\%d)' 10 
r!ruby -e 'puts (1..10).to_a.join("\n")'

Mac

diff

プロンプトから

  <code>vimdiff <sourcefile> <targetfile></code> 
  または、比較元を開いている状態で 
  <code>:vertical diffsplit <target></code> 
  省略形\\ 
  <code>:vert diffs <target></code> 
* diff を実行してファイル比較し、結果をウィンドウに表示。 
  <code>:r!diff -s -X ~/tmp/diffexcludefiles.txt source/ target/</code> 
  (diffexcludefiles.txt の中身) 
  <code> 

*.gif
*.jar
*.exe
*.dll
</code>

初期設定

拡張子 rb に対して 2桁でのインデント設定

au BufNewFile,BufRead *.rb set tabstop=2 shiftwidth=2 

~/.vimrc

ホームディレクトリの _vimrc

Windows用 Kaoriya版 vim

画面のテーマ

colorscheme koehler 

ホームディレクトリの _gvimrc に記述