Emacs」カテゴリーアーカイブ

I

Emacs 検定

「SKKの意味を答えなさい」で吹いたwwwいやいやいやwww
(正しくは Simple Kana to Kanji system とかだったとおもう)
(追記:自信なかったからぐぐったら Simple Kana to Kanji conversion program だった)

最近Emacsのテキスト編集以外の機能をもっと使いこなしたいなーと模索中。
先日、会社のブログ用に「ファイル中から特定の関数を抽出」なるネタを書いて以来、Emacsのバッチモードに目覚めつつあります。場合によってはperlでワンライナー書くより使い勝手いいかもしれない。
コーディング規約に沿ってソースコード自動整形とかできそう。と思ったけどそれperltidyでいいか。

 ***

先週はなんだか普段あまりやらないようなタイプの仕事が多くてちょっと疲れ気味。
人と喋らず座ってコード書いてるだけの仕事がしたい。
家のコタツで誰とも喋らずコード書いてるだけの、8時間労働で月収10万円くらいの仕事があったらたぶん転職すると思う。
と書いてみてから思ったけど5年くらい前だったらアフィリエイトとかまじめにやってたら軽くそれくらいいけてたかもしれん。
でも5年前にそれ始めてたら今頃間違いなく月収五千円くらいのニートになってたのでやらなくてよかったともおもう。

なんかよくわかんないですが要は五月病の季節だってことです。
来年こそコタツ出す。

Meadow3 → Emacs23 乗り換えメモ

なんとまあひさびさにemacs日記です。
個人的なメモを会社のブログとかに書くのもどうかと思ったのでこっちに書き散らかしておくよ。
個人的なメモなので興味のある人以外はスルー推奨ですよ。

 ***

ムスメと戯れることに必死でプログラム書いてる暇もない日々の中、ふと「emacs使いたい病」が発症し、いいかげんいつまでたっても更新される気配がないMeadowに見切りをつけてNTEmacsに乗り換えてみたよ。ようやくemacs23デビューだぜ!

うん、まあ、要するに現実逃避ってやつです。

 ***

emacs本体のインストール

http://ftp.gnu.org/gnu/emacs/windows/
から emacs-23.2-bin-i386.zip をダウンロード。

日本語入力にMS-IMEとか使いたい場合は、
http://sourceforge.jp/projects/gnupack/
から日本語版を落としたほうがいいかもしれない。
今回はどのみちSKK使うから関係なかろうということで本家の方を使用。

解凍したフォルダを適当な場所(日本語の含まれてないパスのほうがいいかも。今回はとりあえず C:/emacs/)に設置、emacs/bin/ にパスを通しておく。

.emacs を読み込ませたい場所を環境変数HOMEに指定。

emacs/bin/runemacs.exe で起動!

SKKのインストール

APELが必要らしいのでダウンロード。
http://kanji.zinbun.kyoto-u.ac.jp/~tomo/elisp/APEL/index.html.ja より apel-10.8.tar.gz

make があれば普通に make install でいいんですが、Windows 環境で make 入れてない場合は makeit.bat を使うらしい。

makeit.bat を開いて下のように編集。

 set PREFIX=C:\emacs
set EMACS=%PREFIX%\bin\emacs.exe
set LISPDIR=%PREFIX%\site-lisp

コンパイルしてインストール。(日本語の含まれてないパスでやったほうがいいかも)

 > makeit.bat elc
> makeit.bat install

続いて SKK をダウンロード。
http://openlab.ring.gr.jp/skk/main-ja.html より、ddskk-14.0.91.tar.gz

辞書(SKK-JISYO.L)もついでに。
http://openlab.ring.gr.jp/skk/wiki/wiki.cgi?page=SKK%BC%AD%BD%F1

解凍して、ddskk/dic/ に SKK-JISYO.L を置いておく。

APELと同様に makeit.bat を編集、コンパイルしてインストール。

auto-install.el

http://www.emacswiki.org/emacs/download/auto-install.el
をダウンロード、site-lispに置く。
.emacsに以下を設定

 ;; auto-install
(require 'auto-install)
(setq auto-install-directory "~/bin/emacs/site-lisp/auto-install/")
(auto-install-update-emacswiki-package-name t)
(auto-install-compatibility-setup)

ハイパーelispインストールタイム!!!

とりあえず必要そうなの

 (install-elisp-from-emacswiki "color-moccur.el")
(install-elisp-from-emacswiki "moccur-edit.el")
(install-elisp-from-emacswiki "wdired.el")
(install-elisp-from-emacswiki "session.el")
;(install-elisp-from-emacswiki "minibuf-isearch.el")
(install-elisp "http://www.sodan.org/~knagano/emacs/minibuf-isearch/minibuf-isearch.el")

# ↑をscratchにコピペしてざくざく実行。なぜかminibug-isearchはemacswikiから落とせなかった。
# ダウンロードした後 C-c C-c でバイトコンパイルしてインストール

なんかminibuf-isearchで「migemo入ってねーよ」なエラー。なにこれ。
migemoとか使わないんでとりあえず適当にoffっとく。

 (setq minibuf-isearch-use-migemo nil)

anything.el

ここ数年emacs界隈で話題になっててなんか超便利そうだけどインストールして設定すんのめんどくせえなー、つーか今更基本的な操作体系変えるのもなー、
とか思ってずっと敬遠してたんですが、最近はコマンド一発+設定一行でさくっと使えるんですね。
しかも普通に C-xC-f とか M-x とかしたら起動してくれるっぽい。
ならいっちょ使ってみるかってことでインストール。

 (auto-install-batch "anything")

を実行→ C-c C-c 連打。便利な時代になったもんだ。

あとは .emacs に

 (require 'anything-startup.el)

って書いておくだけ。簡単じゃのー。

使い方とか特に意識しなくても普段の操作の中で勝手にanythingが立ち上がってくれるっぽい。
つーかこれあったら minibuf-isearch とかいらんかったかも。
とりあえずしばらく使って様子を見てみるべ。

emacsメモその5・タグジャンプ最強伝説編

最近Bな人の日記更新されねーな… → お、ひさしぶりに更新されてるぞ → なんだよemacsメモかよ!
と、がっくりなみなさまこんにちは。
会社の昼休みに「perlって統合開発環境とか云々」っていう話が出たのでここぞとばかりにemacs普及企画だよ!
(世の中的にはemacs使いとvi使いって半々くらいだと思うんだけどなぜかうちの会社はemacs派が私だけなんだぜ…)

というわけで今回のお題は「プログラマーなら関数名補完できたり関数定義に簡単にジャンプできたりするとうれしいよね?」です。

関数定義へジャンプ — imenu

↑見出しが参考サイトへのリンクになってますので詳細はそちらを参照(何

ファイル一枚程度の小さなものならこれで十分。今いるファイル内の関数一覧表示&目的の関数にジャンプ。
正直、ファイル内ならC-sで検索でいいじゃんという気もしますが、覚えられないような長い関数名や検索で探しにくいような短い関数名の場合はまあ有効かなと。あと最近流行り(?)のanythingを使ってる人なら便利なのかもしれない。
…まあ、もっぱら「関数一覧表示→excelにコピペ」という使い方がメインですが(笑)

タグジャンプ − 関数定義へジャンプ etags

↑見出しが参考サイトへのリンクに(略

とまあ、imenuは前座でこっちが本命。
複数ファイルにまたがった関数リストができちゃう。
「この関数定義はどのファイルにあったっけな。あああのファイルか、あのファイルってどこにあったっけな、あああのディレクトリか、開くのめんどくせえな、さてこのファイルの中で目的の関数はどこに…」という動作が、find-tag(M-.)で一発。これはすごい。
しかもカーソル位置付近の単語をデフォルトで補完してくれる(info-lookup-symbol(C-h S)と同様の使い勝手)。ソースコード読んでて「この関数って何してるんだっけ?」と思ったらその場で関数定義に飛べるしあわせ。
さらに M-Tab で関数名の補完が効くようになるので、長くて覚えられないクラス名も安心☆

かなりいろんな言語に対応してるっぽいです。
難点としては定期的にTAGSファイルを生成しないといけないってことでしょうか。(↑の参考サイトには自動生成の方法も載ってます)

WindowsでMeadowな人は、Meadowの実行ファイルがインストールされたディレクトリにetagsも一緒にインストールされてるはず。

speedbar

M-x speedbar でなんかメニューバーみたいなのが出てくる。
ディレクトリ内のファイル一覧が表示されてて、ファイルについてる「+」マークをクリックすると関数一覧が表示される。関数名をクリックすると関数定義に飛べる。
…はずなんだけどファイルによっては表示されなかったりファイル自体が表示されなかったりしてよくわかんない。というか私はコレ使ってないのでよくわかんない。こんなのもあるらしいよっていう紹介だけってことで。
キーボードよりマウス派な人には便利かも。でもマウス派はそもそもemacsなんか使わないか。。。

おまけ:関数操作いろいろ

関数定義の先頭/末尾へ移動、関数全体を選択
C-M-a (beginning-of-defun), C-M-e (end-of-defun), C-M-h (mark-defun)
なにかと使い勝手がよいです。これのできるエディタって意外と少ない気がする。

大きいファイルの中で迷子になりやすい人は which-function-mode をオンにしておくとカーソル位置の関数名がわかってしあわせになれるかも。

 ***

他にも「プログラマーならこれははずせない・これが便利だよ!」というオススメがあればぜひコメントから教えてくれると超うれしいよ!


  • ちゃうねん、私もemacsのええとこは知ってるんやけど、サーバを最小構成で構築したらviしか入ってないのさ。と言い訳してみる元emacs使い。 – らーゼ (2009年05月07日 21時37分37秒)

emacsメモその4・wdiredべんりだよ編

全国数名の旦那観察日記ファンの期待を裏切ってemacsメモですよ!
だいじょうぶ!emacsメモのファンだってひとりくらいは居るかもしれないから…!と自分に言い聞かせつつ、もはや誰に向けて書いてるのかわからない自分用メモ兼布教日記なんだぜ。

さて、本日は「emacsってエディタとしてだけじゃなくて普通にツールとしても有用なんだぜ…!」みたいなお話。

 ***

たくさんのファイルをリネームしなきゃいけない!という場面で、
ひとつひとつちまちま変更するのが面倒になって、思わずファイル名変換スクリプトを書いて正規表現間違えてウキーなんてのは誰もが経験したことがあるかと思いますが(ねぇよ
ディレクトリ内のファイル名一覧をテキストエディタか何かで表示してそのまま編集して保存できたらなー…
なんて思ったことのある人もいるのではないでしょうか。

できるんですよこれが…!

diredってのはemacs標準のディレクトリ&ファイル操作ツールですね。Windowsでいうところのエクスプローラみたいなもんでしょうか。
これだけでも結構多機能で使いこなせたらいろいろ便利だったりするんですが、解説しだすと長いのでここでは省略。興味ある人はググればいくらでも出てきます(何

で、wdired。
diredでファイル一覧を表示してるバッファをそのまま編集して保存、で、終わり。
変更がファイル名に反映されます。
もちろんemacsの編集機能をバリバリ使えるので置換コマンドとかやりたい放題。拡張子一括変更とか2秒。
べんり…!べんりすぎてむしろこわい…!

 ***

ちなみにwdiredを使わない方法としては、
diredバッファで m もしくは %m でリネームしたいファイルにマークをつけ(「%m」だと正規表現にマッチしたファイルにマーク)、
%r (dired-do-rename-regexp) で正規表現置換、とかがあります。
wdired知るまではたまに使ってたけどもう戻れない…。

 ***

ちなみにdiredで日本語のファイル名が化ける場合、

 (require 'ls-lisp)

とか

 (setq default-file-name-coding-system 'なんか文字コード)

とかでうまくいくかもしれない。
私の場合(Meadow3@WinXP)

 (setq default-file-name-coding-system 'shift_jis)

でうまくいきました。
まあ正直なところemacsで日本語ファイル名なんてあまり扱いたくないですけどね…


  • 素敵な情報をありがとう!旦那観察日記となにかよくわからないものブログも応援しています! – Riso (2009年01月24日 18時03分49秒)
  • 応援ありがとう!びぃ先生の次回作(主にemacsメモ)にご期待ください。 – B@管理人 (2009年01月24日 23時58分40秒)

Meadow3(emacs22)でutf-8

いいかげんしつこいですがMeadow3インストールメモ続きです。
サイト立ち上げ当初の意図とは違った方向で技術日記になってきてるなあ…。
ローカルのメモでやれよと言われそうですがいつかどこかの誰かの役に立つかもしれないので気にせず公開しちゃうんだぜ。

 ***

Q.Meadow3でutf-8のファイルを開くと一部の記号がうまく表示されない(豆腐になる)

具体的には「〜」「|」「♪」とかそのへん。機種依存文字は言わずもがな。

  • A1.mule-ucsを入れる

ってそれがいやだからバージョンアップしたんですよね。

  • A2.mule-fontsを使う

mule-fonts ってのを使うと多言語対応であらゆる文字が表示可能!すごい!
でもサイズが16のやつしかないし…ていうか他のフォント使いたいし…

参考:http://www.meadowy.org/meadow/netinstall/wiki/PkgMule-fonts

  • A3.utf-translate-cjk-set-unicode-range

とういわけで、これが正解。

  (utf-translate-cjk-set-unicode-range
'((#x00a2 . #x00a3) ; ¢, £
(#x00a7 . #x00a8) ; §, ¨
(#x00ac . #x00ac) ; ¬
(#x00b0 . #x00b1) ; °, ±
(#x00b4 . #x00b4) ; ´
(#x00b6 . #x00b6) ; ¶
(#x00d7 . #x00d7) ; ×
(#X00f7 . #x00f7) ; ÷
(#x0370 . #x03ff) ; Greek and Coptic
(#x0400 . #x04FF) ; Cyrillic
(#x2000 . #x206F) ; General Punctuation
(#x2100 . #x214F) ; Letterlike Symbols
(#x2190 . #x21FF) ; Arrows
(#x2200 . #x22FF) ; Mathematical Operators
(#x2300 . #x23FF) ; Miscellaneous Technical
(#x2500 . #x257F) ; Box Drawing
(#x25A0 . #x25FF) ; Geometric Shapes
(#x2600 . #x26FF) ; Miscellaneous Symbols
(#x2e80 . #xd7a3) (#xff00 . #xffef)))

無事表示されたよ!やったね!

参考:http://nijino.homelinux.net/emacs/utf-cjk.html

おまけ:subst-jisx0208ex.el ってやつで機種依存文字も表示できるよ!やったね!
http://nijino.homelinux.net/emacs/jisx0208ex.html