読者です 読者をやめる 読者になる 読者になる

存在を忘れられる備忘録

あれこれTwitterじゃ流れるから残しときたい書き物用

init.elのお話(後編)

前回に続きEmacsのinit.elのお話。後編では個人的に便利だと思った設定の中でも別途.elファイルが必要なものを紹介。といっても、導入方法までは説明しませんが。

anything

説明しにくいけれどあると世界が変わるので一度入れてみるといいと思います。補完とか候補の表示を同じインタフェースでやりましょうみたいな。

popwin

Emacsの何がイライラするって補完候補の表示とかでも一々バッファ作って下から生えてくることだと思います。その操作の間だけ表示して、終わればさっと消えてくれるのが多分使いやすい挙動ですよね?それを実現するのがpopwinです。これを入れておけば、予め指定されたバッファをポップアップ表示してくれます。

yasnippet

スニペット(コードの断片)を挿入できたり新しく作れたり。javaのクラス定義とか一々書くの面倒臭いじゃないですか。これとanythingと組み合わせることでめちゃくちゃ便利に。新規スニペットの作成とかもお手軽で割と便利です。

flymake

構文チェックをリアルタイムで行ってくれます。セミコロン抜けてるだけでエラー吐かれるコーディングとはもうおさらばだ!!最初調べると一々Makefile書かないといけないみたいな感じであまり使い勝手よさそうに思ってなかったのですが、設定書けばなくても動くみたいです。うまく設定してあげるといろいろな言語で動くみたいですがまだCとC++Pythonでしか設定してないです。

color-moccur + moccur-edit

occurという機能がもともとEmacsに備わっているのですが、それをもっと便利に拡張したものがcolor-moccurです。そもそもoccurの存在を知らなかったという私みたいな人のために紹介しておくと、occurとはバッファ内で検索したい文字列を入れると別バッファにその文字列が含まれる行だけを抽出して表示してくれる機能です。これだけでも割と便利なのですが、moccur-editを入れるとそ の抽出バッファから編集を行うことができるようになります。

google-translate

Google翻訳の機能をEmacsから使用できます。知ったのがつい最近なのですが、英語苦手界隈は入れてて損はないと思います。

auto-complete

これを入れればIDEみたいな補完ができるようになる…のですが、自分は設定が悪いのかうまく機能してません。多分ちゃんと設定したら便利だと思います。


結局前の記事と合わせて自分が使っているものの半分以上を紹介した気がします。そろそろinit-loaderあたりを導入して整理し始めたほうがいいような気がするのですが中々やる気になれないですね。ちなみにinit-loaderはinit.elを複数ファイルで管理することができる感じのやつです。

どうでもいいですが大学でEmacsを使う練習はあったのですがVimを使う練習が無かった。せめて紹介くらいするべきでは…。

init.elのお話(前編)

ブログタイトル通りのことになっていたので更新。

この4ヶ月間でEmacsのinit.elが気づけば400行近くになっていたので、どういう設定をしているのかを確認するついでに便利だと思うものを紹介。前編では(多分)init.elに書くだけでいいお手軽なものを紹介。

load-path

(let ((default-directory (expand-file-name "~/.emacs.d/site-lisp")))
    (add-to-list 'load-path default-directory)
    (if (fboundp 'normal-top-level-add-subdirs-to-load-path)
        (normal-top-level-add-subdirs-to-load-path)))

確かこれで ~/.emacs.d/site-lisp 以下のディレクトリを全部ロードパスに追加してくれるはず。いちいちgit cloneするたびにload-path追加する必要とかなくなります。

ツールバーとかスクロールバーを消す

(tool-bar-mode 0)  ; ツールバーの非表示
(scroll-bar-mode -1)  ;スクロールバーの非表示

Emacs使ってる時にツールバーが必要になる場面が想像できないですし、限りある資源を有効活用するためにも消去した方がいいと思います。

スクロールバーに関しては大差無いような気もしますが、表示していると重くなるとかいう記事を何処かで見た気がします。

背景透過

(set-frame-parameter nil 'alpha 80 )

Emacsで背景に画像を表示しようとするとパッチ当てたりしないといけないみたいだったので、Emacsを透過してデスクトップの背景を表示させる作戦。かわいい女の子の画像が後ろに表示されてるだけで作業が捗る人種以外は、そこまで便利な設定でもないと思います。

対応する括弧の強調表示

(show-paren-mode 1)

その名の通り。emacs lispとか書いてるとかなり重宝します。

補完時に大文字小文字の区別をしない

(setq read-buffer-completion-ignore-case t)
(setq read-file-name-completion-ignore-case t)

無いと大文字のファイルを開く気が失せる。

行番号の表示

(add-hook 'find-file-hook (lambda () (linum-mode 1)))
(setq linum-format "%4d: ")
(setq linum-delay t)
(defadvice linum-schedule (around my-linum-schedule () activate)
(run-with-idle-timer 0.2 nil #'linum-update-current))

ただ行番号を表示させるだけなら上2行だけで大丈夫ですが、これがドチャクソ重いみたいで、軽くするために下3行の設定が必要、らしい。http://d.hatena.ne.jp/daimatz/20120215/1329248780 に詳しいことが。

C-kで行全体を削除

(setq kill-whole-line t)

最初の設定では改行だけ残すのを、改行ごと消す設定。C-k2回押しが身についている人は下手に有効にしないほうが良さそう。

wdiredによるファイルのリネーム

(require 'dired)
(require 'wdired)
(define-key dired-mode-map "r" 'wdired-change-to-wdired-mode)

diredのバッファを使ってファイルのリネームができる。その時に開いてるバッファ名とかもいい感じに変更してくれる。

コマンドラインからも現在開いているEmacsを使用

(require 'server)
(unless (server-running-p)
  (server-start))

そのまま。最初は有効にしてなかったけど、あると案外便利。

矩形選択

(cua-mode t)
(setq cua-enable-cua-keys nil)

Emacsデフォルトの矩形選択は使いにくさしかないですが、これを入れればC-Enterで矩形選択モードに入ることができます。

#!で始まるファイルに実行権限を与える

(add-hook 'after-save-hook
    'executable-make-buffer-file-executable-if-script-p)

chmod とか打ってられない人向け。正直そこまで使わない気もする。

後編に続く。

tkbctfに参加しました

大学入って以来初めてまともに情報系のことをやった気がした。
こういったctfに参加するのは初めてだったので、新入生チームに混ぜて貰う形での参加に。
最初の方の初心者向け問題は割と手が付けられたり、何とか解けていたりできていたのだけど、中上級者向け問題が出た夕方以降はさっぱりでした。
一応1問だけ最速で解けてチームに貢献できたのでよかった(小並感) 参加するだけでも色々知識が付けられる感じだったので今後もどこかしらのチームにくっついて参加して、技術を盗めたらと思う。

Clojure始めます(仮)

大学入ったこの機会に新しく言語を覚えようかと思っていたところ、「Clojure楽しいよ!!」みたいな勧誘を受けたので早速図書館でプログラミングClojureを借りて来ました。まだ読み始めていませんが、軽く調べた感じでは、JVM上で動くLISPといったところでしょうか。

Macでの環境構築

%brew install clojure
%brew install repl
%clj
user=>

このようにHomebrewを導入していればすぐに対話式実行環境まで起動できる(はず)です。 ただ、この対話式実行環境が不便なので、

%brew install leiningen
%lein repl
user=>

とすることでより便利な対話式実行環境が使えるようになります。 leiningenはClojureのビルドツールらしいです。正直あんまりわからないのでおいおい学んでいく予定。

やっと作った

後から振り返る(?)用に作った。

前々から作ろうとは思ってたけど音ゲー受験で忙しかったので先延ばしに…

無事に大学生になれたので作っちゃった(・ω<)☆みたいな

色々学んだこととかあったこととか書く予定、多分。