挿入モード時のコマンド

はじめに

JVimにはたくさんのコマンドがありますが,挿入モードに関係するコマンドは 意外と少ないと思っていませんか ? とりあえず,文字の入力なんて i a くらいでも何とか使えるものですが, 挿入モードに関するコマンドも,知れば知るほど操作が楽になりますので,ここに 書いてあることを身につければ文章を書くスピードも違ってくると思います

挿入モードに入るには

置き換えモードも挿入モードの一種と考えて,挿入モードに入るコマンドを説明します

まず何と言っても基本は i a ですね. カーソルの文字の直前や直後に 挿入を開始します. なお a i は最初のうちは ちょっと考えてしまってでも 使い分ける習慣 をつけましょう. ちょっとした 違いですが, 慣れてくると使い分けられるのが気持ち良くなってきます

そして I A も非常に便利です. カーソルのある行の先頭や行末に 文字を挿入します. これも慣れれば, ^i とか $a と打つよりも 百倍快適だと思うようになります

新しく行を作るには o とか O ですね. カーソルのある行の下(次の行) または上(前の行)を新しく作って挿入します

その他 c , C , s , S などの変更コマンドも挿入モードを開始させます

数値をつけて挿入コマンドを使うと

たとえば 4a とか 10o と打ってから文字を挿入しても, 入力中は特に変化がないように思えます が エスケープなどで挿入モードを終了させた途端, 最初に打っておいた数値の分だけ挿入内容がくりかえし書かれます. これがどんな時に 便利なのか…と思うかも知れませんが, 80aで"-"一文字を挿入すれば, 区切り線が引けたり, 表のようなものを作る時に, 似たような行が何行も連続する時などに 20o で一行だけ書いておくと勝手に20倍されたりして使える時はそれなりに使えます

挿入モード中のコマンド

挿入モード中は,どの文字を打っても書かれるのでコマンドなんてあまり無いと思って いませんか ? 実は,意外と多くの挿入モード専用のコマンドが あるのです. 初心者でも気軽に使える主なコマンドを以下で紹介します

挿入中の削除コマンド

入力していると,文字を打ち間違えることがあるものですが,いちいちコマンドモードに してから削除していたり,バックスペースを連打したりしていませんか ? 以下の「挿入中の削除コマンド」を覚えましょう

まず CONT-H は, バックスペースと同等の効果が得られます. 慣れると バックスペースの位置に指を動かすよりも快適だと思いますので, こちらを使うことをお勧めします. 通常は, CONT-H は改行してしまった後 では,行をさかのぼって削除できません. でも

:set backspace=1

という設定をしていれば CONT-H 行をさかのぼって削除できるようになります
また, :set backspace=2 としていれば, 「挿入モードを開始する以前から書かれていた文字も」 CONT-H で消せるように なります. お好みに応じて設定すると便利です

次に CONT-W は, 直前の「単語」をまとめて削除します. 大きい単位で 入力内容が取り消せます

入力開始してからのすべての文字を全部削除したい場合は CONT-U で, 全部消えます. 意外とこれも使うものです

挿入位置を変更

普段は,Viは矢印(カーソル移動)上下左右のキーは使いませんが,挿入モード時には 矢印キーで, 自由に挿入場所を変更できます. 挿入中に別の場所を挿入したくなる時に 非常に便利です. ついでに(話はそれますが) Exコマンド入力時にも矢印の左右キーで 入力行の変更などができます. どちらも意外と知られていないですが,知っていると便利です

でも Viの移動キーに慣れてしまった人は カーソル移動に矢印キーを使いたくないと いう人も多いかと思います. こういう時は 別のキー操作にmapしておきましょう. ちなみに 私の設定ファイルには

imap ^B (左矢印キー)
imap ^F (右矢印キー)

([注]すべて制御文字です.)などと書いて使ってます

それから, Page-Up とか Page-Down キー (またはそれに相当するキー) を挿入中に押すと, ページ単位で移動できる場合が あります. (できるかどうかは 端末やその設定によるので 試してみて下さい.)

「本物の」制御文字の入力

通常の文字ではなく,制御文字を入力したい状況も出てくるものです
たとえば,改ページ文字である「本物のコントロール L 」を入れたくなったり カスタマイズ時に map コマンドを手書きしたい時にも必須です

こういう時は
CONT-V を押してから制御キーを押せば,本物の制御文字が入力できます
たとえば コントロールL ならば CONT-V CONT-L という 具合です. 制御文字が入力できるのは CONT-V の次の文字ひとつだけに限ります

挿入モードの終了

「エスケープキーって打ちにくい位置にあるなあ」と思っている人は多いかもしれ ませんが,エスケープキーの代りに CONT-[ を打ってもエスケープキーと 同等の効果となるような設定がされている端末は多いです. 慣れればエスケープ よりも指が楽かも(キーボード配列にもよりますが)

それから,あまり知られていないのは CONT-C で挿入モードが終了 できます. CONT-C は,エスケープキーや CONT-[ と比べると押し やすいと思いますが, CONT-C を気安く押すのに慣れてしまうのはちょっと恐いかも
ただし, CONT-C での挿入終了だと, abbrev コマンドに登録した省略機能は 機能しません…というより "abbrev"を無視させて挿入したい時の為のCONT-C なのです

さらに…これは端末の設定にもよりますが, CONT-3 がエスケープの機能と 同等になっている場合も多いです. (できればラッキー?) エスケープキーよりも指が 楽だと思います. (ちなみに私は, 最近は こればっかり使ってます.)

挿入モードの中断

それから,特殊なコマンドとして,挿入中に CONT-O を押すと,その直後の「一回だけ」 コマンドモードのコマンドが打てます
一回だけのコマンドを実行した後は,再び挿入モードにいるというわけです. これ を使うと,挿入中に CONT-O5H などと打って 挿入モードのままで 別の場所に移動した後も,引続き挿入モードにいることができるのです. ちょっとした 移動だけなら,挿入中の矢印(カーソル)上下左右の ほうが手軽でしょうが, CONT-O の場合は移動コマンド以外のコマンドも使えます
CONT-O: で 任意のExコマンドをひとつ実行して その後また挿入…ということもできます


前項目, 「初期設定ファイルを書こう」へ

目次へ

次項目, 「困った時のための基礎知識」へ