Emacsとは

👨リチャード・ストールマンが開発した🔖GNUのフリーソフトウェア.

Index

🐤Emacs Basic Keybindings

初心者殺しのはじめの関門. または, 📝ビギナーズマインドでつねに初心を忘れない.

  • M-w: 選択したリージョンをコピー.

Emacs Manual詳解

Emacs Manualの詳解, というより調べたことの備忘録.

ディレクトリーごとにローカル変数を適用するには .dir-locales.el

.dir-locales.elという設定ファイルをフォルダにおくとそのフォルダ配下のファイル操作に対してローカル変数の設定が有効になる.

モード名(シンボルで指定)をalistにマップするという特別な記法で記述する.

nil . (indent-tabs-mode . t)
(fill-column . 80)
c-mode . c-file-style . BSD
subdirs . nil
src/imported
. nil . change-log-default-name
. ChangeLog.local

即座に設定を反映させたい場合はそのファイルを閉じて開き直すmodeを再適用する.

Emacs functions Tips

いろいろ関数があるものの, 知るとああこれほしかったやつだって関数をメモしていく.

switch-to-buffer-other-window

switch-to-bufferC-x bは基本的だが, その発展として自分が開いている右側のbufferに開きたいbufferを指定して表示できる.

これがないと, 隣のバッファに移動してswitch-to-bufferをする必要がある. よくつかうキー操作なのでこれは便利.

C-x 4 bにbindingされている.

projectile-switch-to-buffer-other-windowというprojectile限定の関数もある.

diredで別windowにファイルの中身を表示

Ctrl+o. 忘れがちだけどかなり便利.

Emacs CUI

Emacs on terminal. tty, CUI. emacs -nwで起動.

<2024-10-21 Mon> やっぱりCUIつらいな…

GUIからみたデメリット

  • メタキーが使えないM-とかS-, altとかshiftにbindされている系.
    • org-modeでは多用するので代替キーをつかう必要
  • グラフィック劣る
    • indentずれる
    • 絵文字ずれる
  • OSクリップボード連携不自由, コピぺが不自由.

Emacs Topics

🆎Emacs with LLM

🤖LLM活用.

ChatGPT

Org-mode

Refs

🔧GitHub Copilot.el

📝GitHub Copilot連携. いろいろpackageはあるものの今のところはcopilot.elがよい.

Journals

💻Mule

Emacsの多言語拡張. 多言語, というより日本語. 日本人が開発.

✨muleはわたしが触れた初めてのテキストエディタ

わたしが会社に入って触れたはじめてのエディタ. 当時の開発スタイルは部内Unixサーバにtelnetでつないでmuleを立ち上げてC言語を書いていた.

Google ChromeのフォームをEmacsから編集する

edit-server

Edit with Emacsが有名. exwmとの連携もできる.

atomic chrome

websocketを使ったatomic chormeというものもある. リアルタイム描写なのでUXはこちらが優れている.

Chromeの拡張機能としてGosttextを使う. フォームでCtrl+Shift+HでEmacsバッファが起動.

https://ghosttext.fregante.com/


Emacs on Windows

  • native build

WSL/VcXsrv/mozc/fcitx

🪟WSL上で起動したEmacs(GUI)をつかう.

  • WSLの登場によってこの方式がメジャーになった.
  • 問題点は日本語入力にLinux側のIMEをつかうところ. とくに親指シフトとLinuxは修羅の道なのでできればやりたくないというのが本音. nwモードならばWindows側のIMEが直接入力できる.

Emacs native compilation

Elispを解釈するのではなくバイトコードしてEmacsを実行. これにより高速な処理を実現. 2021に登場した.

  • つかうには自分でビルドオプションをつけてビルドが必要.
    • ./configure —with-native-compilation
  • 2倍以上は速くなる.

注意点は libgccjit-1x-devのモジュールはgccのversionに合わせること. 検査するといろんなバージョンがでてくる.

Emacs Tips

Emacsで定義されている変数をみる

M-x describe-variableで確認できる. もしくはその場で変数を評価して確認.

EmacsのパッケージのREADMEをシュッとみる

M-x describe-packageで説明を見る.

Doom Emacsだと, M-x doom/describe-packageからソースコードへのジャンプができるので, GitHubから落としてきたREADMEをそのままローカルで見ることができる.

init.elをOrg Fileから生成するには?

ref. Emacsの設定(その2)設定ファイル(init.el)をorg-modeで管理する

init.elをOrg Fileから生成してそうなサイト

example: Doom Emacs実装

わたしの場合,Doom Emacsをつかっている(2022現在)ので,init.elではなくconfig.elに設定を追加.

(require 'org-install)
(org-babel-load-file "~/.doom.d/nothung.org")

babel-loader

以前,babel-loaderをつかってOrg fileを細かく分割して管理していたが,カオスになったのでゴミ箱に捨てました.

✅Emacs トラブルシューティング

主に困ったことに対する対処(よく困る). Emacsが立ち上がらなくなるとわくわくしますよね?

Emacsがフリーズする

ガーベジコレクションの設定をいじる.

いじれない. もういいや…

recentfでEmacsがハングする

recentfで保存できる数を調整する.

defaultは20らしい. 3000で設定していたときはよくハングした.

(setq recentf-max-saved-items 300)

行番号を表示すると遅くなる

Doom Emacs FAQからの情報. 行番号表示をしているとスクロールがおそくなることがある.

ref. doomemacs/faq.org at develop · doomemacs/doomemacs · GitHub

確かに思い当たるフシがあるため実験てきに行番号は隠してみる.

(setq display-line-numbers-type nil)

進展があればupdateする.

fcitxでEmacs GUIの日本語入力ができないときの対処方法

環境変数でLC_CTYPE=zh_CN.UTF-8を設定して起動する.

link: Input method related environment variables - Fcitx

#!/bin/bash
LC_CTYPE=zh_CN.UTF-8 emacs

日本語情報がなくて苦戦したが中国語でも同じ課題があるだろうという観点で検索したら解決方法か見つかったので載せておく.

✅Emacsで絵文字が豆腐になる

Note Emojiというフォントをシステムにインストールしたら直った. Emacsはこれを読み込んでいるようだ.

https://github.com/googlefonts/noto-emoji


  • emacs-emojifyではどうにもならなかつた.
  • たとえばArchLinuxだと, yay -S noto-fonts-emoji でインストール.
  • 📝絵文字(Emoji)

Emacs思想

📜DWIN

do what i mean.

computer systems attempt to anticipate what users intend to do, correcting trivial errors automatically rather than blindly executing users’ explicit but potentially incorrect input.

いちいちユーザに聞かないでよしなにやってくれ.

<2025-02-01 Sat 09:21> 最近流行りの🤖AI Agentsもこれ.


ref. vim-jpラジオのEmacs回に出演しました

DWIM(ドゥウィム)は元々はXeroxのInterlisp方面で研究/実践されていたもので、コンテクストに応じて変化するUIです。

Interlispの対話機能にはは、シェルの履歴呼び出し、対話的な補完機能、アンドゥ、スペル修正等がありましたが、これらのUIをパクったものは後世のUnixシェル等、結構あります。またpareditなどもInterlispの構造エディタの流れにあると思います。

Emacsモチベ

📜風になりたい奴だけがEmacsを使えばいい - tomoya


✨風邪になりたいやつだけがEmacsを使えばいい

Emacsポエム

テンション上がるやつ. 🎓エモいやつ.

🔖Emacsian

Emacsをつかう人のこと. Emacsianと思っていたが、みんなEmacsierといってる?

https://tokyo-emacs.connpass.com/

👨るびきち

Emacsの布教に尽力した男.

わたしはるびきちさんの情報発信を元にEmacsに入信した. 賢威で作られたサイトやメルマガなどの情報商材も楽しみにしていた.

現在(2022), ネット上から消えてしまった… 死んでしまったのかもしれないが復活してほしい.

👨takaxp

Org-modeのヤバい人.

syohex

takeokunn

vim-jpラジオのEmacs回に出演しました

🔍Emacs Rocks!

🔧magnars/multiple-cursorsを開発したmagnarsさんのYoutube.

昔ワクワクしながら全部みてた.

🔗References

Emacs設定ブックマーク

GitHubでみつけたヘンタイを適宜追加.