Emacsとは
👨リチャード・ストールマンが開発した🔖GNUのフリーソフトウェア.
Index
- 🔖Emacsパッケージ
- 📝Doom Emacs
- 📝Emacs Lisp
- 📝Emacs テキスト編集
- 📝Emacs コーディング支援(IDE)
- 自分のEmacsのポエムはこっち: 🌳Emacs
🐤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活用.
- https://github.com/ahyatt/llm: 統合IFのデファクトスタンダード
- https://github.com/s-kostyaev/ellama/: 🐄Ollama IF.
- https://github.com/s-kostyaev/elisa, RAG連携
ChatGPT
- https://github.com/joshcho/ChatGPT.el
- https://github.com/junjizhi/aide.el
- https://github.com/xenodium/chatgpt-shell
Org-mode
Refs
- Emacsの対話セラピー機能doctorをChatGPTに対応させる, Emacsの組み込み対話AIのdoctorをChatGPTに対応
- 最強ローカルLLM実行環境としてのEmacs | 日々、とんは語る。
🔧GitHub Copilot.el
📝GitHub Copilot連携. いろいろpackageはあるものの今のところはcopilot.elがよい.
Journals
<2023-03-26 Sun 12:06>
: 現在この話題についてはいろんなパッケージが乱立している.- 💭Org-modeでcopilot-mode有効にしてメモをつくってたら単語の意味補間してくれて吹いたw
- 💭LispエイリアンがさっそくChatGPTのClojure nREPL(w/ Emacs CIDER)を作成してた
<2024-11-27 Wed 17:24>
ローカルLLMのトレンドがきている.
💻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/
- Atomic Chrome for Emacs - EmacsでChromeのテキストエリアをリアルタイム編集 - Qiita
- Atomic-Chrome再訪 - Qiita
- GmailなどのtextareaをEmacsで編集する – mhatta’s mumbo jumbo
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から生成してそうなサイト
- https://takaxp.github.io/init.html
- https://www.grugrut.net/posts/my-emacs-init-el/
- https://mugijiru.github.io/.emacs.d/basics/custom-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を細かく分割して管理していたが,カオスになったのでゴミ箱に捨てました.
- 🖊babel-loader:org-mode で init.el を管理する方法 | Futurismo
- https://github.com/tsu-nera/dotfiles/tree/master/.emacs.d
✅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思想
- 📝自由ソフトウェア, こればliberty. 責任をともなう.
📜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もこれ.
DWIM(ドゥウィム)は元々はXeroxのInterlisp方面で研究/実践されていたもので、コンテクストに応じて変化するUIです。
Interlispの対話機能にはは、シェルの履歴呼び出し、対話的な補完機能、アンドゥ、スペル修正等がありましたが、これらのUIをパクったものは後世のUnixシェル等、結構あります。またpareditなどもInterlispの構造エディタの流れにあると思います。
Emacsモチベ
📜風になりたい奴だけがEmacsを使えばいい - tomoya
Emacsポエム
テンション上がるやつ. 🎓エモいやつ.
🔖Emacsian
Emacsをつかう人のこと. Emacsianと思っていたが、みんなEmacsierといってる?
https://tokyo-emacs.connpass.com/
👨るびきち
Emacsの布教に尽力した男.
わたしはるびきちさんの情報発信を元にEmacsに入信した. 賢威で作られたサイトやメルマガなどの情報商材も楽しみにしていた.
現在(2022), ネット上から消えてしまった… 死んでしまったのかもしれないが復活してほしい.
👨takaxp
Org-modeのヤバい人.
- Twitter: https://twitter.com/takaxp
- blog: https://pxaka.tokyo/blog/
- GitHub: https://github.com/takaxp
syohex
takeokunn
🔍Emacs Rocks!
🔧magnars/multiple-cursorsを開発したmagnarsさんのYoutube.
昔ワクワクしながら全部みてた.
🔗References
- Emacs Mirror(readonly repositories)
Emacs設定ブックマーク
GitHubでみつけたヘンタイを適宜追加.