Emacs便利Tips集
前回emacsの設定に触れたので、ついでに僕の使っている便利関数達を紹介してみる。
折り返し表示
Emacs は長い行はデフォルト折り返し表示ですが
ソースコードの場合は、却って見難く成りがちです。
僕は [Ctrl+c l] で切り替えてます。
;; truncate line (defun toggle-truncate-lines () "toggle truncate lines" (interactive) (if truncate-lines (setq truncate-lines nil) (setq truncate-lines t)) (recenter)) (global-set-key "\C-cl" 'toggle-truncate-lines)
大小文字区別検索
Emacs はデフォルト、大文字、小文字を区別なく検索しますが
区別したい場合もあります。
そんなときは [Ctrl+c s] で切り替え!
;; case fold (defun toggle-case-fold-search () "toggle case-fold-search" (interactive) (if case-fold-search (setq case-fold-search nil) (setq case-fold-search t)) (recenter)) (global-set-key "\C-cs" 'toggle-case-fold-search)
ディレクトリ再帰grep
デフォルトのgrepは使い難い。
[Ctrl+c g] 後、<検索文字>
で再帰検索です。
(defun rgrep() "Run rgrep" (interactive) (grep (read-string (format "[%s]$ " (replace-regexp-in-string "^[^ ]+ " "" (pwd))) "grep -n -I -s -r . -e ") ) ) (global-set-key (kbd "C-c g") 'rgrep)
ファイル内grep
こちらは現在のファイルだけをgrep
[Ctrl+x g] 後、<検索文字>
(defun fgrep() "Run fgrep" (interactive) (grep (read-string (format "[%s]$ " (replace-regexp-in-string "^[^ ]+ " "" (pwd))) (format "grep -n -I -s %s -e " (buffer-file-name) ))) ) (global-set-key (kbd "C-x g") 'fgrep)
grep後のジャンプ
Emacs は next-error , previous-error でコンパイルエラーの行へジャンプ出来るのですが
実は
<ファイル名>:<行> ...
というフォーマットをパースしているだけです。
よってgrep結果もその形で出力してあげれば、飛べます!!
例によってショートカットをそれぞれ[f12]、[Meta+f12]に振ってます。
(global-set-key [f12] 'next-error) (global-set-key (kbd "ESC <f12>") 'previous-error) (global-set-key [\C-f12] 'next-error) (global-set-key [\M-f12] 'previous-error)