Emacs体当たりメモ(随時更新)

Emacsバージョン Emacs
Emacsバージョン

題名の通りにEmacsを体当たりに使ってみたメモである。
厳密なところはマニュアルに当たって欲しい。
一体全体、Emacsがあれば何でもできるのかを試したいのだ。

作業環境の確認

項目仕様 2024/04/22現在
OSUbuntu 22.04.4 LTS
Ubuntu 20.04 LTS日本語Remix版から自動バージョンアップさせたもの
当然Emacsにも日本語Remixチームの手が入っていることに注意
運用レベルマルチユーザ X環境
従って使ってみるのはEmacs(GUI)版である
EmacsGUI版を使う Version27.1
設定ファイルは何も弄っていない素のママ
日本語IMMozc、SKK Mozcをよく使っている
ハードウェアIntel NUC8i3BEK 250GB、16GB
キーボードPLANCK EZ 
48キーのコンパクト型Lower/Upperキーなどでキーバインドするので
Emacsのキーバインドと上手く融合できるか
モニターEIZO 24Inch、RTK 8Inchの画面拡張モード
経験値これまで使ってきたエディタはnano、vi、gedit、atom、ぐらいなもの
キーボードが特殊だが、バインドで困ったことはない
今までCtrl+Alt+Eにgeditをバインドしていたが、
Emacs(GUI)に変更してある
Emacs起動時のパラメータは何も指定していない
参照マニュアルemacs29-3-ja.pdf
バージョンは先に進んでいるが、先のことなので、気にしない
emacs-ja.pdf https://ayatakesi.github.io/emacs/29.1/emacs-ja.pdf から頂戴しました。感謝します。
作業環境

テキスト入力と編集

Emacsの本質はエディタだから、立ち上げて即テキストを書けないと話にならない。スピードが命だ。そこでCtrl+Alt+Eのバインドをシステムに設定して、Emacsを立ち上げてみた。

結論を先に

結論を追加する。あまり弄っていないUbuntu BoxにEmacsのパッケージをインストールして、普通にエディタとして使える。テキストの編集に関しての基本機能に問題はなかった。

ファイラーの機能は素晴らしい。RegexpでMarkして一気に作業したりが可能だ。文句なしに使える。UNIXの流儀については問題ないし。Ubuntuだから。

やはり欲しいのがターミナル機能。エディタ、ファイラ、ターミナルが揃えばEmacsで世界が閉じる、までは行かないが、常時あげておく価値はある。

Webアプリに使えるブラウザ機能であれば嬉しい限りだ。セキュリティのことがあるので、油断は出来ないが。

起動直後の様子は

geditとか今まで使ったエディタは名前にない空の入力Windowが開いたが、Emacsは名前から察するに立ち上げ時のログ(*init log*)と新規(*scratch*)の2画面である。これらがタブの状態で表示されている。ログに関しては他のとは違うようで、結局皆が裏でやっていることを隠してないということだね。とは言え、初心者は戸惑うだろうねえ。

なんだかエラーが出ているが気にしないで進めよう。

Emacs起動時
Emacs起動時

一番上の行にはメニューが並んでいて、馴染んだ光景。その下にはタブで*scratch*と*init log*とある。*init log*が選択されていて、その下にログ内容が表示されている。下から2行目にはハイライトされて(テーマは標準)ログの表示に関するのだろう情報が表示されている。

*init log*画面でカーソル移動関係のキーバインドを試してみた。Ubuntu標準のバインドや矢印キーが効いているみたいだ。

移動操作普段のキーとバインドEmacs(GUI)標準
1文字右へ→キーC-f
1文字左へ←キーC-b
1行上へ↑キーC-p
1行下へ↓キーC-n
行の末尾へLower+.C-a
行の先頭へLower+/C-e
ページを上へUpper+.調査中
ページを下へUpper+/調査中
スクロールUPマウススクロールUP同じ
スクロールDOWNマウススクロールDOWN同じ

Emacsにおいては文章、段、行、節、語、文字が厳密に定義されており、僕が普段適当に書いている姿勢では理解し難い。日本語の語とは、の問題等もあるが。
取り敢えず上記ぐらいが動けば問題ないと思う。

ということはテキスト編集は大丈夫ということだね。
あ、文字が入力できればだが。

おなじみのCUAキーが使えるんだ

CUA(Common User Access)互換のキーバインドが使える。
詳細はこちら。「CUA Bindings (GNU Emacs Manual (Japanese Translation))

現実的に言って、Emacsのテキストコピー、カット、ペースト操作は、UbuntuのXアプリならC-C,X,Vで行うのだ。頭を切り替えるのも宜しいが、混乱するのはごめん。

そこで、Emacsのメニューに便利なのがあったぞ。Options-Use CUA Keysと言うメニューだ。しかも、上記に加えてUNDOもC-Zで可能になる。

何かとあたっている気配もないので、便利だな、Emacs!

リージョンの選択方法

Emacsでは文字列の連続を選択すると、リージョンと呼ぶ単位で扱われる。
文字列の中で一部分を反転させるという、あれ。
問題はそのリージョン選択操作にある。

マウスを使うなら ほとんど問題はない。普通の操作でいい。
ボタン1を押して、そのまま選択の最後まで移動させ、ボタンを離すだけだ。

キーボードでやろうとすると、今までならShiftキーと矢印キーで範囲選択するのが普通。
でも、EmacsだとC-SPCで開始位置を指定して、カーソル移動操作で最後まで移動することでリージョンを選択するんだ。C-SPCは困る。UbuntuではIMをON/OFFする操作がバインドされている。

でも流石はEmacsだ、回避策がある。C-SPCの代わりにC-@が使えるのだ。
まあ、僕のPLANCKではC-Lower_Wとなるが、まあ許せる。
カーソル移動は矢印キーが使えるから、ここだけ緊張してからはさして苦労はない。

勿論マウスでクリックすれば何の問題も無いのだがね。

入力する画面は*scratch*?

*scratch*画面のTABをクリックして切り替えてみたところ。どうやらここが入力画面らしい。
コメントが言っているように、Lisp言語の評価用モードになっているらしい。
そんなだいそれたモードは良いので、普通にtextを入力させて欲しいので、メニューを探すと、「File-Visit New File…」なるものがある。記述をそのままだと、「新しいファイルをVisit」なので、意味が違うかと思いながらこれを選択すると、ファイル選択のプロンプトが開いて(Xですな)望む場所に望む名前のファイルをVisitできるようだ。マニュアルを読んでみると、Visitって表現は既存のファイルでなくても良いらしい。そしてファイル名の拡張子によって入力モードが最適化されるとか。emacs-test001.txtなるファイル(新規)でやってみた。

Emacsのscratchバッファ
Emacsのscratchバッファ

新しいファイル名.txtで編集画面が開いた

こんな感じで新しいタブ画面が開きますね。最下行には(New File)とあります。拡張子をtxtとしたので、狙い通りに(text)モードの入力画面らしいのが、下2行目の行の表示で判断できる。
更に注意するのが、メニュー表示だ。Textメニューが増えている。これはtext入力モードで使える各種機能を設定しているのだ。詳細は省略^^

さてここからが難関かも知れない。日本語の入力できるのかだ。

新規ファイル編集画面
新規ファイル編集画面

日本語を入力できるかMozcで日本語を入力できれば、

これが一番心配するところだが、どうだろうね。日本語Remix版なので、期待はしている。デスクトップ版だしね。

Emacsで日本語を入力する話題を追いかけると、SKKと言うIMが話題に登ってくる。これはX環境で試しているし、未だに残してある。普段使っているのは、よくあるMozcというIM。これで日本語を入力できれば、言うことはないんだけどな。

Mozcを選択状態にしてEmacsへ日本語を入力してみた。ソースは上のパラグラフとした。いかがかな?きちんと日本語を入力できているし、最後の1文はマウス第3ボタンでコピーしている。
ただ、インラインとはいい難い感じだ。カーソルのある行の下に変換窓が開く仕様。語や節の区切りが見にくいが変換結果が表示されるので、判断は付く。

新しいファイルへ日本語を入力
新しいファイルへ日本語を入力

日本語を入力SKKではどうか

UbuntuのシステムメニューでIMをSKKに切り替えたところ、問題なく入力できた。
インライン問題もMozcと同じように変換窓が開いている。SKKの特性として入力が短いので、変換中の誤解が少ないと思われる。Mozcでも短く変換してゆけば問題ないね。

IMのSKKはオフライン状態でも動作するので、まさかの際には非常にお役立ち。

テキスト以外のORGモードで

拡張子で入力モードが決まると言ったが、例としてORGモードをあげてみよう。ファイル名をEmacs-test-mode.orgとしよう。このOrgモードはマークダウン記法を入力できるもので、そのためのメニューもきちんと表示される。OrgとTblがそうだ。

階層構造の文章を自由自在に入力でき、TODOやScheduleも設定できるというスグレモノ。

実は日記を書ける可能性を考えて少し調べていた。今回触ってみて、感触がいい。プライベートなことは紙の手帳に書くんだけどね。

さて、新しくORGモードのファイルを用意するにも、textと同じように、既存でないファイル名を指定してVisitすればよい。そしてコピーしたり、入力したり、直したりするのだ。

EmacsのORGモード
EmacsのORGモード

ファイルへの保存

保存しないとせっかく編集した内容は消えてなくなる。この辺は一般的なお話。

Emacsで新しいファイルをVisitして編集できることは分かったのだが、実はファイルの実態は作られていない。従って、必ず保存しなければならない。メニューからFile-Saveを選択すれば、最下行にファイルへのパスが表示されるので、確認の上Enterするのだ。メニューにはX環境のアプリに準じてFile-Save Asがあるので、名前が気に入らなければ他の名前で保存もできる。

Emacs保存結果
Emacs保存結果

処理が終わったら

Emacsの達人によれば、「Emacsは環境なので、一旦立ち上げたら落とさない」ということらしい。
僕はそこまで達人に到達していないので、メモリを圧迫しないように、落とすことにしよう。
今のところはね。

メニューからFile-Quitを選ぶだけだ。終わっては都合悪ければ言ってくるので対応する。

これで普通にエディタできる

テキストを入力して編集する基本的なことはできるようになった。
メニューやメッセージは日本語化していないが、長年の蓄積でなんとかなるものだ。
余計なことをしなければ、意外なことは起きにくいものだよ。

マニュアルを読むとエライ精密なことになっているが、
使う立場で段々理解できていれば良いと思う。

ここで言う入力モードとはマニュアルでは「メジャーモード」と呼ばれるものである。
更に「マイナーモード」もあるが触れない。

目標はEmacs Lisp(ELISP)で何かを書けるようになることだ。
楽しみだな。

ファイラーを試してみよう

Emacsにはファイラーが標準装備である。これでファイルシステムをどのように使えるのかを試す。

ファイラーとは

ファイラーとはファイルシステムのディレクトリ構造を上下に移動しながら、ディレクトリ内容を一覧表示することで、各種のファイル操作を行うという機能だ。

ファイラー画面を表示

File-Open Directryメニューを選ぶと、ディレクトリを選ぶダイアログ(Ubuntu標準の)が表示されるので、ディレクトリを選び(Open)ます。表示されるのはこのような画面。

Emacsファイラー
Emacsファイラー

ディレクトリ内で編集作業を

後はカーソルを移動してポイントしたファイルに対して下記のようにアクションすれば内容が表示される。そして加工まで可能だ。

  • カーソルでポイントした場合 RETすればそのファイルが開く。今の所確認できたのはテキスト系ファイル(txt,org)と画像系(jpg,png)、ドキュメント系(pdf)。X環境だから画像が映るのかな。
  • マウスでポイントした場合 RETすれば同上 クリックすれば別分割画面で表示される。
  • 何れかでポイントして Immediate-Find This Fileメニューで表示される。

テキスト系はエディタだから当然として、画像系はサイズや向きなどの簡便な編集が行える。
簡便とは言え、普段やっている画像編集とそんなに変わらないので、期待は大きい。
PDFを読めたのは驚いた。

EmacsでファイラーORG
EmacsでファイラーORG
EmacsでファイラーJPG
EmacsでファイラーJPG
PDF
PDF

ディレクトリを上下する

ディレクトリを上に上がるには先頭に表示されている..をポイントしてRETする。
ディレクトリを下に下がるには強調表示されているディレクトリ名をポイントしてRETする。
Subdirメニューを使ってもよい。

この辺の雰囲気にはUNIX系列のシェルの経験が役に立つだろうが、慣れたら良いのだ。すぐに慣れるよ。EmacsはUNIX文化の中で育ってきたから仕方がないね。
Windows版は全く知らないけど、C:とかやるんだろうねえ。

ファイラーのメニューは凄い

ファイラーに表示されるメニューを簡単に一覧しておきます。
各種操作に関してはUNIX流なので、悪しからず。
ほとんど可能です。シェルの実行やファイルの圧縮などもできる。
GUIのメニューで簡単になった(CUIより操作は遅いが)ので、これは武器だと思う。

  • Operate ファイル毎の操作メニュー
  • Mark 操作対象をマークするメニュー 複数可能
  • Regexp 正規表現を使った操作メニュー
  • Immediate ポイントしたファイルに対する編集メニュー
  • Subdir ディレクトリ移動メニュー Treeも

ファイラーの使い方

Emacsを立ち上げておいて、このファイラー機能を使うことを考える。
相手がファイルだから下手なことをしてしまってもいかんので、
暫く試していよう。

写真が記録されたSDカードのディレクトリに入って、ファイル名を調整する自作コマンドを実行し、特定のディレクトリへ移動させて多少編集するとかは毎日やっているので、テスト案件に良かろう。これがスムーズに出来たら採用だ。

ターミナル機能

ターミナルで僕は生きている。Ubuntu使いだからね。M-x shellとかやるとそれらしきものが使えるが、イマイチなのだ。
きちんとターミナルしているものとして、「Emacs実践入門」でお勧めのmulti-termを知ったので、入れて試してみた。

インストール

ELPAからネット越しにインストールできる。ELPAはGNU Emacs Lisp Package Archiveの略で、GNU公認のライブラリだ。他にも同じようなライブラリがあるが、おいおい出てくるだろう。さて、下記のように入力すると、インストールされる。

RETはReturnキーのことだ。M-xと打つと最下行が入力可となるので、package-install RET と入力して更にmulti-term RETと入力すれば、インストール開始だ。何事もなく終了した。

M-x package-install RET multi-term RET

init.elの編集

新しい機能を入れたので、これを認知させないといけない。Emacs初期化ファイルである、init.elを編集する。

  • init.elを開く
    File-Open Directoryメニューでファイラーを開き、~/.emacs.d/init.elを開く
  • このファイルの最後に下記のコードを追加して保存する。
;;
;; multi-term
;;
(when (require 'multi-term nil t)
;;
;;Shell is bash
;;
(setq nulti-term-program "/bin/bash"))

動作テスト

一旦Emacsを終了させて、再度立ち上げる。
エラーの発生していないことを*init log*で確認してから下記のように起動する。

M-x multi-term RET

少々カラー設定がビビッドでありますね。
メニューはSignals、Terminalが追加になっているようです。

exitと打てば抜けるのはUbuntu標準のbashと同じです。Flie-Closeメニューでも良い。

Emackmulti-term
Emackmulti-term

これで一安心

ターミナルが最後の一線なので、これで一安心です。

と思っていたら

るびきちさんのブログでeshellを見つける。こちらも使いやすい。どっちがいいのかはこれからだな。
でも、ちょっと惹かれる。

Emacs-eshell
Emacs-eshell

ブラウザ機能

特定の文字列を検索したくて開いてみたが、やっぱり文字化けなどが発生する。UTF8とかJapanとかを設定する話なのだろうね。

ちょっと使えないので、WebはCromeということにしておくと吉だろう。

課題:Chromeを起動する機能をキーバインドするにはどうすれば?
いつものように、Ubuntuに登録してあるバインド、Ctrl+Alt+Wで立ち上がりました。
X環境だねえ。

マニュアル参照機能

英語でも、日本語でも、取り敢えずマニュアルを探れるのは非常に安心感がある。
「Emacs実践入門」によると、womanがオススメとか。(manもある)
マニュアルの追い方はこれからの勉強だが、その操作が簡単になるのはありがたい。
下記のキーバインドで立ち上げる。キーワードは調べたい用語とか。

日本語の表示も出来ているので、なんだっけ?にはこれを使おう。

M-x woman RET keyword RET

infoドキュメントの参照

Ubuntuには色々なinfoドキュメントがある。これを参照できるのがこれ。infoのツリーが表示されて、ドリルダウンできる。

M-x info

コメント

タイトルとURLをコピーしました