基本操作

これらの操作を覚えるのは大変と思うかもしれないが,使っていくうちに体が覚え,一度覚えてしまうと,マウスや矢印ボタンなどで操作するのに比べると圧倒的に楽になる. それがemacsから離れられない理由の一つ.

ファイル&画面 操作

C-xと書いてある場合は,Controlボタンとxボタンを同時に押すことを意味する. C-x fとあるときは,C-xの後に,fボタンを押すこと.

キーバインド操作
C-x fファイルを開く
C-x kファイルを閉じる
C-x 2画面を縦に分割
C-x 3画面を横に分割
C-x 1画面を一つにする

カーソル操作

キーバインド操作
C-p上へ移動
C-n下へ移動
C-b左へ移動
C-f右へ移動
C-a行の先頭へ移動
C-e行の末尾へ移動
C-v次のページ
M-v前のページ
M-x goto-line, M-g g指定行へ移動

エディタ操作

キーバインド操作
C-d一文字削除
C-k一行削除
C-SPCマークセット
C-wマークからカーソルまでカット
M-wマークからカーソルまでコピー
C-yペースト
C-s検索
C-r前方検索
M-x occur検索してリストアップ
C-x r kマークからカーソルまで矩形カット
C-x r tマークからカーソルまで矩形入力

Outline minor mode

キーバインドは設定次第ではあるが...

キーバインド操作
C-c C-o C-t全体を折りたたむ
C-c C-o C-a全体を開く
C-c C-o C-eカーソル位置のみ開く

occur

参考:ありえるえりあ

;; カーソル位置の単語をバッファ内から探す設定例
(global-set-key "\C-o" (lambda () (interactive)
                         (if (thing-at-point 'symbol)
                             (occur (thing-at-point 'symbol))
                           (call-interactively 'occur))))

このように設定することで,C-oで,カーソルの位置の単語をoccurで検索できて便利.

マルチバッファのoccur検索も上記サイトには記載されているが,結構面倒らしい.


覚書

行頭の「c」を「!」に変更する

fortranの固定形式でのコメント行である行頭の「c」を,自由形式のコメント行である「!」に一括変更したいことがある.そんな場合に重宝する. M-x replace-regexp RETとして,「^c」を検索,「!」にreplace.

emacsを開いた状態でファイルのロード

M-x load-file RETとすると,ファイルを指定するよう求められる.

自動改行を無効にする

例えば70文字以上の行を書くとemacsが勝手に改行を挿入する.これを「auto-fill-mode」という変数が決めているようだ.自動改行を無効にするには,M-x auto-fill-modeとすると,ON/OFFを切り替えられる. ~/.emacs.d/init.elなどに,

  (setq text-mode-fook 'turn-off-auto-fill)

と記述しておくと,初期設定がOFFになるらしい.


マルチファイル検索

emacsを使っているのに,複数のファイルからキーワードを検索するために,いちいちemacsを終了して...などとやるのはアホらしい.emacsの内部でマルチファイル検索を行い,ヒットしたファイルを開くことが可能.これは少し大きなプログラムを開発しだしたら当然マルチファイルになるので,覚えておくべき機能.

インストール

デフォルトではemacsには含まれていないかもしれないので,インストールが必要だが...忘れた. どこかのサイトを参考にしてインストールせよ!

lgrep, rgrep

  • lgrep: (local?) grep: 指定したディレクトリ内のファイルを検索.
  • rgrep: (recursive?) grep: 指定したディレクトリ以下のファイルを検索.

M-x lgrepなどのようにして起動して,あとは検索キーワード,検索ディレクトリなどを入力していけばよし.

マルチファイル置換

上記でマルチファイル検索が可能になったが,マルチファイル置換はすぐには実現できないように思える. しかし,上記のマルチファイル検索後に,検索結果のgrepバッファ内で文字列を置換し,C-c C-eをすると該当ファイルにその置換の結果が反映される.そのままではファイルが保存されていないから,C-x sで保存すること.


ECB (Emacs Code Browser)

ソースコードの中であるメソッドに移動しようする場合を考えると, 検索しようにメソッド名をうろ覚えのときなどは,メソッド一覧なんかを見ながら探したい要求がある. しかし,Javaではoutline minor modeが上手く働かないように思える. そこで,メソッド一覧を提供してくれるECBを利用することにした.

参考サイト

インストール

ECBの起動

M-x ecb-activate で起動させる.

キー操作

  • C-c . g m: ecb-goto-window-methods
  • C-c . g s: ecb-goto-window-sources
  • C-c . g d: ecb-goto-window-directories
  • C-c . g h: ecb-goto-window-history
  • C-c . g 1: ecb-goto-window-edit1
  • C-c . g 2: ecb-goto-window-edit2

Functions

  • M-x ecb-change-layout: Layoutの変更 (left1,left8)など

変更日付を自動更新する

(require 'time-stamp)
(add-hook 'before-save-hook 'time-stamp)
(setq time-stamp-active t)
(setq time-stamp-pattern "8/[lL]ast[ -]modified:[ \t]+\\\\?[\"<]+%:y-%02m-%02d %02H:%02M:%02S %U\\\\?[\">]")

ここで,time-stamp-pattern%Uはユーザのフルネーム.

ファイルの先頭付近に,

;; Last-modified: <>

のように記述しておくと,

;; Last-modified: <2015-01-27 18:01:29 Ryo KOBAYASHI>

のように自動的に更新してくれる.


Markdown-mode & Marked.app on MacOSX

M-x package-list-packageとして,markdown-modeを選択(ボタンi)し,インストールを実行(ボタンx)する.markdown-modeが表示されない場合,package.elのインストールの際に,しっかりと参考URLを登録していない可能性があるので,package.elのインストール手順を見て参照URLを登録する.

.emacsファイルに以下のように書いておけば,*.mdファイルを開くとmarkdownモードが有効になり,C-c mでMarked.appを用いて原稿を表示するようになり,Marked.appを開いておけば,その後はセーブする度にオンタイムで反映されるようになる.

;;===== markdown-mode
(autoload 'markdown-mode "markdown-mode"
  "Major mode for editing Markdown files" t)
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
(defun markdown-preview-file ()
  "run Marked on the current file and revert the buffer"
  (interactive)
  (shell-command 
   (format "open -a /Applications/Marked.app %s" 
       (shell-quote-argument (buffer-file-name))))
  )
(global-set-key "\C-cm" 'markdown-preview-file)