Vimについて
基本操作
h, j, k, l [左下上右]へ移動 gj 表示行単位で移動(↓) gk 表示行単位で移動(↑) ^ 行頭へ移動 $ 行末へ移動 % 対応する括弧へ移動
UNDO(元に戻す)・REDO(元に戻したものを戻す)
u undo(アンドゥ)一動作分、前の状態に戻す。 Ctrl + r redo(リドゥ)。アンドゥで戻した操作を、元に戻す。
移動
ファイルの端っこへ移動 gg ファイル先頭 G ファイル末尾 0 行頭 $ 行末 半分移動 Ctrl-u 半画面戻る Ctrl-d 半画面進む 画面の端っこへ移動 H 画面最上に戻る L 画面最下に進む n行移動 [n]k n 行戻る [n]h n 文字戻る [n]l n 文字進む [n]j n 行進む
削除
単語を削除して、入力モードに
x カーソル上の1文字削除 X カーソルの左の文字を1文字削除 dw カーソル位置から空白を含む単語の末尾まで削除 de カーソル位置から空白を含まない単語の末尾まで削除 d$ カーソル位置から行末まで削除 dd 1行削除切り取り(カット) cw 単語単位で、文字を削除し、「i」を押さずとも、入力モードに切り替えることができます。
コピー
複数行コピー
1. ms <開始行で> 2. me <終了行で> 3. :'s,'ey <コピー> 4. p <貼り付け>
置換
文字単位
r全体単位
:%s/{置換前文字}/{置換後文字}/[オプション]
:%s/hoge/hogehoge/cgl
g 行の中でマッチしたすべての文字を置換する c マッチするたびに置換するかどうか聞く i 大文字小文字のを無視する I 大文字小文字を判別する n 該当する箇所が何箇所あったか教えてくれる、教えてくれるだけで置換は行わない
編集
o 次の行を空けてインサートモード O 前の行を空けてインサートモード r 一文字だけ置き換えたいとき w 次の単語の頭に移動(Wでもうちょっと距離) b 前の単語の頭に移動(Bでもうちょっと距離) e 次の単語の末尾に移動 ea 現在の単語の直後に入力
ハイライト
* 単語の上で*を押すと同じ単語をハイライトしてくれます(移動はn 消す場合は、:noh)
インテント修正
= その行のインデント位置を自動修正
一般ユーザで開いたファイルを管理者権限で保存する方法
:w !sudo tee %
ファイルを閉じたあとでも、過去の編集履歴をUndoコマンドで遡れるようにする。
mkdir -p ~/.vim/undo
.vimrcに下記を追加
if has('persistent_undo') set undodir=~/.vim/undo set undofile endif
vimrc
set nocompatible "vi非互換モード "####################### " 表示系 "####################### "set number "行番号表示 set showmode "モード表示 set title "編集中のファイル名を表示 set ruler "ルーラーの表示 set showcmd "入力中のコマンドをステータスに表示する set showmatch "括弧入力時の対応する括弧を表示 set laststatus=2 "ステータスラインを常に表示 set cursorline "横線 "set cursorcolumn "縦線 "highlight CursorColumn ctermfg=Green "####################### " プログラミングヘルプ系 "####################### syntax on "カラー表示 set smartindent "オートインデント " tab関連 set expandtab "タブの代わりに空白文字挿入 set ts=4 sw=4 sts=0 "タブは半角4文字分のスペース " ファイルを開いた際に、前回終了時の行で起動 autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g`\"" | endif "####################### " 検索系 "####################### set ignorecase "検索文字列が小文字の場合は大文字小文字を区別なく検索する set smartcase "検索文字列に大文字が含まれている場合は区別して検索する set wrapscan "検索時に最後まで行ったら最初に戻る set noincsearch "検索文字列入力時に順次対象文字列にヒットさせない set nohlsearch "検索結果文字列の非ハイライト表示 "###################### "全角空白 "###################### highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=darkgray match ZenkakuSpace / /
vimrc 再読み込み
:source $MYVIMRC or :source ~/.vimrc