オススメのEmacsの標準関数と自作関数のBindingsオススメのEmacsの標準関数と自作関数のBindings#emacs2023年3月28日emacsはサードパティ製のパッケージを使わなくても、標準の関数を利用してコーディングが可能です。便利なのにデフォルトではバインドされていない関数があったりするので、オススメの関数ちょっと紹介します。それに加えて、関数を作成して編集が楽になるバインディングも紹介します。全体のコードはページの最後にまとめてあります。'kill-this-buffer)kill-this-bufferは現在開いているバッファを閉じます。'toggle-truncate-lines)toggle-truncate-linesはテキストがウィンドウの端まで到達し、画面外に文字を伸ばすのか、折り返すのかを切り分ける関数です。コーディングしているときは外部にはみ出したほうが読みやすかったり、はたまた文章を書くときは折り返されたほうが読みやすかったりします。はみ出した行を切り取る。はみ出した行を折り返す。表示の切り替えをすぐにできたほうが便利なのでM-lにバインドします。M-lはデフォルトではdowncase-wordが割り当てられています。これはカーソルの位置から見て前に大文字の単語があれば、それを全て小文字にするという関数です。コーディングでも文章を書くときでも利用するシーンは少ないので上書きします。comment-or-uncomment-region選択している範囲のコードをコメントイン、コメントアウトを切り替える関数です。コードを書いているときに素早くコメントアウトできるのは重要です。/でコメントアウトします。/でコメントインします。revert-buffer-no-confirmここからはemacsの標準の関数を使うのではなく、いろんなサイトを参考にして作った関数を使います。revert-buffer-no-confirmはバッファのリロード機能です。バッファはファイルを直接編集しているわけではないので、たまにファイルとバッファで差分が生まれます。gitを利用していて、ブランチを移動したり、リベースしたりすると、ファイルとバッファが異なる状態になります。バッファ側の内容を優先させるのではなく、gitで移動した先のファイル情報をバッファに適応したい場合にrevert-buffer-no-confirmを実行してバッファをリロードします。'revert-buffer-no-confirm)上書きするC-M-rはデフォルトでisearch-backward-regexpです。これは正規表現を利用してカーソルより前の文字を検索するバインドです。一般的にC-rのisearch-backwardを使うので上書きしても問題ありません。kill-dired-buffersemacsはバッファでフォルダを開くことできます。C-fでファイルじゃなくフォルダを選んでエンターを押すと、フォルダ情報がバッファに展開されます。バッファに開かれたディレクトリバッファ内でフォルダを移動すると、このように、大量にディレクトリバッファが開かれます。1つ1つ削除するのは大変なので、kill-dired-buffersで一括削除します。mark-whole-wordmark-whole-wordはカーソルの下にある英単語全体を選択します。プログラムを書いていて、目的の変数にカーソルを移動して、その変数をコピーまたは切り取りしたいとします。単語の先頭までカーソルを移動し、C-SPCで選択モードにして、変数の終わりまでカーソルを移動して、M-wでコピー、C-wで切り取りをするのは正直面倒です。mark-whole-wordを使えば一瞬で選択されます。'mark-whole-word)変数にカーソルを合わせます。@を実行すると、userAge変数が全て選択されます。copy-wordこのコマンドはカーソルの下にある単語をコピーします。1つ前のmark-whole-wordは選択でしたが、こちらはそれのコピーバージョンです。ringに単語がコピーされます。カーソルがある行を丸ごとコピーするコマンドです。まとめバインドした関数とショートカットをまとめておきます。lここで挙げたもの以外にもEmacsは標準で搭載されていて便利な関数があるので、ぜひ自分で探して、バインドしてみてください。'copy-whole-line)Ted大学でコンセンサスアルゴリズムを研究。卒業後ベンチャー企業に入社してフルスタックでWebサービスを開発。現在は大手IT企業に転職し、プログラミングを行っている。AIにプログラマーの仕事を奪って欲しいと願っている。