mac の emacs に lookup.el

macにlookup.elを導入するには、
http://skalldan.wordpress.com/2011/06/13/emacs-%E3%81%A7-epwing/
に書いてあるように、「Macport」では「sudo port install lookup」で簡単に導入できる。

「homebrew」の場合、自分でコンパイルしなければならない。手順は次の通り、
1)まずebを導入。

brew create ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.4.2.tar.bz2

で「eb.rb」を生成させ、

brew install eb

とする。
2)eblookの導入
homebrewでうまくいかなかったので、自分でコンパイルする。
Kazuhiro’s blog (http://ikazuhiro.s206.xrea.com/) に行き、「eblook-1.6.1+media-20110801.tar.gz」 入手する。解凍して

./configure
make
make install

を実行すればよい。最後にうまくインストールされない場合は、

sudo mv eblook /usr/local/bin

とする。
3)lookup.elの導入
Kazuhiro’s blog (http://ikazuhiro.s206.xrea.com/) に行き、「lookup-1.4+media-20121129.tar.gz」を入手する。
解凍して、そのフォルダに移動して、ターミナル上で

emacs -batch -l install.el ~/.emacs.d/lisp/lookup ~/.emacs.d/info

と実行する。そうするとホームディレクトリに導入される。
4)init.el

(add-to-list 'load-path "~/.emacs.d/lisp/lookup")
(setq lookup-enable-splash nil)
(autoload 'lookup "lookup" nil t)
(autoload 'lookup-region "lookup" nil t)
(autoload 'lookup-pattern "lookup" nil t)
(global-set-key (kbd "C-x w") 'lookup-pattern)
(global-set-key (kbd "C-x W") 'lookup-region)
(setq lookup-default-dictionary-options
'((:stemmer . stem-english)))
(setq lookup-use-kakasi nil)

(setq lookup-search-agents '(
(ndeb "~/dict/Cobuild1")
(ndeb "~/dict/Longman4")
(ndeb "~/dict/OALD8")
(ndeb "~/dict/経済・金融英和実用辞典")
(ndeb "~/dict/経済・金融和英実用辞典")
(ndeb "~/dict/有斐閣 経済学辞典")
(ndeb "~/dict/三省堂 新明解国語辞典 第五版")
))

最初の行に、場所を設定した以外は、以前の

ubuntu の emacs に lookup.el


と同じである。

なお、mac でのemacs はコンパイルのやりかたによるが、少なくとも私が利用している「Emacs Mac Port」だと「Cmd+Ctl+D」で、辞書アプリを立ち上げられるのでlookup.elは不要かもしれない。
スクリーンショット 2013-05-28 19.06.58

ubuntu の emacs に lookup.el

emacs で辞書検索をおこなえるようにする。辞書は昔からepwing形式をつかっている。最近、どういうわけかみかけないけれど、このepwing形式の辞書をかなり持っている。
Screenshot_from_2013-05-27 23:42:49

これをemacsに読めるようにするには、lookup.elを導入する必要がある。eblookをemacsに使えるようにするためのものである。より詳細は
http://www.math.s.chiba-u.ac.jp/~matsu/emacs/emacs21/lookup.html
http://d.hatena.ne.jp/kuma-tetsu/20100208/1265575576
などに書かれている。

Ubuntu の設定は簡単。

sudo apt-get install eb eblook lookup-el

とすれば、道入される。「~/.emacs.d/init.el」に次を付け加える。

(setq lookup-enable-splash nil)
(autoload 'lookup "lookup" nil t)
(autoload 'lookup-region "lookup" nil t)
(autoload 'lookup-pattern "lookup" nil t)
(global-set-key (kbd "C-x w") 'lookup-pattern)
(global-set-key (kbd "C-x W") 'lookup-region)
(setq lookup-default-dictionary-options
      '((:stemmer .  stem-english)))
(setq lookup-use-kakasi nil)

最後の行は、英単語での語尾調整をおこなう。さらに、辞書ファイルが「~/dict」にあるとすれば、持っているEPWING辞書に応じて

(setq lookup-search-agents '(
    (ndeb "~/dict/Cobuild1")
    (ndeb "~/dict/Longman4")
    (ndeb "~/dict/OALD8")
    (ndeb "~/dict/経済・金融英和実用辞典")
    (ndeb "~/dict/経済・金融和英実用辞典")
    (ndeb "~/dict/有斐閣 経済学辞典")
    (ndeb "~/dict/三省堂 新明解国語辞典 第五版")
    (ndeb "~/dict/研究社 英和活用大辞典")
    ))

などとする。

使い方は、「C-x w」で直接単語入力して検索。「C-x W」はリージョンに囲まれた箇所を検索する。前者のコマンドで、カーソル上にある単語が自動的に検索候補に挙げられるので、英文の場合、たいていこのままエンターキーをおせばよい。日本語検索では、語尾に助詞がつくので、前者のコマンドで直接入力するか、リージョンを選択して、後者のコマンドを実行すればよい。その後の使い方は「?」でヘルプを見れば良い。基本は「SPC」で進めて、「q」で閉じる。コピーしたい内容があれば「h」で移動して、選択すれば良い。

Screenshot_from_2013-05-28 10:34:47

Screenshot_from_2013-05-28 10:41:28

emacs に migemo

「migemo」によって、日本語の検索をする際に、変換することなく、ローマ字で検索することが可能になる。Ubuntuだけでなく、WindowsやMacでも利用可能である。

Ubuntu上で、emacs24を使っているが、「migemo」を導入するのにちと手間取った。「sudo apt-get install migemo」はemacs23対応で、おそらくUbuntuのリポジトリにある「migemo-el」は古いと考えられる。そのため、「cmigemo」を導入して、ELPAの「migemo」を導入するようにする。

まず

sudo apt-get install cmigemo

で「cmigemo」を導入する。次に、「M-x list-packages」で「migemo」を選択してインストール。そして「~/.emacs.d/init.el」に

(require 'migemo)
(setq migemo-command "cmigemo")
(setq migemo-options '("-q" "--emacs" "-i" "\a"))
(setq migemo-dictionary "/usr/share/cmigemo/utf-8/migemo-dict")
(setq migemo-coding-system 'utf-8-unix)
(setq migemo-user-dictionary nil)
(setq migemo-regex-dictionary nil)
(load-library "migemo")
(migemo-init)
;; (define-key isearch-mode-map (kbd "C-e") 'migemo-isearch-toggle-migemo)

と書き込んで、再起動する。

るびきち本だと「C-e」でmigemoのオン・オフの切り替えができるといっているが、それはできない。どうもcmigemoでは「M-m」である。前のキーバインディングに慣れているなら最後の行のコメントアウトを解除すれば良い。

なお、windowsでは「gnupack (http://gnupack.sourceforge.jp/docs/latest/UsersGuide.html)」で最初から導入してある。一方、macでは、Macport のとき

sudo port install cmigemo

か Homebrewのとき

brew install cmigemo

で「cmigemo」導入でき、あとはELPAから導入すれば良い。

emacs の undo を改良する。

emacs では「C-/」もしくは「C-x u」でundoが可能であるが、redoもできず、いささか使いにくい。
そのため、「M-x list-packages」で「redo+」「undohist」「undo-tree」「point-undo」を導入する。
導入後「~/.emacs.d/init.el」に

;; redo+
(when (require 'redo+ nil t)
  (global-set-key (kbd "C-?") 'redo))
;; undo-hist
(when (require 'undohist nil t)
  (undohist-initialize))
;; undo-tree
(when (require 'undo-tree nil t)
   (global-undo-tree-mode))
;; point-undo
(when (require 'point-undo nil t)
  (global-set-key (kbd "M-[") 'point-undo)
  (global-set-key (kbd "M-]") 'point-redo))

とする。

これによって、「C-?」でredoが可能になる。また、「C-x u」で「undo」の樹形図が表示され、矢印キーもしくは「C-p」「C-n」「C-b」「C-f」で移動する。終了するには「q」を押す。「t」をおせば変更時間がわかる。さらに、カーソル位置の「undo」と「redo」がそれぞれ「M-[」と「M-]」で可能になる。

を参考にしたが、この本では「emacswiki」から「auto-install」をするよう書かれている。今では、「ELPA」から入手可能である。

emacs で最近使ったファイルを簡単に開く

るびきちさんのEmacs本

で紹介している拡張が、ELPAでどんどん利用可能になっている。私が愛用する「recentf-ext.el」もそのひとつ。

導入方法は「M-x list-packages」 から「recentf-ext」のある行に移動して、「i」と「x」と「y」を押せばよい。そして「~/.emacs.d/init.el」に

;; recentf-ext
(require 'recentf-ext)
(setq recentf-max-saved-items 100) ; 100個まで履歴として保存
(global-set-key (kbd "C-x o") 'recentf-open-files)

と付け加える。これで「C-x o」で最近開いたファイルを開くように設定している。

なお、もともと「C-x o」はバッファを切り替える操作であるが、わたしは

emacs の ウィンドウ管理


にあるように、バッファの切替を「C-t」にキーバインドしている。

emacsのパッケージ管理

emacs24からパッケージ管理が簡単にできるようになっている。ただデフォルトだと追加できるパッケージはそれほどないので、「marmalade」リポジトリを追加する。そのため、「~/.emacs.d/init.el」に

(require 'package)
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
(package-initialize)

を書き加えている。

使い方は以下のとおり。「M-x package-list-packages」で、利用できるパッケージ一覧が表示される。そして

  1. r:: リストの更新
  2. i:: インストールしたいバッケージの選択
  3. d:: 削除したいバッケージの選択
  4. u::選択したパッケージの解除
  5. x::選択したパッケージのインストールか削除の実行

をおせばよい。インストールされたパッケージは「~/.emacs.d/elpa」にインストールされる。

emacs の ウィンドウ管理

デフォルトでは、「C-x 1」でウィンドウを一つに、「C-x 2」でウィンドウを上下に2つに、「C-x 3」でウィンドウを左右に2つに、「C-x o」で他のウィンドウに移動する設定になっているが、いまひとつ使いにくい。そのため
http://d.hatena.ne.jp/rubikitch/20100210/emacs

http://d.hatena.ne.jp/yascentur/20110621/1308585547
http://coffee.guhaw.com/Entry/211/
らを参考に「init.el」に以下を書き加えている。

;;; miyazaki-window.el --- 
;;
(defun split-window-vertically-n (num_wins)
  (interactive "p")
  (if (= num_wins 2)
      (split-window-vertically)
    (progn
      (split-window-vertically
       (- (window-height) (/ (window-height) num_wins)))
      (split-window-vertically-n (- num_wins 1)))))
(defun split-window-horizontally-n (num_wins)
  (interactive "p")
  (if (= num_wins 2)
      (split-window-horizontally)
    (progn
      (split-window-horizontally
       (- (window-width) (/ (window-width) num_wins)))
      (split-window-horizontally-n (- num_wins 1)))))
(defun other-window-or-split ()
  (interactive)
  (when (one-window-p)
    (if (>= (window-body-width) 270)
        (split-window-horizontally-n 3)
      (split-window-horizontally)))
  (other-window 1))
(global-set-key "\C-t" 'other-window-or-split)
(global-set-key "\C-x!" 'follow-delete-other-windows-and-split)
(global-set-key "\C-x@" '(lambda ()
                           (interactive)
                           (split-window-vertically-n 3)))
(global-set-key "\C-x#" '(lambda ()
                           (interactive)
                           (split-window-horizontally-n 3)))

こうすると、「C-t」を押せば、自動的に2つに分割するか、他のウィンドウに移動する。また、「C-x !」とすれば、一つのファイル 2 つのウィンドウに分けて、シームレスに表示できる。「C-x @」とすれば、3 つのウィンドウに横で分けて、「C-x #」とすれば、3つのウィンドウに縦で分ける。なお、「!@#」はそれぞれ英語キーボードで「123」の上にある記号なので、日本語キーバインドだと適当に配置しなおせばよい。

emacs のキーバインディング

emacsで自分の使いやすいキーバインディングとして

;; Key-binding
(global-set-key "\C-h" 'delete-backward-char)
(global-set-key "\C-m" 'newline-and-indent)

(global-set-key [f6] 'linum-mode)
(global-set-key [f7] 'flyspell-mode)	;
(global-set-key [f8] 'toggle-truncate-lines)
(global-set-key [f9] 'auto-fill-mode)

(global-set-key "\C-xm" "\\(\\)\C-b\C-b")
(global-set-key "\C-xM" "\\[\\]\C-b\C-b\C-m\C-m\C-p")

としている、「Ctrl+h」はデフォルトではヘルプだが、このキーバインディングがバックスペースになることが体に染み付いている。なお、「F1」がヘルプにもなっているのでそれのみのキーバインドとする。さらに、デフォルトでは、「Ctrl+m」は単なる改行で、「Ctrl+j」が改行+インデントであるが、「Ctrl+j」は別のキーをバインドさせるのでこのように変更している。

「F6」から「F9」まで上のように割り当てている。「F6」は行番号をつけるかどうかを切り替える。「F7」は自動的にスペルチェックをするかどうかを切り替える。「F8」は、一行が長すぎると右側で折り返されるかどうかを切り替える。「F9」は、自動改行を切り替える。

また、Latexで数式を入力するために、上のようにコマンドを割り当てている。

ubuntu に emacs

世の中に「emacs」派と「vi」派に分けられるなら、私は「emacs」派。というわけで、Ubuntuにもemacsを導入。

sudo add-apt-repository ppa:cassou/emacs
sudo apt-get update
sudo apt-get install emacs24 emacs24-el emacs-mozc

とすれば、現時点で最新のemacs24とmozc用もふくめたスクリプト集がインストールできる。

そして、「~/.emacs.d/init.el」に、

;; バックアップファイルを作らないようにする
(setq make-backup-files nil)
;; 括弧の対応関係をハイライト表示
(show-paren-mode nil)
;; ツールバーを表示しないようにする(Official Emacs の場合は 0)
(tool-bar-mode 1)
;; スタートアップ画面を表示しないようにする
(setq inhibit-startup-message t)
;; フルスクリーンにする。
;; (set-frame-parameter nil 'fullscreen 'fullboth)
;; 背景を透過させる
(set-frame-parameter nil 'alpha '(80 40))
;; 文字の色を設定します。 
(add-to-list 'default-frame-alist '(foreground-color . "white")) 
;; 背景色を設定します。 
(add-to-list 'default-frame-alist '(background-color . "navy")) 
;; カーソルの色を設定します。 
(add-to-list 'default-frame-alist '(cursor-color . "yellow")) 
;; マウスポインタの色を設定します。 
(add-to-list 'default-frame-alist '(mouse-color . "SlateBlue2")) 
;; 選択中のリージョンの色を設定します。 
(set-face-background 'region "deeppink1") 
;; font
(add-to-list 'default-frame-alist '(font . "ricty-13.5"))
;; server starts
(server-start)
;; Japanese
(set-language-environment 'Japanese)
(prefer-coding-system 'utf-8)
(require 'mozc)
(setq default-input-method "japanese-mozc")
;; path
(setq load-path (cons "~/.emacs.d/site-lisp/" load-path))

Screenshot_from_2013-05-22 20:26:41

なお、24行目の「Ricty」は以前作ったものを流用している。「Ricty」が何かを知らない方は
http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/ricty.html
を参照。また、Ubuntuでの導入方法は
http://d.hatena.ne.jp/next49/20130429/p1
を参照されたい。

また、10行目の「フルスクリーンにする」は、1304では挙動におかしいところがあるため、コメントアウトしていて、最大化は「Ctrl+Super+Up」で。

頻繁にEmacsをつかうので「Ctrl+Alt+E」でEmacsを立ち上げるようにしている。
Screenshot_from_2013-05-22 20:24:23

Lyx の「しおり」について

LatexでつくったPDFファイルで、パッケージ「hyperref」を用いれば、本文中の文献や表や、「しおり」で該当箇所にジャンプするように作ることができる。日本語でかかれたPDFファイルで「しおり」の目次が文字化けしないようにするには、Latexのプリアンブル部分に

\usepackage[dvipdfm,bookmarks=true,bookmarksnumbered=true,bookmarkstype=toc]{hyperref}
\usepackage{atbegshi}
\ifnum 42146=\euc"A4A2
\AtBeginShipoutFirst{%
\special{pdf:tounicode EUC-UCS2}}
\else
\AtBeginShipoutFirst{%
\special{pdf:tounicode 90ms-RKSJ-UCS2}}
\fi

と書けばよい。これを「Lyx」でつかえるようにするには次のように設定する。文書を開いて、「文書=>設定」での「PDF特性」で
Screenshot_from_2013-05-15 10:14:13
とチェックがはずれていることを確認する。また「Latexプリアンブル」で
Screenshot_from_2013-05-15 10:17:55
とする。これらを文書の規定値として保存しておけばよい。