Contenu connexe Similaire à (初心者向け) Vim の機能紹介@nagoya.vim #1 (20) (初心者向け) Vim の機能紹介@nagoya.vim #14. 1. Vim とは?
2. 基本的なカーソル移動
3. 基本的な編集
4. オペレータとモーション
5. モード
6. 繰り返し
7. ウィンドウ・タブページ
8. ヘルプ
もくじ
6. Vim ってなんなの ...
● Vim は高機能なテキストエディタ
○ もしくは環境、VM
● モードを持つ
○ カーソル移動やテキストの編集を行うノーマルモード
○ 文字の入力を行うインサートモード
○ 様々な処理を実行するコマンドラインモード
○ などなど
○ (Wikipedia によると全部で 11 のモードがあるらしい)
● カスタマイズ可能
○ Vim script というとても味わい深い言語でカスタマイズ
○ プラグインという仕組み
8. ● h, l, j, k でカーソル移動
● i でインサートモードに入る
● 適当に文字を入力
● <Esc> でノーマルモードに戻る
● :w<CR> で保存
● :q<CR> で終了
今何モードかわからない時はとりあえず、<Esc>を
連打すれば良い。
最低限これだけできれば!
10. カーソル移動(横)
❖ h, l は大丈夫ですよね?
❖ w, b, e, ge
➢ 単語(word)単位の移動
❖ W, E, B, gE
➢ 空白区切り(WORD)の単位の移動
➢ 空白以外の文字の塊が単語(WORD)とみなされます。
※ 単語の定義は ’iskeyword’ オプ
ションで設定
hoge fuga-piyo
wb
hoge fuga-piyo
ge e
11. カーソル移動(横)
❖ f{char}, F{char}
❖ t{char}, T{char}
➢ f,F と同様。ただしカーソルがひとつ手前に来る
❖ ;
➢ 直前の f,F,t,T を繰り返し
❖ ,
➢ 直前の f,F,t,T を逆方向に繰り返し
hoge fuga-piyo hogera
fhFe
faFh
13. カーソル移動(縦)
❖ j, k
❖ {, }
➢ 上(下)の空行に移動 (本当はちょっと違う)
❖ gg, G
➢ 最初(最後)の行に移動
❖ {count}G
➢ {count}行目に移動 (e.g. 100G: 100 行目に移動)
❖ {count}%
➢ ファイルの{count}%の位置に移動 (e.g. 50%: 半分の
位置)
16. ❖ x
➢ 1文字削除 (delete 的なの)
❖ dd
➢ 1行削除
hoge hoe
hoge
fuga
piyo
hoge
piyo
削除
※ 行削除した後カーソルがどこに
移動するかは 'startofline'
オプションの値に依存する
※ Vim の削除は他のエディタにおける「切り取り」に近い。
つまり、削除したテキストをあとで貼り付けられる。
本当の削除には "_d を使う。
17. 削除
❖ dw
➢ 単語を削除
➢ カーソルの位置から次の単語の先頭の一つ前まで削除
❖ d$
➢ 行末まで削除
quick brown fox quick fox
quick brown fox quick bfox
quick brown fox quick
23. オペレータコマンド
❖ d
➢ 削除
❖ y
➢ ヤンク
❖ c
➢ 削除した後インサートモードになる
❖ >, <
➢ インデントを増加/減少(行にしか作用しない:行指向)
❖ =
➢ インデントを自動調整(行指向)
24. 組み合わせ例
❖ d2w
➢ 2単語分削除(2dw と同じ)
❖ yfa
➢ 前方の最初の a までヤンク
❖ ct)
➢ 前方の ) のひとつ手前まで削除してインサートモードに
なる
❖ 3>>
➢ 3行分のインデントを増加(>2j でも同じ)
❖ =G
➢ 最終行までのインデントを自動調整
26. テキストオブジェクト
❖ a), i)
➢ () で囲まれた範囲
➢ a) は a( にしても同じ
➢ a は ) 自身も含める
➢ ) をいろんな括弧に変えてみよう (e.g. }, ], >)
function() {
var a = 0;
a++;
return a;
}
>i}
function() {
var a = 0;
a++;
return a;
}
27. その他のテキストオブジェクト
❖ at, it
➢ HTML とかのタグ (e.g. <p></p>) に囲まれた範囲
❖ aw, iw
➢ 1単語の範囲
❖ aW, iW
➢ 1単語(WORD)の範囲(≒空白区切りの範囲)
❖ ap, ip
➢ 段落の範囲(≒空行の間の範囲)
33. ❖ インサートモードの入り方
➢ i : カーソルの前の位置
➢ a : カーソルの後ろの位置
➢ o : カーソルの下の行
➢ O : カーソルの上の行
➢ s : 1文字削除してその位置
➢ S : 行削除してその行
インサートモード
hoge ho|ge
hoge hog|e
hoge hoge
|
hoge |
hoge
hoge ho|e
hoge |
34. インサートモード
❖ インサートモードの入り方(続き)
➢ I : 行の先頭(非空白文字)から挿入
(インデントのスペースやタブより左には行かない)
➢ gI : 本当に行頭から挿入
➢ A : 行末に挿入
➢ gi : 最後に挿入された位置から挿入(デモ)
➢ c{motion} : ある範囲のテキストを削除して挿入
hoge |hoge
hoge | hoge
hoge hoge|
37. ビジュアルモード
❖ V (大文字)
➢ 行ビジュアルモード
❖ <C-v>
➢ 矩形ビジュアルモード
The quick brown fox
jumps the lazy dog.
V The quick brown fox
jumps the lazy dog.
The quick
brown fox
jumps the
lazy dog.
40. コマンドラインモード
● :w とか :q とかを実行するためのモード
○ Ex コマンドやコロンコマンドやコマンドラインコマンドと呼
ぶ
● ファイル操作、検索、置換など割りと複雑なこと
を行うためのモード
41. ファイル操作
❖ :write
➢ 上書き保存
➢ 省略して :w
❖ :quit
➢ 現在のウィンドウを閉じるコマンド
➢ Vim の終了コマンドではない!
➢ 省略して :q
❖ :save {file}
➢ いわゆる名前を付けて保存
➢ :w {file} とは微妙に違う
❖ :edit {file}
➢ ファイルを開く
42. 検索と置換
❖ /{pattern}
➢ {pattern} を前方検索
➢ 移動コマンドとしても使えるので d/hoge といったことも
可能
❖ ?{pattern}
➢ / の後方検索バージョン
❖ :%s/{pattern}/{string}/g
➢ ファイル全体から{pattern}を検索して{string}に置
換する
➢ 実は区切りは / でなくても良い
■ :%s#/#hoge#g → / を hoge に置換
44. 単発繰り返し
❖ . (ドット)
➢ 直前のコマンドを繰り返す
hoge fuga piyo
dw
fuga piyo
.
piyo
println(msg)
println("hoge fuga")
println(obj.toString())
println()
println("hoge fuga")
println(obj.toString())
di)
println()
println()
println()
j.j.
49. ウィンドウ分割
❖ :split {file}
➢ {file} を水平分割で開く
❖ :vsplit {file}
➢ {file} を垂直分割で開く
❖ <C-w>w
➢ 別のウィンドウへカーソルを移動
➢ <C-w><C-w> でも良い
50. タブページ
※ 単にタブというと <Tab> 文字のことになるので注意
❖ :tabedit {file}
➢ {file} を新しいタブページで開く
❖ gt, :tabnext
➢ 次のタブページヘ
❖ gT, :tabprevious
➢ 前のタブページヘ
53. ヘルプの使い方
❖ :help
➢ ヘルプドキュメントの目次を開く
❖ :help w
➢ w というコマンドについて調べる
❖ :help ^w
➢ <C-w> というコマンドについて調べる
❖ :help :w
➢ :w という Ex コマンドについて調べる
❖ :help {topic}
➢ {topic} で検索した結果について調べる
54. 初心者におすすめの :help の記事
❖ :help usr_01
➢ ユーザマニュアル
➢ 基本から応用まで Vim について学べる
➢ usr_01 から usr_12 まで順番に読むと良い
➢ 「Vim テクニックバイブル」や「実践 Vim」よりもまずは
ユーザマニュアルを読む
❖ :help quickref
➢ いわゆるチートシートのようなもの
❖ :help option-list
➢ Vim のオプションの一覧
➢ vimrc 書くときに便利