はとのーと

エジソンノート(アイデア、思い付き、メモ)として使っています。誰かの役に立つかもしれないので公開しています。

GNU Emacsについてのメモ

(2020-01-24更新)

GNU Emacsについて「知らなかったけれど後から調べたら便利だった」というようなことを自分用にメモしています。

目次:

操作

単語やリージョンを大文字/小文字/キャピタライズする
  • 後続の単語を
    • M-l - 小文字に変換する
    • M-u - 大文字に変換する
    • M-c - 大文字で始める
  • リージョンを
    • C-x C-l - 小文字にする
    • C-x C-u - 大文字にする
単語や文 (コードブロック) で移動する
  • 単語
    • M-b - 前の単語へ移動
    • M-f - 次の単語へ移動
  • 文 (コードブロック)
    • M-a - 前の文の先頭へ移動
    • M-e - 次の文の最後へ移動
指定した文字まで削除する
  • M-z e - 次の e まで削除する
  • C-u 2 M-z e - 2つ目の e まで削除する
連続したスペースを1つにまとめる
  • M-SPC - 連続したスペースを1つにまとめる
タブやスペースを見られるようにする
  • M-x whitespace-mode RET
現在のファイルをディスクから再読み込みする
  • M-x revert-buffer RET yes RET
行番号や桁を表示する

~/.emacs に以下を書き加える。

常に行番号を表示する。

;; 26.0.50以降
(global-display-line-numbers-mode)
;; 26.0.50より前
(line-number-mode t)

モードラインに現在行と桁を表示する。

(column-number-mode 1)
カスタマイズする

M-x customize でバッファにカスタマイズ画面が表示され、グループを選んで設定を変更できる。

各種プログラミング言語用モードは Programming グループに入っている。

各種モード

Erlang (erlang-mode)

Erlang -- Erlang mode for Emacs - 公式ドキュメント

~/.emacsか~/.emacs.d/init.elに以下のように記入する。 (パスはArch Linuxの例)

(setq load-path (cons "/usr/lib/erlang/lib/tools-3.2.1/emacs/" load-path))
(setq erlang-root-dir "/usr/lib/erlang/lib/")
(setq exec-path (cons "/usr/lib/erlang/bin/" exec-path))
(require 'erlang-start)

erlang.elでインデントにスペースを使うようにする - YAMAGUCHI::weblog

インデントをタブではなくスペースにするには以下を追加する。

(add-hook 'erlang-mode-hook '(lambda() (setq indent-tabs-mode nil)))

代表的な操作:

  1. コードは自動的にインデントされる。インデントが間違っていたらTABで調整
  2. 選択範囲を C-c C-cコメントアウトC-c C-u でコメントを外す
    • 現在行ではなく選択範囲に対して行われるので注意すること
  3. コードを書いたら C-c C-kコンパイル
  4. Erlang shellバッファが開くので操作する
  5. Erlang shellバッファを閉じるにはinit:stop().を入力してから C-x k でバッファを削除
Go言語 (go-mode)

基本的にはemacsで快適なGo言語ライフを送るための設定 - Qiitaに従う。

ただしgolintの取得で次のエラーが出たのでURLを変更して取得した。

go get github.com/golang/lint/golint
package github.com/golang/lint/golint: code in directory /home/paz/.go/src/github.com/golang/lint/golint expects import "golang.org/x/lint/golint"

go get golang.org/x/lint/golint
reStructuredText (rst-mode)

C-c C-a C-aで見出し文字が挿入される。 繰り返すと文字が変わる。

書いている最中に変なインデントが入ったら TAB キーで是正できる。

参考:

シェル (sh-mode)
  • (setq tab-width 4) - タブを4にする
  • (setq sh-basic-offset 4) - インデントを4にする
  • (setq indent-tabs-mode nil) - タブ文字ではなく空白文字でインデントする
    • nilt にするとタブ文字を使用する

以下のようにまとめて指定できる。

(add-hook 'sh-mode-hook (lambda () (setq tab-width 4 sh-basic-offset 4 indent-tabs-mode t)))