Emacsの設定とショートカットキー

emacsが開発されないで消え去る説もあるが、昔からemacsを使ってるので今更vimのコマンド覚える気にならずに使ってる。

パッケージ管理はel-getで便利にできる。新しい言語などmodeを追加したい場合に、ダウンロードする時など使用する。
diredバッファでtmuxのように複数画面出したり、ファイラーのように使えるの多用する。


#インストール(ubuntu系)
```sudo apt-get install emacs```
#インストール(centos系)
```sudo yum install emacs```

#基礎知識
~のついたファイルはバックアップファイル
emacsで編集したファイルのバックアップがフォルダ内に出来上がります。
いらなくなったら消しましょう。


#日本語対応
日本語対応しとかないと日本語をコピペしたときに、コピペできなくてハニャ！？ってなる。
~/.emacs.d/init.elに下記を保存
M-X eval-bufferで反映

```el:~/.emacs.d/init.el
(set-language-environment 'Japanese)
(prefer-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(setq file-name-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
```

```bash:~/.bashrc
export LANG=ja_JP.UTF-8
```

#emacsでバックアップファイルを作らない

```:.emacs
;;; *.~ とかのバックアップファイルを作らない
(setq make-backup-files nil)
;;; .#* とかのバックアップファイルを作らない
(setq auto-save-default nil)
```

http://qiita.com/emahiro/items/da60c24913998d857140

# emacsをno windowで起動する
下記を追加

```:.bashrc
alias sudo='sudo '
alias emacs='emacs -nw'
```

# ショートカット
ファイル名編集
M-x wdired-change-to-wdired-mode
C-cC-c か C-xC-s
ctrl + x s:ファイル保存
ctrl + x c:ファイル終了
ctrl + z:ファイル一時停止
（emacsをバックグランドに退避させコマンドラインに戻る。
jobsコマンドやfgコマンドを使用してemacsでの処理に戻る）
ctrl + 2 : 2画面表示
ctrl + 1 : 1画面表示
ctrl + x + o :カーソルを別の画面に移動
ctrl + f:新しいファイルを開く。新しいファイルを作成する
ctrl + @,ctrl + w:切り取り
ctrl + @,meta(escキー) + w:コピー
ctrl + y:貼り付け
ctrl + x,u:１個前の処理に戻る

###M-系 (単語や文単位の移動)
キーバインド	コマンド	機能
M-f	forward-word	次の単語へ移動
M-b	backward-word	前の単語に移動
M-d	kill-word	単語を削除
C-delete	bacward-kill-word	一つ前の単語を削除
M-@	mark-word	前の単語をマーク
M-a	backward-sentence	前の文に移動
M-e	forward-sentence	次の文に移動
M-k	kill-sentence	文を削除
M-z	zap-to-char	指定した文字まで削除 参考
M-SPC	just-one-space	連続したスペースを一つにまとめる



###文字列一括置換
> M-x query-replace # または M-x query-replace-regexp
> Query replace: sample
> Query replace sample with: example
> ! # ★コレでした
スペース:1つ置換
n:スキップ


#diredバッファ

ファイルを選択して移動したり便利なことが色々できる

詳細はこっち
http://qiita.com/l3msh0/items/8665122e01f6f5ef502f


#el-getを入れる
~/.emacs.d/init.elに下記を記述。一回閉じて再度開く。

```
;; So the idea is that you copy/paste this code into your *scratch* buffer,
;; hit C-j, and you have a working el-get.
(url-retrieve
 "https://raw.github.com/dimitri/el-get/master/el-get-install.el"
 (lambda (s)
   (goto-char (point-max))
   (eval-print-last-sexp)))
```

~/.emacs.d/init.el(または.emacs)に書き足してM-x load-file init.el 

```
(add-to-list 'load-path "~/.emacs.d/el-get/el-get")

(unless (require 'el-get nil 'noerror)
  (with-current-buffer
      (url-retrieve-synchronously
       "https://raw.github.com/dimitri/el-get/master/el-get-install.el")
    (goto-char (point-max))
    (eval-print-last-sexp)))

(add-to-list 'el-get-recipe-path "~/.emacs.d/el-get-user/recipes")
(el-get 'sync)
```

さっき貼ったところを消して上を貼り付けM-x load-file init.elしたらel-getの準備OK

```
  <M-x> el-get-install lua-mode
  <M-x> el-get-install php-mode
```

基本的には.luaファイルは勝手にmodeになるんですがたまにならない時がある。
ならなかったらM-x lua-mode でLua-modeに切り替わります。
M-x lua-mode が打てない時はload-file init.dしてみる。



#php modeを入れる（直接入れる場合）
```wget https://github.com/ejmr/php-mode/archive/v1.13.1.zip```
```unzip v1.13.1.zip```
```sudo cp php-mode-1.13.1/php-mode.el /usr/loca
l/share/emacs/24.3/site-lisp/```
php-mode.elをビルド
M-x byte-compile-fileでphp-mode.elを指定
~/.emacs/init.dに追記
```;; php-mode
(load "php-mode")```
```M-x eval-buffer```


--------------
#設定例

```
;; 環境を日本語、UTF-8にする
(set-locale-environment nil)
(set-language-environment "Japanese")
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(prefer-coding-system 'utf-8)

;; スタートアップメッセージを表示させない
(setq inhibit-startup-message t)

;; バックアップファイルを作成させない
(setq make-backup-files nil)

;; 終了時にオートセーブファイルを削除する
(setq delete-auto-save-files t)

;; タブにスペースを使用する
(setq-default tab-width 4 indent-tabs-mode nil)

;; 改行コードを表示する
(setq eol-mnemonic-dos "(CRLF)")
(setq eol-mnemonic-mac "(CR)")
(setq eol-mnemonic-unix "(LF)")

;; ウィンドウを透明にする
;; アクティブウィンドウ／非アクティブウィンドウ（alphaの値で透明度を指定）
(add-to-list 'default-frame-alist '(alpha . (0.85 0.85)))

;; 列数を表示する
(column-number-mode t)

;; 行数を表示する
(global-linum-mode t)

;; カーソル行をハイライトする
(global-hl-line-mode t)

;; 対応する括弧を光らせる
(show-paren-mode 1)

;; ウィンドウ内に収まらないときだけ、カッコ内も光らせる
(setq show-paren-style 'mixed)
(set-face-background 'show-paren-match-face "grey")
(set-face-foreground 'show-paren-match-face "black")

;; スペース、タブなどを可視化する
(global-whitespace-mode 1)

;; スクロールは１行ごとに
(setq scroll-conservatively 1)

;; シフト＋矢印で範囲選択
(setq pc-select-selection-keys-only t)
(pc-selection-mode 1)

;; C-kで行全体を削除する
(setq kill-whole-line t)

```

#参考
http://qiita.com/ongaeshi/items/d78ab6e3e4219b7cd0ab
http://d.hatena.ne.jp/practice4prepressman/20130911/p3
http://qiita.com/yn01/items/b8d3dcb5be9078a6e27f
http://kurogomapurin.hatenablog.com/entry/2014/08/18/234419