LinuxでEmacsエディタを使う方法
はじめに
Emacsは最も古く、多機能なテキストエディターの一つです。GNU Emacsバージョンは1984年に最初に開発され、その強力で豊富な編集機能で広く知られています。様々なモードでカスタマイズや拡張が可能であり、JavaやC、Pythonなどのプログラミング言語の統合開発環境(IDE)として使用することもできます。
Viとユーザーフレンドリーなnanoテキストエディターの両方を使用したことがある人にとって、Emacsはその間に位置するものとして現れます。その強みと特徴はViに似ており、一方でメニューやヘルプファイル、コマンドキーはnanoと比較できます。
この記事では、Ubuntu 22.04 サーバーに Emacs をインストールし、基本的なテキスト編集に使用する方法について学びます。
前提条件
このチュートリアルに従うためには、非ルートユーザーでsudo権限を持ち、ファイアウォールが有効になっているUbuntu 22.04サーバーのセットアップが必要です。Ubuntu 22.04の初期サーバーセットアップガイドに従ってこれを設定することができます。
ステップ1:Emacsのインストール
最初に、システムにEmacsがすでにインストールされているかどうかをチェックしてください。
- emacs
プログラムがインストールされていれば、エディタはデフォルトのウェルカムメッセージと共に起動します。そうでなければ、このような出力が表示されます。
Command ‘emacs’ not found, but can be installed with: sudo apt install e3 # version 1:2.82+dfsg-2 sudo apt install emacs-gtk # version 1:27.1+1-3ubuntu5 sudo apt install emacs-lucid # version 1:27.1+1-3ubuntu5 sudo apt install emacs-nox # version 1:27.1+1-3ubuntu5 sudo apt install jove # version 4.17.3.6-2 See ‘snap info emacs’ for additional versions.
Emacsをインストールするには、次のコマンドを使用してください。
- sudo apt install emacs
マシンにEmacsをインストールしたら、次のステップに進む準備ができました。
ステップ2−インターフェースを使用する
自分の端末でコマンド「emacs」を入力してEmacsを起動してください。
- emacs
Emacsは、空の編集バッファで起動し、入力を開始するのを待ちます。Emacsが特定のファイルを指定せずに起動されると、プログラムは歓迎メッセージを表示します。
![Emacs welcome message](https://cdn.silicloud.com/blog-img/blog/img/65644b02daa94e2bdf7aeccf/18-0.png)
新しいファイルを始めるには、TABキーを押してカーソルを「新しいファイルへ移動」のリンクに移動し、ENTERキーを押します。また、CTRL + X、その後 CTRL + Fを押して新しいファイルを作成することもできます。ターミナルの末尾にはファイル名を要求するプロンプトが表示されます。
![A prompt appears at the bottom of the Emacs window asking for a file name.](https://cdn.silicloud.com/blog-img/blog/img/65644b02daa94e2bdf7aeccf/20-0.png)
テキスト編集を開始するために、ファイル名を入力してください。以下の例では、myfile.txtが使用されています。このファイル名は自由に決めることができます。ファイル名を入力したら、ENTERキーを押して続行してください。
テキスト入力用の空のファイルが準備されます。
![Empty file appears after entering a file name.](https://cdn.silicloud.com/blog-img/blog/img/65644b02daa94e2bdf7aeccf/23-0.png)
画面の上部にはメニューがあります。メニューの後には、広い編集空間があります。これはメインバッファと呼ばれ、テキストを入力したり、ファイルの内容を表示したりする場所です。
Emacsがディスク上の既存のファイルを編集する際、まずそのドキュメントのコピーがメモリに読み込まれ、それがメインの編集ウィンドウに表示されます。このメモリ上の領域をバッファと呼びます。文書を作業する際には、編集スペースで行う変更はすべてバッファに適用され、ディスク上の元のファイルは変更されません。Emacsは時折バックグラウンドで自動保存しますが、変更内容がディスクに書き込まれるのは、文書を手動で保存する時だけです。新しいファイルについても同様です。保存するまで、すべての変更はバッファ上で行われます。Emacsのメインの編集スペースは、バッファへのビューです。
メインバッファーの後に、画面の下部付近にテキストのハイライトされたバーが表示されます。これはステータスバーまたはモードラインと呼ばれています。ここに表示されるテキストは、Emacsが現在どのモードにあるかによって異なります。ステータスバーには他の要素も含まれています。
- Name of the current file
- Current cursor location
- Current editing mode
- The status of the file (– for an unmodified file, ** for a file with un-saved changes and %% for read-only files)
最後に、画面が終わる場所のステータスバーの後には、1行分のスペースが存在します。この例では、「(新規ファイル)」というテキストが表示されています。この領域はミニバッファと呼ばれます。Emacsはコマンド駆動のツールであり、ミニバッファが主な操作ポイントとなります。ここでは、Emacsがコマンドの入力を要求し、出力を表示します。
テキストベースのEmacsのバージョンは、GUIベースのバージョンとは異なる方法でウィンドウを扱います。GUIベースのアプリケーションとは異なり、テキストベースのEmacsではウィンドウはポップアップしません。なぜなら、ターミナルやコンソールセッションでは物理的にそれができないからです。Emacsが新しいウィンドウを開始する必要がある場合、メインバッファは2つの部分に分割されます。まるでブラウザの2つのフレームのように、上半分にはメインバッファが表示され、下半分には新しいコンテンツが表示されます。Emacsが新しいウィンドウを生成する例は、ヘルプファイルやチュートリアルにアクセスする場合です。
メニューにアクセスする
Emacsを起動すると、通常は画面全体を占有します。ほとんどの機能は、画面の上部にあるメニューバーからアクセスできます。
GUIベースのプログラムとは異なり、テキストベースのメニューはマウスクリックでドロップダウンすることはできません。実際、ショートカットキーでメニューを強調表示したりスクロールしたりすることはできません。
メニューにアクセスするには、F10キーを押してください。これにより、メインバッファの下に別のウィンドウが開き、メニューアイテムへのアクセスキーのリストが表示されます。ミニバッファは必要なキーの入力を促すでしょう。そのキーを押すと、新しいウィンドウの内容が変わり、次のレベルのオプションが表示されます。
メニュー画面から抜けるためには、どの深さにいようとも、ESCキーを3回押してください。通常、これによりメニューウィンドウが閉じられ、メインバッファに戻ります。
ツールメニューから利用可能ないくつかのオプションは以下の通りです。
- Calendar
- Simple calculator
- Programmable calculator
- Searching a directory
- Encrypting and decrypting document
- Send and read e-mails
- Search files using grep
- Spell checking
- Running shell commands and compiling code
- Version control
- Compare and merge files
- Games
ヘルプとチュートリアルへのアクセス
Emacsには、豊富なヘルプシステムとチュートリアルがあります。アクセスするためには、F10を押してメニューを使用し、右または左の矢印キーで「ヘルプ」を選択するか、CTRL+Hを押してから対応するキーを押します。たとえば、CTRL+Hを押した後に以下のキーのいずれかを入力することで、FAQ、チュートリアル、ニュース、その他のトピックを閲覧できます。
- t to enter an Emacs Tutorial
- CTRL+F for an FAQ
- CTRL+P to learn about known bugs and problems
- CTRL+R to read the Emacs Manual
- CTRL+E to find extra packages
ステップ3 – コマンドキーを使用する
ユーザーインターフェースに慣れたら、Emacsのコマンドキーを覚え始めることができます。ファイルを開くと、同時にタイピングとコマンドの発行を開始できます。
コマンド機能は通常、2つまたは3つのキーを使用します。最も一般的なのはCTRLキーであり、次にALTキーまたはESCキーです。Emacsの環境では、CTRLは「C」という短縮形で表示されます。C-x C-cのようなEmacs内のノートは、CTRL+Xのキーを一緒に押し、次にCTRL+Cを押すことを意味します。同様に、C-h tはCTRL+Hを一緒に押して、その後両方のキーを離してtを押すことを意味します。
Emacsでは、ALTとESCキーはメタキーと呼ばれます。Appleのマシンでは、ALTの代わりにオプションキーを使用します。他のキーボードでは、EDITキーが使われます。CTRLキーと同様に、Emacsはメタキーと組み合わせてマルチキーの機能を使用します。例えば、M-xという表記は、ALTまたはオプションキーとxを一緒に押すことを意味します。同様に、ESC+Xでも同じコマンドを実行することができます。
エンターキーはEmacsではRETと表示され、これはreturnの略です。ESCキーはしばしばEと表示されます。
ESCキーは、コマンドやプロンプトからの戻りに使用できます。例えば、特定のメニューから終了するためにESCキーを何回も押すことができます。操作をキャンセルする別の方法は、CTRL+Gキーを押すことです。
保存して終了
文書を変更したりテキストを書いた後には、CTRL+Xを押してからCTRL+Sで保存できます。ミニバッファには以下のメッセージが表示されます。
Wrote /home/sammy/myfile.txt
「Emacsを終了するには、CTRL+Xを押してからCTRL+Cを押します。」
もし終了する前にファイルを手動で保存しなかった場合、このメッセージが表示されます。
Save file /home/sammy/myfile.txt? (y, n, !, ., q, C-r, C-f, d or C-h)
ファイルを保存するにはYキーを押してください。
「いいえ」としてNを押すと、このメッセージが表示されます。
Modified buffers exist; exit anyway? (yes or no)
保存せずに終了する場合は「はい」と入力してください。
テキストの操作
長いドキュメントやヘルプトピックの中をナビゲートすることは退屈な作業です。幸いなことに、Emacsには複数のファイルナビゲーション方法があります。
以下は一部の一般的なナビゲーション機能のリストです。
To perform this function | Use these keys |
---|---|
Moving to the next line | CTRL+N (N for Next) |
Moving to the previous line | CTRL+P (P for Previous) |
Moving one character forward | CTRL+F (F for Forward) |
Moving one character backward | CTRL+B (B for Backward) |
Moving one word forward | META+F (F for Forward) |
Moving one word backward | META+B (B for Backward) |
Moving to the start of a line | CTRL+A |
Moving to the end of a line | CTRL+E (E for End) |
Moving to the start of a sentence | META+A |
Moving to the end of a sentence | META+E (E for End) |
Moving one page down | CTRL+V (or PgDn) |
Moving one page up | META+V (or PgUp) |
Moving to the beginning of the file | META+< (Alt + Shift + “<”) |
Moving to the end of the file | META+> (Alt + Shift + “>”) |
METAはALT、ESC、OPTION、またはEDITのいずれかのキーを使用できることを覚えておいてください。
ステップ4 – 編集機能
もし一般的なワードプロセッサで行う必要のあるより専門的なタスク、例えばテキストファイルの特定の範囲を選択したり、強調したりする必要がある場合、Emacsでそれを行うことができます。
テキスト領域のマーキング
文字の領域をマークするためには、以下の手順に従ってください。
- Move the cursor to the position where you would like the selection to start. You can use any of the methods described previously to move the cursor.
- Press CTRL+SPACEBAR or CTRL+@ to set a mark to begin your text highlighting. The mini buffer will show a status message of Mark Activated.
- Move the cursor to the position where you want the region to end. By using any of the key combinations described before.
- The text will be highlighted up to the point where your cursor is now located.
- Press CTRL-SPACEBAR or CTRL+@ twice to unmark the highlighted text. The mini buffer will show a status message of Mark Deactivated.
代わりに、ワードプロセッサのように、キーボードのシフトキーを押しながら上下の矢印キーを使って、カーソルを移動させることで選択することができます。
現在カーソルがある段落を選択したい場合は、META+Hを押してください。その後、META+hを連続して押すと、テキストファイル内の次の段落が選択されます。
メインバッファのすべての内容を選択したい場合は、CTRL+Xを押した後にhを押してください。
テキストの切り取り、コピー、貼り付け
ワードプロセッサと同様に、テキストをコピー、切り取り、貼り付けすることができます。
- To copy the text you’ve selected, press META+W.
- To cut the text selection, press CTRL-W.
- To paste a text selection, press CTRL-Y.
テキストを削除する
(テキストをさくじょする)
バックスペースキーとデリートキーを使ってテキストを削除する際、予想通りの方法で動作します。
単語をすばやく削除するには、カーソルを単語の先頭に移動し、META+Dを押します。複数の単語を削除するには、METAキーを押しながら連続してDを押し続けます。単語は一つずつ削除されます。
日本語で以下の文をないてください。一つのオプションだけです:
一行全体を削除するために、カーソルを目的の位置に設定してから、CTRL+Kを押します。これにより、その行の末尾までテキストが削除されます。
文章を削除するには、META+Kを押してください。ただし、フルストップの後に2つのスペースがない場合、Emacsは一行またはそれ以上を削除しますので、ご注意ください。フルストップの後の2つのスペースが、Emacsが文が複数行にわたっているかどうかを判断する方法です。
取り消しとやり直し
「CTRL+X」を押し、「u」を押すことで、直前の操作を元に戻すことができます。もう一つのキーコンビネーションは「CTRL+_」です(ここでのキープレスは、「CTRL」と「SHIFT」、「-」を押してアンダースコアを表現します)。
最後に取り消したものをやり直すには、CTRL + Gを押し、次にCTRL + _を押します。
テキストの検索と置換
Emacsには2つの検索方向があります。その方向は、前方検索と後方検索です。前方検索では、指定した単語が現在のカーソル位置から前方に検索されます。一方、後方検索では逆の方向に検索されます。
- Press CTRL+S for forward search. Then input the text you’re searching for in the mini-buffer prompt.
- Press CTRL+R for backward search.
検索語を入力すると、Emacsはすぐにそれを検索し、メインバッファ内で一致する箇所をハイライト表示します。
たとえば、テキストファイルで「ネコ」という単語を検索すると、メインバッファ内のすべての出現箇所がハイライトされたテキストとして表示されます。
![The word 'cat' is highlighted after inputting the search term 'cat' in a forward search in the mini-buffer.](https://cdn.silicloud.com/blog-img/blog/img/65644b02daa94e2bdf7aeccf/85-0.jpg)
次の手順に従って、テキストを置き換えてください。
- Press META+%. The mini buffer will prompt for the text to be searched with Query replace:.
- Input the text that you’re replacing and press ENTER.
- The mini buffer will display Query replace your_search_term with:.
- Enter the word or phrase you want to replace the your_search_term with and press ENTER.
- Each match will be highlighted, and you will be given a prompt to make a replacement. The mini buffer will ask Query replacing your_search_word with your_replacement_word: (C-h for help).
- Press y to replace the current match found.
- Press n to skip to the next match.
- Press q to exit without any replacements.
- Press ! to do a global replacement without any prompts. The mini buffer will output this message: replaced number occurrences.
左、右、中央の配置を追加する。
1つのオプションで以下を日本語で言い換えてください:
1行を中央に配置するために、カーソルをその行の先頭に移動し、META+Oを押してからMETA+Sを押してください。
選択したテキスト領域を正当化するためには、以下の手順を実行してください。
- Highlight the text you wish to justify.
- Press META+X. The mini buffer will await a response.
- Input set-justifiction- and press the TAB key.
- You will be given the following completion options: set-justification-center, set-justification-left, set-justification-right, set-justification-none and set-justification-full.
- Complete the justification command, by selecting set-justification-right or one of your choice, then press ENTER.
- The selected text will be justified to the direction of your choosing.
以下に、異なる整列設定に割り当てられたテキストの例を示します。
![An example of selecting the text in Emacs. The first section reveals that the text is selected. The second section reveals text justified to the right. The next section is justified to the left. The last section reveals a centered justification of the text.](https://cdn.silicloud.com/blog-img/blog/img/65644b02daa94e2bdf7aeccf/93-0.jpg)
大文字と小文字を変換する
いくつかの異なるコマンドを使用して、大文字と小文字を変換することができます。以下にいくつかのコマンドキーのリストを示します。
To perform this function | Use these keys |
---|---|
Capitalizing a word after the cursor | META+C (C for capitalize) |
Converting a word to lowercase | META+L (L for lowercase) |
Converting a word to uppercase | META+U (U for uppercase) |
Converting a paragraph to uppercase | Block select, then CTRL+X CTRL+U |
Converting a paragraph to lowercase | Block select, then CTRL+X CTRL+L |
もしも一つの段落またはそれ以上が大文字か小文字に変換される場合、新しいウィンドウとメッセージが表示されます。
You have typed C-x C-l, invoking disabled command downcase-region. It is disabled because new users often find it confusing. Here’s the first part of its description: Convert the region to lowercaselower case. In programs, it wants two arguments.These arguments specify the starting and ending character numbers of the region to operate on. When used as a command, the text between point and the mark is operated on. Do you want to use this command anyway? You can now type ‘y’ to try it and enable it (no questions if you use it again). ‘n’ to cancel–don’t try the command, and it remains disabled. ‘SPC’ to try the command just this once, but leave it disabled. ‘!’ to try it, and enable all disabled commands for this session only.
![A message inside your Emacs instance after pressing the and keys to convert a paragraph to lowercase.](https://cdn.silicloud.com/blog-img/blog/img/65644b02daa94e2bdf7aeccf/99-0.png)
指示されたキーを押して進めてください。
Windowsの管理
Emacs内でウィンドウを管理することは、ファイルと効率的に作業するのに役立ちます。
例えば、メインのバッファから、CTRL+hを押してtを押すと、Emacsのチュートリアルに切り替わります。メインのバッファウィンドウは今やEmacsのチュートリアルです。myfile.txtのバッファに戻りたい場合は、CTRL+Xを押した後にbを押します。これがバッファ切り替えのコマンドです。Emacsは切り替え先のバッファ名を聞いてきますので、myfile.txtと入力してENTERを押してください。これにより、Emacsのチュートリアルから指定したファイルに移動します。
ステップ5 – モードの入力
メジャーモードへの進入
UNIXコミュニティでEmacsが広く採用されてきた理由の一つは、様々なモードを適用することができる能力です。モードはEmacsの機能を強化することができます。
選択したモードによって、Emacsはテキストファイルの作成に利用できるワードプロセッサとして使用されることもありますし、Python、C、Javaのコードの作成などの高度なタスクに適応することも可能です。たとえば、Emacsのモードを変更することで、バージョン管理システムと連携させたり、シェルコマンドを実行したり、manページを読んだりすることができます。
Emacsには2つの異なるモードがあります。その1つはメジャーモードと呼ばれます。メジャーモードでは、Emacsをプログラミングやスクリプト言語の統合開発環境(IDE)として使用することができます。このモードでは、カラー構文強調表示、インデントやフォーマット、言語固有のメニューオプション、デバッガーやコンパイラとの自動インターフェースなど、専門的な機能を提供します。
Pythonを使ってEmacsで「Hello World」アプリを書くことで、実演できます。
あなたのターミナル内で、ルートディレクトリに以下のコマンドを入力してください。
- cd ~
- emacs hello.py
Emacsはファイルの拡張子を認識し、Pythonモードで起動します。メインのバッファに、以下のPythonコードを入力してください。
print "hello world!\n"
現在、キーワードはカラーシンタックスハイライトで示されています。また、ミニバッファの上に表示されているステータス行には、現在のモードが表示されていることにも注意してください。さらに、メインメニューにはPython専用の個別のエントリもあります。
![Inside the Emacs main buffer, the edited Python code has color syntax-highlighting and reveals that it is in Python mode in the status line. The main menu includes a 'Python' selection.](https://cdn.silicloud.com/blog-img/blog/img/65644b02daa94e2bdf7aeccf/115-0.png)
「CTRL+X CTRL+S」でバッファを保存してください。
Emacs内でメジャーモードを変更するには、META+Xを押してください。ミニバッファが入力待ちになりますので、そこで別のモードを入力できます。以下にいくつかのメジャーモードの例を示します。
- c-mode
- python-mode
- java-mode
- html-mode
- perl-mode
- shell-script-mode
- text-mode
マイナーモードへの移行
主要なモードと比べると、マイナーモードはより具体的な機能を提供します。これらの機能は特定の主要モードに関連付けられることもありますし、主要モードに関係なくシステム全体に影響を与えることもあります。また、主要モードとは異なり、複数のマイナーモードが同時に有効になる場合があります。マイナーモードはスイッチのようなものです。いくつかはデフォルトで有効になっており、いくつかは無効です。マイナーモードが既にオンになっている場合、呼び出すことでオフに切り替わります。オフの場合には再びオンに切り替わります。
前の例で使用された正当化の設定オプションは、マイナーモードの一例です。
マイナーモードの別の例は、auto-fill-modeです。Emacsエディターでこのモードに入るには、META+Xキーを押してからauto-fill-modeと入力します。
このモードでは、文字数が70文字を超えると、テキストの行が折り返され、次の行に移行します。マイナーモードを呼び出す場合、トグルスイッチのようなものですので、同じコマンドを再び呼び出すと、行の折り返しが無効になります。
以下は、マイナーモードのさらなる例です:
- auto-save-mode: This toggles the property of auto saving that periodically saves the contents of the main buffer behind the scene.
- line-number-mode: This toggles the display of the current line number in the status bar.
- linum-mode: Toggles the display of line numbers along the left edge of the window.
- column-number-mode: Shows the current position of the cursor in status bar.
- overwrite-mode: This is like pressing the INS key on your keyboard. When switched on, it will overwrite text on the right side of the cursor as you type.
- menu-bar-mode: This can switch the main menu on or off.
結論
このチュートリアルでは、Emacsのさまざまなコマンド、編集機能、モードについて学びました。
Emacsエディタの更なる理解を深めるためには、GNU Emacsのウェブページが豊富な情報を提供しており、Emacs Wikiなど他のリソースへのリンクも含まれています。また、GNU Emacsのマニュアルも読むことができます。