VimMemo
自分のためのvi(vim)覚え書き。
もっと詳しいことはVim日本語ドキュメントをどうぞ。
コマンド
編集開始
i | 挿入(カーソル位置から編集) |
I | 行頭(空白除く)に挿入 |
a | 追加(カーソルの次から編集) |
A | 行末に挿入 |
R | 上書き変更 |
o,O | 新しい行を開く |
編集終了
ESC | コマンドモードへ |
ZZ,:wq | 保存して終了 |
:q! | 保存せず終了 |
カーソル移動
hjkl | 上下左右 |
w | 次の語頭へ ( W:記号類を無視) |
b | 前の語頭へ ( B: 〃 ) |
e | 次の語尾へ ( E: 〃 ) |
ge | 前の語尾へ(gE: 〃 ) |
$ | 行末へ |
0 | 行頭へ |
^ | 行頭(空白除く)へ |
fx | 次の「x」へ (find, xは任意の文字) (F:逆方向、「;」で繰り返し、「,」で逆方向に繰り返し) |
tx | 次の「x」の直前へ (to, xは任意の文字) (T:逆方向、「;」で繰り返し、「,」で逆方向に繰り返し) |
% | 対応する括弧へ (カーソルが括弧の上にない場合は、次の括弧へ) |
行移動
G | 最終行へ |
33G | 33行目へ |
gg | 最初の行へ(=1G) |
33% | ファイルの前から33%の行へ |
H | 画面上の最初の行へ(Home) |
M | 画面上の中央の行へ(Middle) |
L | 画面上の最後の行へ(Last) |
`` | 直前の行(マーク)へ戻る |
マーク
Ctrl-o | より古いマークへジャンプ |
Ctrl-i | より新しいマークへジャンプ |
ma | マークaを設定(a〜z) |
`a | マークaにジャンプ |
'a | マークaの行頭にジャンプ |
:marks | マーク一覧 |
スクロール
Ctrl-f, Ctrl-b | 1画面スクロール(forward, back) |
Ctrl-u, Ctrl-d | 画面の半分だけスクロール |
Ctrl-e, Ctrl-y | 1行だけスクロール |
zt, z<Enter> | カーソル行を画面の最初に |
zz, z. | カーソル行を画面の中央に |
zb, z- | カーソル行を画面の最後に |
削除
x | カーソル位置の1文字を削除 |
X | カーソル左の1文字を削除 |
dw | 1単語削除 |
dd | 1行削除 |
D | 行末まで削除(=d$) |
daw | カーソル位置の単語を削除(空白含む) (d + a word) |
diw | カーソル位置の単語を削除 (d + inner word) |
dab or da( or da) | (d + a bracket) |
dib or di( or di( | (d + inner bracket) |
変更
cw | 1単語変更 |
C | 行末まで変更(=c$) |
s | 1文字消して変更開始(=xi) |
S,cc | 1行変更 |
r | 1文字変更 |
J | 次の行をくっつける |
. | 直前の変更を繰り返す |
xp | 2文字の入れ替え (emacsにおけるC-t) |
選択・コピー・貼り付け
v | visualモードへ(hjklで範囲選択) |
V | 行全体を選択してvisualモードへ |
Ctrl-V | visualモードへ(矩形選択) |
o,O | (visualモード中)選択範囲の四隅へ移動 |
yw | 1単語コピー(yank) |
Y,yy | 行全体をコピー |
p | 貼り付け(put) |
P | カーソルの前に貼り付け |
検索
/ | 後方検索 (.*[]^%/\?~$ は、特別な意味をもつので「\.」のようにエスケープが必要) |
? | 前方検索 |
n | 再検索 |
N | 逆方向に再検索 |
* | カーソル位置の単語を検索 |
# | カーソル位置の単語を逆方向に検索 |
Ctrl-O | 前の場所に戻る |
Ctrl-I | 次の場所に進む |
アンドゥ
u | アンドゥ |
U | 行をまとめてアンドゥ |
Ctrl-R | リドゥ |
補完
Ctrl-P | 単語の補完(前方) |
Ctrl-N | 単語の補完(後方) |
インデント
== | この行をインデント |
vで選択中に= | 選択範囲をインデント |
>> | この行のインデントを増やす |
<< | この行のインデントを減らす |
ヘルプモード
Ctrl-] | リンクをたどる(help) |
Ctrl-T or O | 前のページに戻る(help) |
ウィンドウ分割
:sp(lit) | 水平分割(EmacsのC-x 2) |
^Wv | 垂直分割(Vertical) |
^Wo | この窓だけにする(Only, EmacsのC-x 1) |
^Wq | この窓を閉じる(Quit, EmacsのC-x 0) |
^W^W | 別の窓へ(EmacsのC-x o) |
^W+, ^W- | 高さの調整 (8^W+ とかも可) |
^W<, ^W> | 幅の調整 (30^W< とかも可) |
^W= | 同じ大きさに戻す |
バッファ、ファイル
:e ファイル名 | 新しいファイルを編集 |
:b0, :b1, ... | バッファ0,1,..に移動 |
Ctrl-^, :b# | 直前のバッファに移動 |
:buffers | 編集中のバッファ一覧を表示 |
:r | あるファイルの内容をカーソル位置にペースト |
:a | インデントそのままで貼り付け(:a → マウスでvimに貼り付け → ESCで終了) |
その他
Ctrl-G | カーソル位置などの表示 |
tips
このウィンドウだけcdしたいんだけど
:lcd ~/foo/bar
とすると、あるウィンドウだけcdできる。
ウィンドウを縦分割して、左右で違うディレクトリで作業したいときとかに便利。
改行コードが誤認識されているとき
:set ff=dos #なんか「^M」がいっぱい出たとき :set ff=unix :set ff=mac #「^M」がいっぱい出て、かつ全部一行になってるとき
ffはfileformatの略。
なお、dosとunixの改行コードが混在しているようなファイルについては、上のコマンドを実行しても 正しく認識されないことがある。この場合は手作業(もしくはワンライナ等)で直すしかない。
ruby -e 'print ARGF.read.gsub(/\r\n/,"\n")' < before.txt > after.txt
文字コードが誤認識されているとき
以下のようなコマンドで、編集中のファイルを指定した文字コードで開きなおせる。
:e ++enc=euc-jp :e ++enc=sjis :e ++enc=iso-2022-jp
頻繁に誤認識が起こるときは、ずんWikiの設定を~/.vimrc (or %HOME%\_vimrc)にコピーしておくと良い。
あるファイルの種類を指定したいとき
:set ft=html #htmlファイルとして色付け・インデントしたいとき
ftはfiletypeの略。
ファイルの先頭か末尾5行以内に
vim:set ft=html:
などと書いておくと、読み込み時に自動的に種類を指定できるらしい。
編集中のファイルをRubyで加工する
[範囲指定] !ruby を使う。ファイル全体なら
:%!ruby -e 'print ARGF.read.gsub( /before:(.*) after:(.*)/, "\\1 => \\2" )'
とか。
選択範囲だけ加工する場合は
:'<,'>!ruby ...
(vで選択中に:を押すと、'<,'>は自動で入力される。)
キーボードマクロを使う
vimではqコマンドで一連のキー操作をレジスタに保存し,それを@コマンドで実行することができる.
例えばtexで論文を書いていて,「true」や「my-func」のような識別子全てを 「\\|true|」「\\|my-func|」のように囲いたいときは,囲いたい単語にカーソルを合わせて
qk (レジスタkに記録開始) dw (単語の削除) i (入力モードに入る) \|| (囲い) ESC (入力モードを抜ける) h (一文字左へ) P (ペースト) q (記録終了)
とすると,「カーソルの下の単語を\| |で囲む」という一連の操作がレジスタkに保存される.
あとは,文章中の識別子のところで「@k」のように入力するとその単語が\\| |で囲まれる.
カーソルを点滅させない(gvim)
set guicursor=a:blinkon0
from http://moriq.tdiary.net/20051027.html#p01
vim-latex
詳しいことはこのへんを参照
- コマンドモードで\ll とすると自動コンパイル、\lvとするとプレビュー
- 編集モードで「EIT」(element itemize)と書くと、EITが
\begin{itemize} \item \end{itemize}<++>
に置き換えられて、\itemのあとにカーソルが移動する。
最後の<++>は何なのかというと、箇条書きの内容を書き終わったあとに「C-j」を押すと、<++>が消えてそこにカーソルが移動するのである。要するに、begin〜endから出るためにノーマルモードに戻ってカーソルを移動させる必要がない、ということ。
EITでitemizeのほか、EVMでverbatim, EENでenumerate, SSEでsection, SSSでsubsection, SS2で subsubsection、などなど。
小ネタ
- 「*」でカーソル下の単語を検索 (「#」で上方向に検索)
- Ctrl-a, Ctrl-xで数値の増減ができる
カーソル下のファイル名を開く
「gf」。例えば 「hoge.rb」 という文字列にカーソルを合わせて「gf」を押すとhoge.rbを編集できる。
abc ⇔ ABC
~で、カーソル下の文字の大文字と小文字を切り替えることができる。
g~[motion]で、ある範囲の文字を一気に切り替えることができる。例えばg~wで1単語、g~$で行末までとか。
g~~で現在行の大文字と小文字を切り替えることができる。
最後に実行したコマンドをもっかい実行する
「@:」で。
配色が気に入らない、なんか新しい色テーマないの?
- colorscheme [TAB] で選択可能な色テーマが表示される。
新しい色テーマを探すならVim Color Scheme Test が便利(多少重いので注意)。
View on github | Report issue