無題の備忘録

IT技術について調べたことや学んだこと、試したこと記録するブログです。Erlang、ネットワーク、 セキュリティ、Linux関係のものが多いです。

「実践Vim」を読んで学んだこと - 第3章 挿入モード

挿入モードでのコマンドの実行

挿入モードだということで、どのようなことが書いてあるかと思ったら、挿入モードで実行できるコマンドの説明だった。挿入モードで文字を入力することは当たり前すぎるのか、文字入力することに関するTIPSは特殊文字の入力くらいしか書かれていない。Vimを使う上で意識することはキーを押下して文字入力することよりも、コマンドを実行することらしい。

挿入モードでの修正

挿入モードで文字の入力ミスに気づいたら普通は<BackSpace>キーで削除するだろうが、下記のキーストロークでちょっと便利なコマンドで文字の削除ができるようだ。

キーストローク 結果
<C-h> 直前の1文字を削除
<C-w> 直前の1単語を削除
<C-u> カーソル位置から行頭までを削除

ノーマルモードへの復帰

挿入モードは、文字を入力することに特化したモードで、Vimを使うときの大半はやはりノーマルモードだ。ノーマルモードへの復帰方法はいくつか用意されている。

キーストローク 結果
<Esc> ノーマルモードに切り替え
<C-[> ノーマルモードに切り替え
<C-o> 挿入ノーマルモードに切り替え

挿入ノーマルモード

また、知らないモードが出てきた。挿入ノーマルモードとは何だろうか。Vimのモードの概念は、これまで学んできたようにかなり便利だが、特定の状況の場合には、逆に不便に感じることもある。その状況とは、挿入モードにいて、ノーマルモードのコマンドを1つだけ実行してから、また挿入モードで作業を続けてたいという状況だ。

このような状況のためにあるモードが、挿入ノーマルモードだ。

例えば、挿入モードで文書の間に文字を追記中に、カーソル位置の後にある1単語だけを削除したいときに、<Esc>キーで1度ノーマルモードに移動して、dwコマンドで単語を削除をしてから、iで挿入モードに戻るのは面倒だ。

挿入ノーマルモードを使えば、<C-o>dwコマンドを実行するれば済む。このコマンドは<C-o>コマンドで挿入ノーマルモードに移りdwコマンドを1回実行後、自動的に挿入モードへ戻るということができる。

挿入モードで貼り付け

Vimのヤンク操作とプット操作は通常、ノーマルモードから実行される。だが、時には挿入モードから抜けないでドキュメントにテキストを貼り付けたいことがある。

挿入モードでは、<C-r>0を押して、ヤンク済みのテキストを現在のカーソル位置に貼り付けることができる。

このコマンドの一般的な形式は<C-r>{register}となる。{register}は挿入したいレジスタのアドレスであるが、詳しくは後の章で学ぶ。

Expression レジスタ

Vim にはレジスタといって、削除コマンドなどを使うとその削除した複数の行が格納される場所がある。プットコマンドを使って、レジスタの内容をドキュメントに挿入することができる。

このようなレジスタとは異なり、Expression レジスタというものがある。このレジスタVimスクリプトコードを評価して、その結果を返すことができる。そしてこれを電卓のように使える。

Expression レジスタ=記号で表現される。挿入モードからは<C-r>=と入力すればこれにアクセスできる。 例えば、 6*35 の値を入力したい場合、<C-r>=6*35<CR> を入力すると、カーソルの位置に 210 が挿入される。

文字コードによる文字の入力

挿入モードでは、<C-v>u{code} と入力するだけだ。このとき{code}は挿入したい文字を表すコードとなる。4桁の16進コードを使って<C-v>u{1234}のように入力することで、ユニコードに含まれる文字を入力できる。

例えば、疑問符を反転された文字「¿」を入力したいとする。これは文字コード00bfで表現される。挿入モードで<C-v>u00bfと入力するだけで良い。

置換モード

置換モードは、これがドキュメントにすでに入力されているテキストを上書きすることを除けば、挿入モードと同じだ。

ノーマルモードからは、Rコマンドで置換モードに切り替えられる。たぶん、あんまり使わない。

続きは下記のリンクより

stacktrace.hatenablog.jp