スレッド一覧へ

※このページは個人サイト内のBBS風マイクロブログコンテンツです。

Emacs日記

Emacsを導入しようとしている。そのメモを記録。
自分が感覚的に理解するためのメモなので、表現は必ずしも正確ではないです。

参考

1:noratetsu2025/08/19 02:56

インストール自体はちょっと前にやっていた。
ディストリビューションにSpacemacsを選択。たまたま見た記事にそれがいいって書いてあったから。
で、インストールしたもののホーム画面からどうしたらいいのかわからず、なんだか面倒くさい気分になってしばらく放置。

Spacemacs: Emacs advanced Kit focused on Evil

2:noratetsu2025/08/19 02:58
言及先
1:noratetsu2025/08/19 02:56

インストール自体はちょっと前にやっていた。
ディストリビューションにSpacemacsを選択。たまたま見た記事にそれがいいって書いてあったから。
で、インストールしたもののホーム画面からどうしたらいいのかわからず、なんだか面倒くさい気分になってしばらく放置。

Spacemacs: Emacs advanced Kit focused on Evil

>>1

ホーム画面からどうしたらいいのか問題は、ホーム画面でそのままショートカットキーを押せばいいだけだった。ChatGPTに聞いた。
C-x(=Ctrl+X)とかM-x(=Alt+x)とかを押すと画面の一番下にメニューがスッと出てきて、続きのキーを押すと何かしらコマンドが実行されるらしいことがわかる。

キーバインドがどうこうと言われても個人的にはイメージしづらいのだが、メニューを開くショートカットキーがまずあって、それを開いた状態でキーを押していくと項目を選択・実行できるという話のようだ。それ自体は、普通のアプリケーションで右クリックメニューを開いた時、コマンドに括弧付きで書き添えてある文字を押せばそれが実行される、ということとそれほど変わらない。
M-xについては、VSCodeとかObsidianとかでお馴染みの、上部に入力欄を出してコマンドを入力して選択するというのと似ている。それらに受け継がれたということなのかもしれない。

3:noratetsu2025/08/19 03:00

ホームディレクトリは~で表現される。これは最近Linuxをインストールして見かけていたので困惑はしなかったが、そもそもこれはどこを指しているのか。

WindowsだとC:\Users\ユーザー名\AppData\Roaming\に設定されているようだ。

これは不便なので変えたい。
Emacs内で設定変更するのではなく、コンピュータの環境変数を変える必要がある。
Win+X→「検索」とかで検索画面を出し、「環境変数」で調べて「環境変数を編集」を探して実行。
「ユーザーの環境変数」の方に、「HOME」という環境変数を作って好きなディレクトリのアドレスを入れる。
「EMACS_HOME」とかではなく単に「HOME」という一般的っぽい変数名でちょっと心配になったが、今のところ設定されていなかったから、他のアプリケーションはこの名前の環境変数を使ってはいないらしい。

Emacsの初回起動前にやっておいたほうがスムーズだったな。

参考:Windows10にEmacs 27.2をインストールしました - 近藤嘉雪のプログラミング工房

4:noratetsu2025/08/19 03:13

Emacsはエディタ自体をプログラムで自分好みに変えられる、みたいなことを聞くが、抽象的すぎてなんだかよくわからなかった。

要は、~/.emacs.d/init.elといったファイルに、Emacs Lispという言語(通称Elisp、Lisp方言)でプログラムを書くということが、他のアプリケーションでの各種設定の役割を果たしているようだ。
プログラムによってなされているので、一般的な「設定」より様々なことが自由にできるということだ。

エディタ自体をプログラミングでゼロから作るとかアプリケーションのプラグインを作って機能を追加するということは既にやっていることなので、自由とはどういうことかというのはわかる。

5:noratetsu2025/08/19 03:15

例えば日本語フォントを変えるにはこんな感じで書けばいいようだ。

(set-fontset-font nil 'japanese-jisx0208
                  (font-spec :family "Hiragino Sans"))

参考:【解決済み】Emacs 30で日本語のデフォルトフォントが変わる - Kuranari::Log

6:noratetsu2025/08/19 03:16

ダークテーマは好きじゃないのでライトテーマに変える。

(load-theme 'spacemacs-light t)

ChatGPTに聞いた。

7:noratetsu2025/08/19 03:28

プレフィックスキーというのは、コマンドを実行するにあたり「その前にまず押すキー」という感じのもののようだ。

キー 役割
C-x 基本的な機能を呼び出す
C-c ユーザー定義のキーバインド
M-x コマンド名を入力して実行
C-h ヘルプ(=F1)

テキスト入力時に使うコマンド(切り取りなど)はプレフィックス不要の普通のショートカットキーになっており、Emacsの機能を呼び出す時にはプレフィックスキーに続けてキー入力することで実行するということか。

8:noratetsu2025/08/19 03:35

Emacs教習所に行ってきた(チートシート付き) #editor - Qiita

よっぽどドMじゃない方は Ubuntu等のLinux系OSでEmacsを使いましょう。Macはまだ未検証でなんとも言えないのですが、少なくともWindowsでEmacsを使おうとすると数々の困難が訪れます。Windowsの環境しか用意できないという方なら、VirtualBox等で仮想環境を使用すると楽にEmacsをためせます。

え、そうなの?
うーん。Linuxを入れたPCは別に普段遣いはしないからなあ。
でもWindowsでEmacs使ってるっていう記事普通にあるし、大丈夫じゃないのかね。

9:noratetsu2025/08/19 04:50
言及先
8:noratetsu2025/08/19 03:35

Emacs教習所に行ってきた(チートシート付き) #editor - Qiita

よっぽどドMじゃない方は Ubuntu等のLinux系OSでEmacsを使いましょう。Macはまだ未検証でなんとも言えないのですが、少なくともWindowsでEmacsを使おうとすると数々の困難が訪れます。Windowsの環境しか用意できないという方なら、VirtualBox等で仮想環境を使用すると楽にEmacsをためせます。

え、そうなの?
うーん。Linuxを入れたPCは別に普段遣いはしないからなあ。
でもWindowsでEmacs使ってるっていう記事普通にあるし、大丈夫じゃないのかね。

>>8

EmacsとWindowsと人生と #Windows10 - Qiita

elispパッケージをメンテしているLinuxユーザーやMacユーザーが当たり前にある、としているものが、Windowsには根こそぎ存在しないからである。

WindowsでEmacsを使おうとする限り、少なくとも闇雲に日本語で検索しても有用な情報はほとんどヒットしない、ということは知っておくべき事柄だ。
君がやるべきことは、検索ではなく偵察だ。パッケージのelファイルを開き、それが呼び出している外部コマンドを調べ、例えばtrampが実際に何を使ってSSH接続しようとしているかを調べることだ、そうして、問題になっている関数名までわかったところで、ようやく英語のまともな情報にありつける。

ははあ、なるほど。
今なら生成AIに聞けばなんとかなるか?

10:noratetsu2025/08/19 05:07

xyzzy - カスタマイズ可能で軽快な Windows 用テキストエディタ

随分昔にフリーウェアを発掘していた時に見かけたテキストエディタだが、Emacsクローンということだったのか。
名前を見かけただけで実際ダウンロードすることはしなかった。

11:noratetsu2025/08/19 05:21
言及先
1:noratetsu2025/08/19 02:56

インストール自体はちょっと前にやっていた。
ディストリビューションにSpacemacsを選択。たまたま見た記事にそれがいいって書いてあったから。
で、インストールしたもののホーム画面からどうしたらいいのかわからず、なんだか面倒くさい気分になってしばらく放置。

Spacemacs: Emacs advanced Kit focused on Evil

>>1

Spacemacsを入れたせいでメニューバーが非表示になったのがわけわからなさを増していた気がする。
ということで再表示。ChatGPTに聞いたら.spacemacsファイルのdotspacemacs/user-configセクションに以下を書けばよろしいと教えられた。

(menu-bar-mode 1)
(tool-bar-mode 1)
(scroll-bar-mode 1)

セクションはファイル内の一番下にあった。

(defun dotspacemacs/user-config ()
  "Configuration for user code:
This function is called at the very end of Spacemacs startup, after layer
configuration.
Put your configuration code here, except for variables that should be set
before packages are loaded."
  (menu-bar-mode 1)
  (tool-bar-mode 1)
  (scroll-bar-mode 1)
  )

再起動して表示されるようになった。

いやメニューバーめっちゃ便利やんけ。Emacsというアプリケーションそのものに慣れるまでマウス操作していったほうがいいだろう。Emacsの仕組みに慣れたら「より快適に」を目指してキーバインドを覚えていく。「より」をいきなり目指さない。

12:noratetsu2025/08/19 05:58
言及先
11:noratetsu2025/08/19 05:21
言及先
1:noratetsu2025/08/19 02:56

インストール自体はちょっと前にやっていた。
ディストリビューションにSpacemacsを選択。たまたま見た記事にそれがいいって書いてあったから。
で、インストールしたもののホーム画面からどうしたらいいのかわからず、なんだか面倒くさい気分になってしばらく放置。

Spacemacs: Emacs advanced Kit focused on Evil

>>1

Spacemacsを入れたせいでメニューバーが非表示になったのがわけわからなさを増していた気がする。
ということで再表示。ChatGPTに聞いたら.spacemacsファイルのdotspacemacs/user-configセクションに以下を書けばよろしいと教えられた。

(menu-bar-mode 1)
(tool-bar-mode 1)
(scroll-bar-mode 1)

セクションはファイル内の一番下にあった。

(defun dotspacemacs/user-config ()
  "Configuration for user code:
This function is called at the very end of Spacemacs startup, after layer
configuration.
Put your configuration code here, except for variables that should be set
before packages are loaded."
  (menu-bar-mode 1)
  (tool-bar-mode 1)
  (scroll-bar-mode 1)
  )

再起動して表示されるようになった。

いやメニューバーめっちゃ便利やんけ。Emacsというアプリケーションそのものに慣れるまでマウス操作していったほうがいいだろう。Emacsの仕組みに慣れたら「より快適に」を目指してキーバインドを覚えていく。「より」をいきなり目指さない。

>>11

てかinit.elじゃなくて.spacemacsに書くのか、と思ったけど、ChatGPTに聞いたら「Spacemacsを使ってるんなら独自設定はこっちに書いた方がいいよ」って言われたのでそういうものらしい。
その辺のことはSpacemacsのドキュメントとかに多分ちゃんと書いてるんだと思うけど横着している。

13:noratetsu2025/08/19 06:25

そもそもなぜEmacsを使おうとしているのか。

  • なんとなく「ちんぷんかんぷんのまま」なのが嫌だったから。
  • ObsidianとVSCode以外でmdファイルをObsidian的に扱う手段を欲しており、プログラムで拡張できるEmacsにその可能性を感じているから。
    • 全部自力で作ると細かい挙動を詰めるのが面倒くさいのでプロが作ったアプリケーションに乗っかりたい。
  • Webアプリケーションと階層付きテキスト以外のやり方でアウトライナーを使いたいから。
    • 階層付きテキストをテキストエディタで扱うのは、内容のアウトラインの確認にはいいが、アウトライン構造を利用した機能の追加みたいなことができない(難しい)のが難点。
    • ローカルのプレーンテキストで表現したアウトライン構造に独自機能を持たせられるアプリケーションを欲している。
  • Androidアプリの「Orgzly」というのを一時期使っていて、その元であるOrg-modeが気になっているから。
    • 仮にEmacsをメインに使うとした場合、スマホではOrgzlyを使えばいいからシームレス。
14:noratetsu2025/08/19 06:45

一般的なショートカットキーを使えるようにしたい。上書きするのは危険なので試しにC-cに続けて入力することで一般的な挙動になるようにしてみる。

(defun dotspacemacs/user-config ()
  ;; Undo:
  (global-set-key (kbd "C-c C-z") 'undo)

  ;; Redo:(redo+ パッケージが必要)
  ;; (global-set-key (kbd "C-c C-y") 'redo)

  ;; Cut:
  (global-set-key (kbd "C-c C-x") 'kill-region)

  ;; Copy:
  (global-set-key (kbd "C-c C-c") 'kill-ring-save)

  ;; Paste:
  (global-set-key (kbd "C-c C-v") 'yank)

  ;; Select All:
  (global-set-key (kbd "C-c C-a") 'mark-whole-buffer)

  ;; Save:
  (global-set-key (kbd "C-c C-s") 'save-buffer)

  ;; New File:
  (global-set-key (kbd "C-c C-n")
                  (lambda () (interactive)
                    (find-file (read-file-name "New file: "))))

  ;; Search:
  (global-set-key (kbd "C-c C-f f") 'isearch-forward)
  (global-set-key (kbd "C-c C-f b") 'isearch-backward)

  ;; Replace
  (global-set-key (kbd "C-c C-r") 'query-replace)
)

あーでもこれ、何かのパッケージをインストールした時に干渉する可能性があるか?
もう一段階まとめた方がいいかもしれないが、Undoにキー三回押すとかなると現実的じゃないな…。

15:noratetsu2025/08/19 13:10
16:noratetsu2025/08/19 13:36
言及先
14:noratetsu2025/08/19 06:45

一般的なショートカットキーを使えるようにしたい。上書きするのは危険なので試しにC-cに続けて入力することで一般的な挙動になるようにしてみる。

(defun dotspacemacs/user-config ()
  ;; Undo:
  (global-set-key (kbd "C-c C-z") 'undo)

  ;; Redo:(redo+ パッケージが必要)
  ;; (global-set-key (kbd "C-c C-y") 'redo)

  ;; Cut:
  (global-set-key (kbd "C-c C-x") 'kill-region)

  ;; Copy:
  (global-set-key (kbd "C-c C-c") 'kill-ring-save)

  ;; Paste:
  (global-set-key (kbd "C-c C-v") 'yank)

  ;; Select All:
  (global-set-key (kbd "C-c C-a") 'mark-whole-buffer)

  ;; Save:
  (global-set-key (kbd "C-c C-s") 'save-buffer)

  ;; New File:
  (global-set-key (kbd "C-c C-n")
                  (lambda () (interactive)
                    (find-file (read-file-name "New file: "))))

  ;; Search:
  (global-set-key (kbd "C-c C-f f") 'isearch-forward)
  (global-set-key (kbd "C-c C-f b") 'isearch-backward)

  ;; Replace
  (global-set-key (kbd "C-c C-r") 'query-replace)
)

あーでもこれ、何かのパッケージをインストールした時に干渉する可能性があるか?
もう一段階まとめた方がいいかもしれないが、Undoにキー三回押すとかなると現実的じゃないな…。

>>14

無変換キーとか使ったらいいんじゃないか?

Emacs:キーバインドの設定の仕方 | kobapan@wiLiki

と思ったが、AutoHotkeyでいじってるからそのままでは駄目か。
普段使わない特殊キーは無効にして修飾キー化しちゃってるから逆にEmacsでは使えない…。

17:noratetsu2025/08/19 22:25

ところでキーバインドの状態が今どうなっているのかを確認するにはどうするか。

キー コマンド 役割
C-h k describe-key 続けてキーバインド入力でコマンド割当がわかる
C-h w where-is 続けてコマンド名入力でキーバインド割当がわかる
C-h f describe-function 続けてコマンド名入力でコマンドの意味がわかる

C-hはF1でも可。

18:noratetsu2025/08/19 22:40
言及先
16:noratetsu2025/08/19 13:36
言及先
14:noratetsu2025/08/19 06:45

一般的なショートカットキーを使えるようにしたい。上書きするのは危険なので試しにC-cに続けて入力することで一般的な挙動になるようにしてみる。

(defun dotspacemacs/user-config ()
  ;; Undo:
  (global-set-key (kbd "C-c C-z") 'undo)

  ;; Redo:(redo+ パッケージが必要)
  ;; (global-set-key (kbd "C-c C-y") 'redo)

  ;; Cut:
  (global-set-key (kbd "C-c C-x") 'kill-region)

  ;; Copy:
  (global-set-key (kbd "C-c C-c") 'kill-ring-save)

  ;; Paste:
  (global-set-key (kbd "C-c C-v") 'yank)

  ;; Select All:
  (global-set-key (kbd "C-c C-a") 'mark-whole-buffer)

  ;; Save:
  (global-set-key (kbd "C-c C-s") 'save-buffer)

  ;; New File:
  (global-set-key (kbd "C-c C-n")
                  (lambda () (interactive)
                    (find-file (read-file-name "New file: "))))

  ;; Search:
  (global-set-key (kbd "C-c C-f f") 'isearch-forward)
  (global-set-key (kbd "C-c C-f b") 'isearch-backward)

  ;; Replace
  (global-set-key (kbd "C-c C-r") 'query-replace)
)

あーでもこれ、何かのパッケージをインストールした時に干渉する可能性があるか?
もう一段階まとめた方がいいかもしれないが、Undoにキー三回押すとかなると現実的じゃないな…。

>>14

無変換キーとか使ったらいいんじゃないか?

Emacs:キーバインドの設定の仕方 | kobapan@wiLiki

と思ったが、AutoHotkeyでいじってるからそのままでは駄目か。
普段使わない特殊キーは無効にして修飾キー化しちゃってるから逆にEmacsでは使えない…。

>>16

AutoHotkeyで直接変えるんじゃなくてまずChangeKeyでF13~F24に割り当ててからそれに対してAutoHotkeyで設定する形に統一すれば多分Emacsでも割り当てられる。
AppキーだけF24にしてるけど他はAutoHotkeyで変えてるからやり方を考え直してもいいかも。

…と思ったけど、違う、既にChangeKeyで変換キーの類にF13~F16まで割り当てていてそれにAutoHotkeyでホットキーを設定してるんだった。
でもChangeKeyでF15になっているキー(かな変換)を押してもEmacsで反応しない。
AutoHotkeyでF24になっているキーはEmacsでF24と出る。
なぜ。

ChangeKeyでF13にしているNumLockは、Emacs上では一回目の押下はなぜか半角/全角の挙動をして二回目はF13扱い。
???

19:noratetsu2025/08/20 00:30

Markdown Modeについて。

Markdown Mode for Emacs
Markdown Modeと久々に向き合う #Emacs - Qiita
自己流Markdown modeの使い方 #Emacs - Qiita

Windows環境のEmacsでマークダウンモード(markdown-mode.el) ref: http://qiita.com/umeneri/items/8824907d50e3108481b3 · GitHub

Spacemacsだからか、mdファイルを作った時点で「Markdown modeインストールする?」と訊かれたのでインストールした。なんかいろんなパッケージが一回にインストールされたっぽい。

EmacsでMarkdownを編集する | ユニコーンリサーチ

Spacemacsは Markdown Layerを提供しており、けっきょくはmarkdown-modeが入るためこちらを利用する手もあります。
数多くのキーバインドがSpacemacs流に定義されているため、その必要性に応じて選択すると良いでしょう。

20:noratetsu2025/08/21 00:30

Goさんの記事、今ならすいすい読める。

Org との日々 #8
Org との日々 #12

全くの初心者にもわかるように丁寧に書いてくれている、ということが今はわかる。しかし本当の初心者はそれでも圧倒されてしまうのがEmacsの持つ「異界」感。

21:noratetsu2025/08/22 09:21
22:noratetsu2025/08/22 09:45
23:noratetsu2025/08/22 09:51
24:noratetsu2025/08/22 12:31

Obsidianとファイルを共有したいのでmdファイルでWikiリンクを使えるようにしたいと思ったけど、それができるようなパッケージってないのか?
ChatGPTは存在しないパッケージをインストールするよう言ってきたり無効なコードを書いてきたりで信用ならない。

25:noratetsu2025/08/22 12:46
言及先
24:noratetsu2025/08/22 12:31

Obsidianとファイルを共有したいのでmdファイルでWikiリンクを使えるようにしたいと思ったけど、それができるようなパッケージってないのか?
ChatGPTは存在しないパッケージをインストールするよう言ってきたり無効なコードを書いてきたりで信用ならない。

>>24

ずばりobsidianというパッケージがあった。
obsidian - MELPA
GitHub - licht1stein/obsidian.el: Obsidian Notes for Emacs

インストールしてみたけどこれで諸々解決しそうな気はする。
ただし見出しへのジャンプには対応していないと思われる。

26:noratetsu2025/08/22 12:49

WindowsだとOrg-roamのインストールに苦労するかもしれないというメモ(まだ試してない)。

Windows 10 で Spacemacs org-roamを使う!! - スタジオHANABUSA

27:noratetsu2025/08/22 13:03

Org-modeをちょっと触ったけど、これはどう頑張ってもプロセス型にはならない。
プロパティをいろいろ付けられるとかあれこれ機能があるのはいいけど、自分が思う「アウトライナー」ではないかもしれない。