テキストエディタ
1 はじめに
前回までで、ファイルやディレクトリを操作することができるようになりました。 しかし、まだファイルを作成したり編集したりすることができない状態です。 目標であるHello Worldを動かすためには、まずソースコードを書かなければいけません。 現代のプログラミングではソースコードを書くためには、テキストエディタと呼ばれるソフトウェアが使われます。 このページではviとeeというテキストエディタの使い方を解説します。
もし、すでに使用しているテキストエディタがあって、新たに覚える必要がないのであれば、キーボードレイアウトを変更するに飛んで下さい。
2 テキストエディタとは
テキストエディタとは文書を編集するためのソフトウェアです。 要はWindowsのメモ帳のようなソフトウェアです。 文書といってもMicrosoftのWordのようなワープロソフトとは違います。 テキストエディタが扱うのはプレインテキスト; plain textです。 プレインテキストで構成された情報が保存されたファイルをテキストファイルと呼ぶことにします。
2.1 文字について
テキストファイルに含めるのは文字です。 文字とは「a」とか「#」とか、あるいは日本語の文字である「あ」とか「猫」とかです。 コンピュータが直接扱えるのは0と1だけであり、これらの文字も実際には0と1で構成されたものです。 人間が0と1で直接文字を扱うのは不便すぎるので、画面にはデータとして保持するものを文字に変換して表示されます。 どのような0と1のパターンが、どの文字に対応するか定めたものを文字コードと呼びます。
特に知っておくべきものとしてはASCIIやUnicodeのようなものがあります。 ASCIIは、だいたいは英数字と基本的な記号を定めたもので、キーボードに印字された文字と一致するので感覚的に理解しやすいです。 Unicodeは、世界中の言語の文字や多くの記号を定めたもので、最近は主流になってきています。 ただASCIIとUnicodeを一緒くたんに文字コードと言ってしまうのは乱暴です。 符号化文字集合と文字符号化方式という分類があります。 符号化文字集合は、文字に番号を割り当てるものです。 文字符号化方式は、文字の番号をどのように0と1のデータに変換するかというもので、文字エンコーディング方式とも呼ばれます。
2.1.1 ASCII
ASCIIは符号化文字集合の番号と実際のデータが一致するものです。 つまり、Aは10進数の97であり、ASCIIに定められた番号も97であるということです。
2.1.2 Unicode
Unicodeは符号化文字集合の名称です。 Unicodeを扱う文字符号化方式にUTF-8があります。 他にもUTF-32やUTF-16があります。
これだけではなんのことか分からないと思うので例を示してみます。 「猫」という文字を考えます。 まず「猫」にはUnicodeで16進数の732Bという番号が割り当てられています。 これを「U+732B」のように書いて「Unicodeの732B番の文字だ」だという意味を明確にします。 そして、それをUTF-8の方法でデータに変換すると16進数で「E7 8C AB」という並びになります。 もし、テキストエディタで「猫」を入力してファイルに保存したら、そのファイルにはE78CABのようなデータが書き込まれていることでしょう。 逆に、今度はテキストエディタさっき保存したファイルを開いたときには、E78CABというデータを読み込んで、UTF-8の方式に従い、U+732Bという番号を見つけて「猫」という文字を画面に表示します。
2.1.3 テキストエディタにとっての文字
テキストファイルにはいずれかの文字コードで表現されたデータが保存されています。 テキストファイルは結局のところ、コンピューターにとっては0と1からなるデータの並びにすぎません。 それをどう解釈するかはソフトウェアの仕事です。 テキストエディタはその仕事をやってくれます。 データの並びを文字として画面に表示したり、入力された文字をデータにしてファイルに保存したりします。
2.1.4 理想と現実
ASCIIとUnicodeでは大きな違いがあるように思えます。 理想的には、どちらのものであっても正しく保存したり読み込んだり編集したりできることが望まれます。 ASCIIを扱えないテキストエディタというのはまず存在しません。 少なくとも遭遇したことありません。
コンソール用のテキストエディタにはUnicodeを扱えないものが結構あります。 UTF-8に対応していると謳っているものにも日本語を正しく処理できなかったりするものもあります。 しかし、現段階でそんなに気にすることはないでしょう。 今のほぼ初期状態のFreeBSDでは、日本語を入力することも表示することもできません。 いくらテキストエディタが対応していても、今のFreeBSDのコンソールではその価値を発揮できません。 幸か不幸か、ASCII文字さえ扱えれば一応プログラミングは可能です。
テキストエディタに求める最低限の機能は、使用する文字を扱えることです。 今はASCII文字しか使用しないので、ほぼ全てのものがクリアしていると考えることができます。
2.2 ソースコードとテキストファイル
プログラムのソースコードはテキストファイルです。 文字のみを含んでいます。 画像や音楽を含めることはできません。 技術的には可能でしょうが、そんなことはしません。
なので、文字を扱えるものならなんでもソースコードを編集するのに使えます。 しかし、ワープロソフトのようなものは使えません。 ワープロソフトは文字を入力できますが、装飾などのためのデータも含んでいます。 そのため、ワープロソフトが作成するファイルは見た目通り文字のだけのテキストファイルになりません。 したがって、ワープロソフトはテキストファイルを扱うものとしてはみなせません。
使うべきものは、テキストファイルをメインに扱うものです。
2.3 どのようなテキストエディタが良いのか
今必要とするのは、使い方が簡単なテキストエディタです。
有名なものに、何度も例に上げてきたWindowsに付属しているメモ帳というのがあります。 これもれっきとしたテキストエディタです。 ソースコードを編集するためにも利用可能です。
しかし、プログラミングのためにメモ帳を利用することには否定的な意見が多いです。 その最大の理由は 機能が乏しいことにあるかと思います。 例えば、コードを色付けしてくれたりしないというものです。 世の中には無料で利用できるもっとプログラミングに適したエディタが存在するのに、なぜメモ帳みたいな貧弱なものを使っているのか、情報を収集する能力に欠けているのではないか、と非難されるのです。
初めてプログラミングをするのであっても、最初から使えるからというだけの理由で使うべきではないのでしょうか。 そうは思いません。 最初から使えるというのは十分に使う理由になります。 とりあえず使ってみて機能不足に感じてから別のものを探しても十分間に合います。 それにメモ帳には余計な機能がほぼ入っていないため、使い方が極めて簡単です。 特殊なトレーニングをする必要もありません。 プログラマっぽくないからと恥じる必要は全くありません。 そもそもテキストエディタなど何を使おうが個人の勝手です。
残念ながら、今まで使ってきた仮想マシンのFreeBSDには、メモ帳ほど使い方が簡単なテキストエディタは最初からは用意されていません。 もちろんメモ帳はWindowsでしか使えません。 当初はmicroというテキストエディタの使用を予定していました。 これはメモ帳に匹敵するくらい使い方が簡単で、しかもプログラミングに適した機能も搭載されています。 しかし、いざ試してみるとFreeBSDのキーボードの入力の扱い方に難があり、まともに使用できるようにするにはちょっとした作業が必要になることが分かりました。 そこで、余計な手間を増やしたくないのでviとeeというテキストエディタを使うことにしました。 決して使い方が一番簡単という訳でも機能が豊富な訳でもありません。 最初から入っているという理由からです。
3 テキストエディタの選択肢
このページではviとeeを解説するのですが、だからといってこれを使わなればいけないということではないです。 むしろ好きなものを使うべきだと考えています。
選択肢の幅を広げるために、他にどのようなものがあるのか紹介しておきます。
3.1 人気があるテキストエディタ
最近のインターネットでのトレンドは以下のようなものです。
- Vim
- Visual Stuio Code
- Sublime Text
- Emacs
これらは完全なデスクトップ環境が整っているなら良い選択肢だと思います。 しかし、今の仮想マシンのFreeBSDの状態ではどれも厳しいものがあります。
VimやEmacsはコンソールでも使えるだろうという点については、リッチなターミナルが使える環境でSSHなどで接続したりする場合もデスクトップ環境に含めています。
どれも非常に高機能で本格適なプログラミングにも耐え得るものです。 とかいっておいて何ですが、Vimはほとんど使ったことないし、Sublime Textは見たことも触ったこともないです。 たぶんいいんだろうという想像です。
3.2 なぜVimやEmacsを使わないのか
もしVimやEmacsを推しているなら、もう初めてのプログラミングをする人とは言えない気がします。 その理由とは別にVimやEmacsを使えない理由があります。
一番の理由はディスクの空き容量の問題です。
このシリーズで利用しているFreeBSD公式の仮想マシンのディスクイメージは、空容量が360MB程度しかありません。 ハードディスクイメージを作成して、空容量を増やすことはさほど難しい作業ではありません。 ただ、やはり訳の分からないコマンドを入力する苦痛は避けたかったのでやりませんでした。
FreeBSDで提供されるVimとEmacsのパッケージは巨大なものです。 Vimは155MB(ほとんどは依存するPythonのものですが)、Emacsは314MBの容量を必要とします。 これがどれほど大きいかというと、このシリーズで採用しようとしているLuaというプログラミング言語をインストールするのに必要な容量は2MBです。 Luaは小さな言語なので比較に使うのはフェアじゃないかもしれません。 しかし、空き容量に対して厳しいのには違いないので使いません。
3.3 現状の仮想マシンのFreeBSDで使えるテキストエディタ
このページを書くにあたって、色々とコンソールのテキストエディタを試しました。 先にも述べた通り、最初はmicroというのを利用することを考えていました。 これは最初から入っているものではないのですが、コマンド一発でインストールできるので許容範囲だろうと思っていました。 実際に試してみると、Ctrl+方向キーやShift+方向キーを始めとするキー入力が機能しませんでした。 つまり、コピーや貼り付けができず、単語単位でのカーソルの移動もできず、このままではインストールの手間に見合う価値はないと判断しました。
キー入力の問題は、他のエディタでも多く見られました。 方向キーでのカーソル移動を中心とするエディタのほとんどに問題があました。
どのようなエディタを試したのかは、だいぶ前に別のところで書いた記事にあるものを中心に試しました。 この中で、ミニEmacs風のエディタはわずかな設定でほぼ完全に動作しました。
- mg
- jed
- jove
- joe (jmacs)
- zile
ただ、やはり設定が必要ということで採用にはいたりませんでした。
他にも、Vim風のエディタでインストールに必要な空容量が比較的少ないものもあります。
- Kakuone 3MB
- Vile 6MB
- Neovim 33MB
でもまずは、viを使ってみてから乗り換えを検討することをお勧めします。
もしインストールして試してみたいのであればpkgというコマンドを調べてみると良いです。 そのうちpkgは扱うページを作りますが、今は難しいことをしたくないのでやりません。
3.4 viとeeのどちらを使うべきか
次からviとeeを実際に使っていきます。 時間節約のためどちらか一方をやれば良いと思います。
もし興味があれば両方試すのは一向に構いません。
どちらをやるべきかは、悩む場合のために適当な選択基準を提案してみます。
3.4.1 viを選択してもいい場合
- 将来Vimを使ってみたいと思っている場合。 基本的な操作はVimと同じで、身に付けておけばVimを使いはじめるときには大きなアドバンテージとなるかと思います。
- 左手の小指の頑丈さに不安がある場合。 viはeeほどは左Ctrlキーを使いませんので、腱鞘炎の可能性は低いです。
- 伝統を重んじる場合。 viは現代でも使われているテキストエディタの中では、最も古い部類に入ります。
- 最初は編集効率が悪くても我慢できる場合。 なかなか慣れるまでは思うように編集できないことが予想されます。 そこを我慢できるなら、後になればeeよりも高い編集効率が得られると思います。
- コマンドやキーバインドをたくさん覚えるもの苦にならない場合。 たくさんあるので大変です。
- トレーニングが好きの場合。 少しずつ上達していくことに楽しみを見出せるなら、たぶん向いてます。
viは最初はとっつきにくいところがあります。 その代わり、潜在能力が高く、使い込んでいったときの見返りは大きいです。
3.4.2 eeを選択してもいい場合
- 左手の小指の頑丈さに不安がない(例えばギターやピアノをやっていて鍛えられているなど)の場合。 左Ctrlキーを常時押しっぱなしになるので、弱いと腱鞘炎の危険性があります。
- 英語が得意な場合(これあまり重要ではない)。 画面に常時ヘルプが表示されているので、自然に受け入れられるなら習得が早まる可能性があります。
- アンドゥ(元に戻す)がなくていい場合。 アンドゥがないのがeeの最大の欠点です。
- 覚えなければいけないことを少なめにしたい場合。 viに比べると身体に叩きこまないといけないことは少なめです。
- 見栄を張らなくてもいい場合。 最低限のviの操作ができないと一人前とみなされない可能性があるのですが、気にならないなら悪くないです。
- 今後Emacsを使ってみたいと思っている場合。 カーソル移動のキーバインドがEmacs風ですので多少の足しにはなるかもしれません。 あくまでカーソル移動だけで、Emacsの使用感とは全然違うのであまり期待しないほうがいいです。
eeはおそらくviよりも使い始めるのは簡単です。 その代わり、割りとすぐにee自体の限界に達してしまう可能性が高いです。
6 キーボードレイアウトを変更する
※このセクションは英語配列のキーボードを使用している人には役に立たないのでスキップしてください。
viかeeのどちらかの基本的な使い方を覚えたので、ちょっとした練習も兼ねてシステムの設定ファイルを変更してみることにします。
FreeBSDでは、システムの動作に関わる重要な設定もテキストファイルで書かれています。 そのテキストファイルを変更することで、システムの設定を変更することになります。
課題はキーボードのレイアウトを変更するというものです。 viかeeのどちらかのセクションを読んできたのなら、日本語キーボードを使っている場合、キーを叩いたとき入力されている文字と、キーに印字されている文字が一致しないことに気づかれたはずです。 原因は、今のFreeBSDの設定がキーボードレイアウトをus(アメリカ英語)としているからです。 これを日本語キーボードのレイアウトに変更します。
もし使用しているキーボードが英語レイアウトなら、この課題はやる意味がないのでスキップしてください。
FreeBSDでコンソールのキーボードレイアウトの変更がとても簡単です。 簡単な作業ですが、一応変更を加える前の状態で仮想マシンのスナップショットを作成しておくことをお勧めします。
ではやってみます。
6.1 viの場合
- viで
/etc/rc.conf
というファイルを開きます。 そのためのコマンドはvi /etc/rc.conf
です。 ファイルが開けたら
G
(Sfhit+gです)を叩いて下さい。 そうすると、カーソルはファイルの一番最後に移動します。hostname="freebsd" ifconfig_DEFAULT="DHC inet6 accept_rtadv" growfs_enable="YES"▋ ▹この行にカーソルを移動させる
もしかしたら全く同じ内容になっていないかもしれません。 そのときでも、とにかくファイルの一番最後の行にカーソルを移動させて下さい。
o
を叩いて下さい。 そうすると、新し行が追加され、INSERTモードに切り替わります。hostname="freebsd" ifconfig_DEFAULT="DHC inet6 accept_rtadv" growfs_enable="YES"⏎ ▹この位置で改行を入力して ▋ ▹この位置にカーソルを移動させる
- そこに
keymap="jp.kbd"
と入力します。 日本語キーボードで=
を入力するには^を叩いて下さい。 二重引用符「"」を入力するにはShift+:を叩いて下さい。 - 入力を終えたら、Escを叩いて、INSERTモードを抜けて下さい。
入力終えたら次のような状態になります。
hostname="freebsd" ifconfig_DEFAULT="DHC inet6 accept_rtadv" growfs_enable="YES" keymap="jp.kbd" ▹追加した
- ファイルを保存して終了します。
保存して終了するには、:を叩いてからコマンドモードに入り
wq⏎
と入力します。 コロン「:」を入力するにはShift+;を叩いて下さい。 コマンドラインに戻ったら、FreeBSDを再起動します。 再起動するコマンドは
reboot
です。root@freebsd:~ # reboot⏎
- 再起動が完了したら、ログインしてキーの印字通りの記号文字が入力されるかどうか試してみてください。 試すのは、コマンドラインでやるのではなく、viを引数なしで起動してから試すと良いです。
6.2 eeの場合
- eeで
/etc/rc.conf
というファイルを開きます。 そのためのコマンドはee /etc/rc.conf
です。 ファイルが開けたら、カーソルを動かしてファイルの一番最後に移動してください。
hostname="freebsd" ifconfig_DEFAULT="DHC inet6 accept_rtadv" growfs_enable="YES"▋ ▹この位置にカーソルを移動させる
もしかしたら全く同じ内容になっていないかもしれません。 そのときでも、とにかくファイルの一番最後の行の最後尾にカーソルを移動させて下さい。
Enterを叩いて改行して、新しい行の先頭にカーソルを移動させます。
hostname="freebsd" ifconfig_DEFAULT="DHC inet6 accept_rtadv" growfs_enable="YES"⏎ ▹この位置で改行を入力して ▋ ▹この位置にカーソルを移動させる
- そこに
keymap="jp.kbd"
と入力します。 日本語キーボードで=
を入力するには^を叩いて下さい。 二重引用符「"」を入力するにはShift+:を叩いて下さい。 入力終えたら次のような状態になります。
hostname="freebsd" ifconfig_DEFAULT="DHC inet6 accept_rtadv" growfs_enable="YES" keymap="jp.kbd" ▹追加した
- ファイルを保存します。保存するには、Esc c cと順番に叩いて下さい。
保存できたら、画面の一番下に
"/etc/rc.conf" 4 lines, 98 characters
のようなメッセージが表示されるはずです。 - eeを終了します。終了するにはAlt+Enterを叩いて下さい。
コマンドラインに戻ったら、FreeBSDを再起動します。 再起動するコマンドは
reboot
です。root@freebsd:~ # reboot⏎
- 再起動が完了したら、ログインしてキーの印字通りの記号文字が入力されるかどうか試してみてください。 試すのは、コマンドラインでやるのではなく、eeを引数なしで起動してから試すと良いです。
6.3 CtrlキーとCapsLockキーを入れ替える
現在主流のキーボードは、左のCtrlという重要なキーが一番左下に配置されています。 この位置にあると、小指をぐいっと曲げないといけなくて、非常に負担がかかります。 特にeeのようなCtrlキーを多用するキーバインドのテキストエディタでは、とてもやってられません。
その一方、Aの隣りの小指で押しやすいところに、CapsLockが配置されています。 CapsLockを最後に活用したのはいつでしょうか。 思い出せません。 おそらく一度もないです。
もしCapsLockを普段から多用するのなら、この節はスキップして下さい。
少し値の張るキーボードは左CtrlとCapsLockを入れ替えられるようになっているものが多いです。 もし、本格的にプログラミングを始めるなら、次はそのようなキーボードを選択することをお勧めします。
しかし、今はまだ初めてプログラミングを始める段階なので、CapsLockキーがAの隣りにあるキーボードを使っているものとします。
また、必ずしも理想のキーボードが使えるとは限りません。 多少値が張るので、気軽に用意できません。 ノートパソコンに至ってはキーボードを交換するのが困難です。
なので、FreeBSDの方で左CtrlキーとCapsLockキーを入れ替える方法も紹介しておきます。
といっても、FreeBSDではすごく簡単です。
さっきの節の keymap="jp.kbd"
としたところを、代わりに keymap="jp.capsctrl.kbd"
とするだけです。
最終的な /etc/rc.conf は次のようになります。
hostname="freebsd" ifconfig_DEFAULT="DHC inet6 accept_rtadv" growfs_enable="YES" keymap="jp.capsctrl.kbd"
これでFreeBSDを再起動すれば、CapsLockの位置に左Ctrlが配置されて、ずっと押しやすくなったはずです。
6.4 日本語以外のキーボードを使っている場合
英語配列のキーボードの場合は設定は不要です。 初期状態のまま使うことができます。
日本語キーボードの場合は先に書いた通りです。
それ以外のキーボードを使っている場合はどうしたらいいのでしょう。
FreeBSDにはシステムに用意されているキーボードレイアウトを調べるためのツールが存在します。
実行するには、コマンドラインで kbdmap
と入力します。
root@freebsd:~ # kbdmap⏎
そうすると画面が切り替わり、使用することのできるキーボードレイアウトの一覧が表示されます。 この中から使いたいものを選択します。 上下方向キーでカーソルを移動できますし、頭文字を叩くとマッチするところまでジャンプします。
仮にドイツ語(German)キーボードのレイアウトを使用したいとしましょう。
まずgを叩いて、gから始まるもののところまでジャンプします。
すると German
が見つかるのでそれを選択して、左右方向キーでOKを選択して、Enterを叩きます。
図1: kbdmapでキーボードレイアウトを選択する
そうすると、kbdmapが終了します。
画面下端にプロンプトが表示されますが、その真上に keymap="de.kbd"
と表示されます。
これを、さっきの keymap="jp.kbd"
の代わりに、/etc/rc.conf に書き込めば良い訳です。
変更後はFreeBSDの再起動が必要です。
7 まとめ
このページでは、テキストエディタの基本について書きました。 シリーズを通して、viとeeというFreeBSDに最初からインストールされているテキストエディタを使用することにしました。
viとeeの具体的な使い方は別ページに移動しました。
両方使えるようになる必要はありません。 どちらか一方でOKです。
さらに言うと、これに合わせてどちらかを使う必要すらありません。 自分で別のテキストエディタを探して、インストールして使うのはむしろ望ましいです。 しかし、追加のソフトウェアをインストールする方法は、このページでは解説しませんでした。 また別の機会となります。
最後にはテキストエディタでFreeBSDの設定ファイルを変更して、キーボードレイアウトを変更することを体験してみました。 もし日本語キーボードを使っているなら、この節の作業を実際にやっておくことは必須となります。
テキストエディタの使い方を覚えたので、これで自由にソースコードが書けるようになりました。 ようやく、Hello Worldのプログラムを書いて動かしてみる準備が整いました。
次は、Hello Worldを書いて動かします。