開発環境

# 開発環境メモ
## Emacs 23~
設定は ~/.emacs.d/init.el に記述していきます。

### 最初にやること
1. キーバインドを好きなように変える。
2. Ctrl と Capslock を入れ替える。
3. 基本的なキーバインドを覚える。
** カーソル移動、改行、ファイル保存、行削除など。
** プログラミングをする場合は \C-\M-\ でリージョンや行をインデントできる等を知っておくと楽しい。
** リージョンの選択、コピー、切り取り、貼り付けの操作はできておくと良い。

* キーバインドはデフォルトから↓のように変えている。よく使う機能は指の可動領域に合わせて設定しよう。
(global-set-key "\C-k" 'backward-char) ;; カーソルを左に
(global-set-key "\C-l" 'forward-char) ;; カーソルを右に
(global-set-key "\C-o" 'kill-line) ;; カーソルから右を削除
(global-set-key "\M-o" 'kill-word) ;; カーソルの右の単語を削除
(global-set-key "\M-l" 'forward-word) ;; 単語レベルで左へ移動
(global-set-key "\M-k" 'backward-word) ;; 単語レベルで右へ移動
(global-set-key "\M-h" 'delete-backward-word) ;; カーソルから左の単語を削除。デフォルトで存在する関数ではないが、関数を定義しておくと便利。
(global-set-key "\C-h" 'backward-delete-char) ;; Backspace と同じ役割

### バッファ
* 一度開いたファイルは \C-x k で画面を削除しない限り残り続けている。別なバッファに戻りたいときは \C-x b でバッファの切替ができる。

### 見た目
* モチベーション維持のために色の細かな設定は重要だが、設定が面倒な人は color-theme を使うと楽。
* Ricty フォントを使うと、読みやすかったり、oO0の区別がついたりする。
* 必要な人は行数を表示させることもできる(wb-line-number.el)。

### 知っておくと便利
* \C-x 2 や 3 で画面の縦横分割ができる。
* \C-x \C-f でファイルを開くときに、ディレクトリを指定すると Dired モードになる(\C-x d でも)。
** ディレクトリ内のファイルの操作を Emacs から手軽にできる。
* レジスタを使うとカーソル位置を保存することができる。他にもいろいろできる。
* flymake はうまく設定するとソースコードの構文エラー等を強調表示してくれる。
* 各プログラミング言語ごとに便利な設定があるので調べると良い。

### おすすめ .el
#### auto-install
Emacs Wiki や gist から人の作った .el を手軽にインストールできる。

#### highlight-indentation
インデントをハイライトして見やすくする。

#### key-chord
\C-x f 等のストロークは面倒なので、同時押し(またはキーの連続入力)による関数実行を実現する。文字 2-gram の頻度が低いところに割り当てよう。

#### auto-complete
文字列の補完ができる。プログラミング時には非常に便利。

#### anything
バッファやファイル、リファレンス等の検索を絞込みで行える。\C-x b(ibuffer) の代わりに設定して、スペースによる&検索を有効にすると非常に便利。

#### magit
Emacs 上から git が使える。使いやすい。

#### yatex
Emacs で TeX を書く時には必須。

#### undo-tree
ファイルの編集履歴をツリーで表示し、遡ることができる。便利だけど少し遅い。

#### pop-win
Anything のバッファなど、ちょっとした情報を表示するために作成されたバッファを自動的に閉じる。

### color-moccur
バッファや指定ディレクトリの grep ができ、マッチしたファイルを開いたりバッファに移動できたりする。Anything と組み合わせると非常に便利。

## zsh
いろいろな設定ができるコマンドラインシェル。初めて使う人は oh-my-zsh をインストールすると補完機能等がついてくるので、違いが分かる。

### おすすめ設定
#### z
空気を読んでディレクトリ移動してくれる。

#### zaw
Anything の zsh 版のようなもの。履歴の絞込み検索などができる。

## screen, tmux
いつか書く

Comments