萌えハッカーニュースリーダー

2025/10/19 22:42 Using Emacs as a TUI

出典: https://blog.natfu.be/emacs-in-terminal-ergonomics/
hakase
博士

ロボ子、今日のITニュースはEmacsをターミナルで使う時のキーバインド問題じゃ。

roboko
ロボ子

Emacsをターミナルで使用すると、キーバインドが期待通りに動作しないことがあるんですね。具体的にはどのような問題があるんですか?

hakase
博士

`emacs -nw`で起動すると、`Ctrl+Backspace`が`Ctrl+h`として認識されることがあるらしいのじゃ。これは困るぞ。

roboko
ロボ子

`Ctrl+Backspace`が`Ctrl+h`になるのは、バックスペースキーの挙動が変わってしまうということですね。解決策はあるんですか?

hakase
博士

解決策は、Emacsとターミナルエミュレータの両方でKitty Keyboard Protocolを使うことじゃ!`kkp`とghosttyターミナルエミュレータが推奨されておる。

roboko
ロボ子

Kitty Keyboard Protocolですか。初めて聞きました。具体的にどう設定すれば良いんでしょう?

hakase
博士

Emacsの初期化ファイルに設定を追加するだけで良いのじゃ。簡単じゃろ?

roboko
ロボ子

なるほど。他にも品質向上のための設定があるみたいですね。`$EDITOR`環境変数の設定について書かれていますが。

hakase
博士

`$EDITOR`環境変数を設定する時は、空白を含まない実行ファイルを指定する必要があるのじゃ。そして、`emacsclient`を使うことで、Emacsの起動遅延を回避できるぞ。

roboko
ロボ子

`emacsclient`を使うと起動が早くなるんですね。systemdを使ってEmacsデーモンをバックグラウンドで起動する方法も紹介されていますね。

hakase
博士

そうじゃ!systemdを使うと、Emacsデーモンをバックグラウンドで起動して、`emacsclient`で新しいフレームを即座に開けるのじゃ。ユーザー単位でsystemdサービスを設定するには、`~/.config/systemd/user/emacsd.service`にファイルをコピーして調整するのじゃ。

roboko
ロボ子

サービスの開始と有効化は、`systemctl --user start --now emacsd.service`と`systemctl --user enable --now emacsd.service`ですね。

hakase
博士

その通り!Linuxでは、`.desktop`ファイルを使ってGUIレベルでアプリケーションとインタラクトできるのじゃ。Arch Linuxでは、'Emacs (Client)'エントリをクリックすると、クライアントに接続してフレームを作成できるぞ。

roboko
ロボ子

`.desktop`ファイルは、GUIアプリケーションのランチャーとして使われるものですね。システム全体で有効なファイルとユーザー固有のファイルで配置場所が違うんですね。

hakase
博士

`Super+E`にクライアント呼び出しをバインドしたり、`e=$EDITOR`をエイリアスとして設定してターミナルでエディタを開くのも便利じゃ。

roboko
ロボ子

キーバインドやエイリアスを設定することで、さらに効率的にEmacsを使えるんですね。

hakase
博士

さらに、テーマやパッケージのロードをGUIとTUIで分けるために、複数のEmacsクライアントを使うこともできるのじゃ!

roboko
ロボ子

複数のEmacsクライアントですか。ソケット名を指定して、GUI用とTUI用のsystemdサービスファイルを作成するんですね。

hakase
博士

そうじゃ!デスクトップファイルは`gui`クライアントを参照し、ターミナルのエディタは`tui`クライアントを参照するようにするのじゃ。最後に、systemdデーモンをリロードし、サービスを開始および有効化すれば完了じゃ!

roboko
ロボ子

Emacsをターミナルで快適に使うための設定、色々あるんですね。勉強になりました!

hakase
博士

これでロボ子もEmacsマスターじゃな!ところでロボ子、Emacsで一番好きなキーバインドは何じゃ?

roboko
ロボ子

そうですね…やはり`Ctrl+x Ctrl+c`でEmacsを終了するところでしょうか。

hakase
博士

ふむ、終わらせるんかい!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search