肝心の文字入力である。 入力はviモードで行う。 編集モードで入力箇所までカーソルを移動させて、「i」を入力してviモードに移行、 あとは普通にキー入力していけばよい。 入力が終わったらESCキーを押して編集モードに戻る。
先のモード移行の説明では述べなかったが、実は「i」以外にもviモードに移行する操作がある。 次に示すようなものである。
コマンド | 動作 |
---|---|
i |
カーソル位置に入力 |
a |
カーソル位置の次の場所に入力 |
I |
行頭に入力 |
A |
行末に入力 |
o |
下に空白行を一行作り、その先頭から入力 |
O |
上に空白行を一行作り、その先頭から入力 |
例えば、次の文中に文字を入力したいとする。カーソルは「eternal」の先頭のeにある。
That is not dead which can eternal lie,
ここに次のように入力する。 番号付けしているが、順番に入力するという意味ではなく、 同じ条件で別々に操作すると考えていただきたい。
<i>hogehoge<ESC>
<a>hogehoge<ESC>
<I>hogehoge<ESC>
<A>hogehoge<ESC>
<o>hogehoge<ESC>
<O>hogehoge<ESC>
That is not dead which can hogehogeeternal lie,
That is not dead which can ehogehogeternal lie,
hogehogeThat is not dead which can eternal lie,
That is not dead which can eternal lie,hogehoge
That is not dead which can eternal lie,
hogehoge
hogehoge
That is not dead which can eternal lie,
だいたいはiで事足りるが、行末に文字を追加入力する場合はaAを使わざるを得ない。 なぜなら、「行末の次の位置にカーソルを置く」という操作はできないからだ。 まぁ実際に試してもらえればわかるはず。
人間、入力ミスぐらいやって当然なので、それを帳消しにすることも必要である。 ここでは文字の削除方法についての説明を行う。
削除といえば、通常はDELキーかBS(Back Space)キーを使うのだが、viはやはり独自の削除方法がある。
コマンド | 動作 |
---|---|
x |
カーソル位置の文字を削除 |
X |
カーソル位置の一つ手前の文字を削除 |
例えば、次の文を考える。カーソルは「eternal」の先頭のeにある。
That is not dead which can eternal lie,
ここで1.「x」、2.「X」を叩くと、それぞれ次のようになる。
That is not dead which can ternal lie,
That is not dead which caneternal lie,
1.はカーソル位置のeが、2.はカーソル手前の半角スペースが消えている。
viモードでは、BSキーでも文字を削除できる。 入力ミスするたびにviモードから編集モードに移行してx押して削除、 という段取りを踏むのはさすがに面倒なので、こっちの方が重宝するだろう。
試してもらえるとわかるが、適当な行でxを押し続けて1文字残らず削除しても、 その行自体は消えない。 行を消すためにはちゃんと「行を削除する」という操作を行う必要がある。 行削除は、削除したい行にカーソルを移動して、次のように打てばよい。
「行数」dd
現在のカーソル位置から、指定した行数だけ削除される。
「行数」を指定せず単にdd
とだけ打てば、一行だけ削除される。
文字削除、行削除とも、正確には「切り取り(カット)」に当たる操作である。 ここで削除された文字は、ヤンクバッファ(クリップボードみたいなもの)に保存され、 後に「貼り付け(ペースト)」に使うことができる。 ヤンクバッファを使わずにただ消すだけ、という操作はできない。 というか、そんな操作が必要になる場面はほぼ皆無である。 詳細は別途。