はじめてのテキスト編集いまさら聞けないVim(2)(3/3 ページ)

» 2011年01月13日 00時00分 公開
[後藤大地@IT]
前のページへ 1|2|3       

ノーマルモードなどはviの名残

 初心者がVimを使うと、疑問に思うところがいくつもあるだろう。例えば、ノーマルモードがなぜ必要なのかは、ある程度Vimに慣れた人でも分からないかもしれない。そして、文字を入力するときのモードが「入力モード」や「編集モード」でなく、挿入モードという名前になっていることも疑問に思うだろう。

 これは、Vimが「vi」の機能を拡張したものであるという経緯を知ると理解しやすい。viでは、挿入モードでは文字の入力はできても、削除はできなかった。文字通り挿入だ。挿入すべき文字を間違えて入力したときは、いったんノーマルモードやコマンドラインモードに移行してから文字を削除する。それから、挿入モードに入って正しい文字を入力するのだ。

 また、挿入モードではほかの行に自由にカーソルを移動させることができなかった。[Enter]キーで改行はできても、前の行に戻ったり、編集済みの下の行に移動したりといった操作はできない。つまり、行中での文字の入力には挿入モード、カーソルの移動や削除にはノーマルモード、複数の行を対象に編集処理をするにはコマンドラインモード、といったように明確な区別があったのだ。

 Vimをはじめvi以降に登場したvi拡張エディタは、挿入モードでも文字を削除できたり、カーソルを前後左右に動かせるように機能を拡張してある。その結果、ノーマルモードが必要であると感じにくくなっているのだ。

ありがちなトラブルとその対処策

 メモ帳のようなエディタを使ってきた人が、Vimを使い始めると、キー操作の結果、思いもよらないことになっているということはよくある。理由はいくつも考えられるが、大きな原因としてはVim特有のモードの使い分けに失敗しているということが挙げられる。

Windowsのメモ帳のようなテキストエディタは、Vimで言う挿入モードが標準の状態で、起動すればすぐに文字入力を始められる。

 一方のVimは先に説明したようにノーマルモードが標準になっており、起動直後にそのままテキスト編集を始めることはできない。この違いが、以下のようなトラブルを引き起こす。

 マウスを使って文字列をコピー&ペーストしようとして、狙ったような結果にならないというのは良くある話だ。例えばWebページのURLを貼り付けようとして、ブラウザのアドレスバーのURLをコピーし、Vimに貼り付ける場合を考えてみよう。Vimがノーマルモードのときにペーストしてしまうと、VimはURLの文字列をコマンドとして解釈しようとして、意図しない文字列が編集中のテキストに挿入されたり、コマンドラインモードのコマンド入力部分に中途半端なURLが表示されてしまう。

 テキストをコピー&ペーストしようとしてマウスで選択したら、Vimがノーマルモードや挿入モードから「選択モード」に移ってしまい、思ったように操作できない。今回は詳しく説明していないが、Vimではマウスで編集画面の一部を選択すると選択モードという別のモードに移行する。選択モードに入った後、挿入モードに戻さないで文字列を貼り付けてしまうと、ユーザーの想定とは異なる結果になる。

 [Ctrl]+[V]で文字列を貼り付けられない。何度も押していると編集画面に「^V^V^V^V^V^V」のようなテキストが出てきてしまう。これはVimの問題ではなくターミナルの問題だ。ターミナルでは[Ctrl]+[V]が貼り付けではなく別の機能に割り振られていることがある。この場合は[Ctrl]+[V]では文字列を貼り付けることはできない。そういった場合には[Ctrl]+[Shift]+[V]など別のキーが貼り付けの役目を果たすようになっているので、そちらを利用する。

 実際はノーマルモードにあるが、挿入モードに入っていると思って、画面を見ないでキーボードを打ち始めてしまう。ノーマルモードで文字を入力すると、Vimは一部をコマンドと解釈するので、予期せぬ結果を招くことがある。

 このように困った状況になった場合、これまで繰り返し説明してきたように、とにかく[ESC]キーを押してノーマルモードに戻ることだ。コマンドラインモードになっているときも[ESC]キーを押してノーマルモードに戻るようにする。不幸にも1行まるごと削除してしまっていたり、おかしな文字列を貼り付けてしまったときは、コマンドラインモードで[:][undo]と入力しよう。これで、直前の動作を取り消せる。操作の取り消しをなかったことにして、[:][undo]以前に戻すなら、[:][redo]だ。

コラム:環境変数の設定方法

 Windows版Vimをコマンドプロンプトで使用するには、「vim.exe」が存在するフォルダを環境変数「Path」に登録する必要があります。Windows XPで環境変数を設定するには、デスクトップのアイコン「マイコンピュータ」を右クリックし、「プロパティ」を左クリックします。

 すると、「システムのプロパティ」というダイアログが現れます。その「詳細設定」タブをクリックすると、ダイアログの下部に「環境変数」ボタンが見えます。このボタンを押すと、「環境変数」ダイアログが現れます(図A)。

図A 環境変数ダイアログ 図A 環境変数ダイアログ

 Windows Vista/7の場合は、デスクトップ上にあるアイコン「コンピュータ」を右クリックして「プロパティ」を左クリックすると、コンピュータの基本情報を示す大きめのダイアログが現れます。このダイアログに左端にある「システムの詳細設定」をクリックすると「システムのプロパティ」ダイアログが見えます。その後の手順はWindows XP、Windows Vista/7ともに共通です。

 環境変数Pathを設定するには、ダイアログ下半分にある「システム環境変数」の欄から「Path」という項目を探し、クリックして「編集」ボタンを押します。すると、環境変数の名前と値を設定するダイアログが現れます(図B)。

図B PathにVim.exeがあるフォルダのパスを登録する 図B PathにVim.exeがあるフォルダのパスを登録する

 値の欄には、すでにいくつもの項目が設定してあります。その最前部か最後尾にカーソルを移動させ、vim.exeが存在するフォルダのパスを入力します。このとき、すでに登録してある項目と、新たに登録する項目の間を「;」(セミコロン)で区切ることを忘れないでください。

 環境変数の設定が済んだら、一度Windowsからログオフして、ログオンしなおしてください。これで、コマンドプロンプトからVimを起動できるようになるはずです。


著者紹介

後藤 大地

後藤大地

オングス代表取締役。@ITへの寄稿、MYCOMジャーナルにおけるニュース執筆のほか、アプリケーション開発やシステム構築、『改訂第二版 FreeBSDビギナーズバイブル』『D言語パーフェクトガイド』『UNIX本格マスター 基礎編〜Linux&FreeBSDを使いこなすための第一歩〜』など著書多数。



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。