基本操作
これらの操作を覚えるのは大変と思うかもしれないが,使っていくうちに体が覚え,一度覚えてしまうと,マウスや矢印ボタンなどで操作するのに比べると圧倒的に楽になる. それが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を利用することにした.
参考サイト
インストール
- Installation of ECB for GNU Emacs users
- finkもしくはportsでインストール可能か?
ECBの起動
M-x ecb-activate
で起動させる.
キー操作
C-c . g m
: ecb-goto-window-methodsC-c . g s
: ecb-goto-window-sourcesC-c . g d
: ecb-goto-window-directoriesC-c . g h
: ecb-goto-window-historyC-c . g 1
: ecb-goto-window-edit1C-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)