Getting Started Emacs

agdaに挑戦して即死した話 - エンジニアですよ! で書いたように、emacsが必要になった

そこで、emacsを入門することにした。

vimに慣れすぎて頭がvimベースになっているが、emacsemacs.

別のエディタなので別の考え方をしないといけなそう。

やってみてとりあえず辛いところを書きなぐって解消していく感じかなぁ

  • text objectがないのは辛い
  • M- なキーバインドを押すのが辛い
    • 単語単位の移動がM- なのが辛い
  • 選択どうやるの?矩形選択とか
  • Exモード相当の操作は・・・M-xなのかな?
  • 直前のコマンドを繰り返す的なのは・・・
  • 行コピーとか行削除とかしたいんだけどc-a c-kとかしかないのかなー
  • 繰り返し実行の回数の指定とかは・・・
  • 設定ファイルの書き方(文法)や置き場所はどこ?
  • パッケージ管理はどうすればいいの?
  • f, F, t, T相当の移動がないのがきついなー
  • なんでC-hは前方削除じゃないんだ・・・?
    • C-hが前方削除なのはUnixの慣習であって、emacsUnixのバックグラウンドを持っていないからだとwikiに書いてあった
  • 最近使ったファイルとか、Bookmarkとかしたい
  • Unite的なもの(anything?)
  • filer

設定の変更が気軽にできないのがだいぶ辛いので、まず設定ファイルの編集をemacsでやって慣れてみようと思う

あとはExモード相当のものがないのがしんどそう・・

M-xの機能を覚えよう

まず設定の基本から

http://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html#Init-File

最初に読み込まれるファイルは以下らしい。

なんか~/.emacsに~/.emacs.d/init.elの読み込みを書くみたいなページをよく見る気がするが、全部読み込まれるなら~/.emacsだけでいい気がする

古いバージョンだと挙動が違うのだろうか。

ひとまず~/.emacs.d/init.elを使うことにして、ファイルは全部~/.emacs.d以下にまとめるようにしようと思う。

設定はemacs lispで書く。これは楽しそうではある

入門としてはこれが良さそうだ。 http://d.hatena.ne.jp/rubikitch/20100201/elispsyntax

しかもこれを読むとemacsの基本が身につきそうな気がする。便利

設定でやりたいところとしては

  • まずは見た目を変えたい
    • colorschemeを変える
    • 透過させる
  • 補完はなる早で入れたいので最低限のパッケージ管理
  • 各ファイルタイププラグイン相当のものとかを入れる
    • Agda←まぁこれがやりたくてemacs使っているので
    • 最近よく書いているrubyの環境を整えてみるとか

これをやりつつemacs lisp入門を読みつつemacsに慣れていこうと思う。

Emacs Lisp基礎文法最速マスターを読む

ひと通り読んだ。

まぁlisp系言語なのかなというくらいの感想

C-h fで関数のヘルプが見れることと、C-h vで現在の変数の値とかが見れるということを知れたのが良かったことだと思う。

これで書きながら勉強できる。

というかこの方emacsの鬼なのか。

この人のブログとかひたすら読めば勉強になりそうだな。

colorscheme変える

なんかいくつか記事を見たところ、colorschemeを変えるにもやはりパッケージ管理ができていたほうが便利そうだから先にそっちやろう

あとなんかemacsではcolor themeって言うっぽい?

パッケージ管理

http://emacs-jp.github.io/packages/package-management/package-el.html

(ここでemacs-jpの存在に気付く。積極的に見ていこう.)

package.elというのを使うらしいのでinstallしようと思ったら、なんと24以降では標準添付とな。

ということでインストール不要

ここに書いてある通りに使うpackageを書いてく。

package-list-packagesを使ってインストールする方法も結構書いてあるが、何を入れたかわからなくなりそうなので明記する。

例の通り↓これでやる。my/favorite-packagesにインストールしたいパッケージを突っ込みまくって、package-installed-pでインストール済みかどうかを判定して、インストールしていなければインストールということ。

(require 'package)
;; MELPAのみ追加
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(package-initialize)

;; パッケージ情報の更新
(package-refresh-contents)

;; インストールするパッケージ
(defvar my/favorite-packages
  '(
    auto-complete fuzzy popup pos-tip
    ))

;; my/favorite-packagesからインストールしていないパッケージをインストール
(dolist (package my/favorite-packages)
  (unless (package-installed-p package)
    (package-install package)))

これでパッケージは自由自在に入れられそうだ。

けど設定をどうするのかはまだわからない

とりあえずauto-completeを設定してみよう。

http://cx4a.org/software/auto-complete/index.ja.html

ここ読めば良さそう。

インストールのところにpackage.elでインストールの手順がないような気がするが、package.elを使うとpathには入れてくれたようなはずだから、その後の設定っぽいところを入れる

これ↓

(require 'auto-complete-config)
(ac-config-default)

これで動く!!動いた!!

細かい設定はあと。とりあえずなんとなくわかってきた。

色々入れちゃう。

こんなんなった

(defvar my/favorite-packages
  '(
    ;; auto-complete
    auto-complete  fuzzy popup pos-tip

    ;; buffer utils
    popwin elscreen yascroll buffer-move

    ;; helm
    helm
    
    ;; using shell PATH
    exec-path-from-shell

    ;; undo utililty
    undo-tree

    ;; git
    magit git-gutter

    ;; ruby
    enh-ruby-mode
    ruby-block
    ruby-electric

    ;; color-theme
    darcula-theme
    ))

color themeに戻る

http://emacsthemes.caisah.info

ここで見つけたDarculaのthemeが気に入ったのでこれをpackage.elを使って入れる。

ただ、これ文字がすごくでかいので文字サイズを変える

http://www.emacswiki.org/emacs/SetFonts

文字サイズはこれで変えるらしい

(set-face-attribute 'default (selected-frame) :height 100)

(selected-frame)nilにすると全部のframeに適用とのこと。

http://d.hatena.ne.jp/kazu-yamamoto/20140625/1403674172

ここにもあるけど、フォントの設定マジ難しい。

疲れてきた。

まずやろうと思ってたことできてないけど・・・

続きはまたこんど