SuperConが今年も近づいて来たようですが、本選出場者の方々はいかがお過ごしでしょうか。
「大会の環境ではViとEmacsしか使えないらしい><」という悲痛な叫びが聞こえてきたので、Vimを1年半くらい使ってきて、最低限便利に使えると思った使い方を晒してみます。
ただし、
全くもって始めての人へ
$ vimtutor
設定ファイル(.vimrc)について
設定ファイルはホームディレクトリに .vimrc というファイルを置きます。
とりあえず、これだけ書いておけば何とかなるでしょう。
タブ幅の設定を変えたい時は、次のページが参考になります。
Peace Pipe: はてな技術勉強会 .vimrc 説明補足
紙資料の持ち込みは可能だったと思うので、とりあえず印刷しておけばいいのでは?
" おまじない " ----- " Vi互換モードを使わず、Vimとして使う set nocompatible " 表示関係 " ----- " シンタックス・ハイライトを有効にする syntax on " 左端に行番号を表示する set number " インデント関係 " ハードタブ教 & タブは4文字教 の人に最適化 " ----- " 自動インデント等を有効にする filetype plugin indent on " ファイルを開いた時のTab文字(<Tab>, \t)を空白何文字分で表示するか set tabstop=4 " 自動インデントや << or >> で入力されるインデントの幅 set shiftwidth=4 " 入力中にTabキーを押した時、何文字分の空白で表示するか set softtabstop=4 " Tabを空白に変換しない set noexpandtab " 検索関係 " ----- " 検索文字列をハイライトする set hlsearch " 検索する時、大文字と小文字を無視する set ignorecase " 普通は入れなくても動くと思うが、挙動不審なとき用の設定 " ----- " BackSpaceでなんでも消す set backspace=indent,eol,start " 文字コード関係で困ったとき用 set fileencodings=utf-8,eucjp,cp932 set fileformats=unix,dos,mac
起動から終了まで
起動
$ vim file.c
Esc | ノーマルモードに戻る |
:q | 終了する |
:q! | 保存しないで終了する |
:wq | 保存して終了する |
移動関係
カーソルの移動
h | ← |
j | ↓ |
k | ↑ |
l | → |
大きな移動
gg | ファイルの先頭に |
G | ファイルの末尾に |
50G | <数字> + G で、<数字>行目に |
% | 対応するカッコに |
追記
@nise_nabeさんから情報頂きました。
操作に慣れるために ココ とかオススメです。
編集関係
i | カーソルの下の文字の左から |
a | カーソルの下の文字の右から |
o | 次の行を開く |
O | 前の行を開く |
コピペなど
dd | 一行消す(切り取り) |
yy | 一行コピー*2 |
p | 貼り付け |
<v>(普通の選択) や <V>(行単位での選択) と<d> or <y> を組み合わせると、
まとめて切り取り or コピーができます
追記
@uwitenpenさんから『貼り付けはPのほうが直感的な挙動しそう』と教えて頂きました。
自然だと思う方で使って下さい。
検索関係
すべて ノーマルモード or コマンドモード での操作
/<文字列> | 検索する |
* | カーソルの位置の単語を検索 |
:%s/<置換前の文字列>/<置換後の文字列>/gc | 置換する |
補足
検索のときは <n> or <N> で前の候補 or 次の候補に移動
置換のオプションの意味は、
g | ファイル全体(global) |
c | 確認を取る(confirm) |
<V>を使って範囲を指定してから置換を行うのも便利です
補完
<C-n> | 後方から検索して補完 |
<C-p> | 前方から検索して補完 |
実際使ってみると、どちらを使ってもあまり変わりません。押しやすい方でどうぞ。
補完結果が表示されたら、同じように <C-n> or >C-p> で補完結果を選択できます。
redo・undo
u | もとに戻す |
C-r | やり直し |
非対称なので注意しましょう
インデント
ある程度は自動でやってくれると思いますが、整形したい時
== | インデントを1行整形する |
範囲選択してから = | 選択範囲を整形する |
FAQ
端末からコードを貼り付けたい
:a!
としてから貼り付けると、インデントを保ったまま貼り付けることができます
他のファイルを開きたい
:new
で新しいウィンドウ(正確にはバッファ)が開く。
ウィンドウの移動は <C-w> + 移動したい方向(hjklで入力)
差分を見たい時は、端末から
$ vimdiff fileA.c fileB.c
というコマンドを使う
やっぱり(文字コード|改行コード)がおかしい
チューターさんに聞いてください(丸投げ)。
詳しい設定方法は↓に載ってます。
Vim: エンコーディング関係の設定の仕方 - while (”im mirrored”);
Escキーが打ちにくい…
ノーマルモードに戻るためのキーには
Escキーの他にも、<C-[> や <C-c> があります。
(<C-c>の挙動は、Escとは微妙に違うらしい↓
Vimにおける Esc と Ctrl-cの違い。 - 備忘録 beta)
おわりに
だれかEmacs版を書いて下さい。
僕が読みたいので。