2013/11/18(月) [n年前の日記]
#1 [emacs] emacsの設定でちょっとハマり
ちょっと色々ハマったり。
◎ emacs で C-s C-w。 :
emacs で C-s を打つと、文字列検索ができるじゃないですか。今まで、その、検索したい文字列を、毎回手入力してたのですよ。
「ソースコード上には既に文字列があるわけだから、それをコピーしたほうが早いだろうに…。xyzzy だってそういうことができるんだから、emacs にもあるんじゃないかな。でも、調べるの面倒だなあ」とか思いながら、ずっと手入力してたんですけど。
_Emacs - カーソル位置にある単語が他にもあるか確認する普通の方法 - Qiita [キータ] というページで、C-s の後で C-w を押せば、そこにある単語をコピーできると知りまして。「なんだよー。やっぱりあったのかよー。ここ数年、バカなことしてたー」と。
せっかくだから、~/.emacs にメモしておこう、と思ったら…。
書いてあるんですよ。~/.emacs に。「C-s の後で C-w を押せば単語を取り込める。標準機能だぞ」って。しかも、isearch-yank-char() とか isearch-real-delete-char() とか定義してあって、「C-s の後で、C-d なら1文字追加、C-o なら1文字削除できるぞ」とか書いてあって。
過去の自分は、「未来の俺よ。忘れるなよ。isearch利用時に、ちゃんとコピーできるぞ」とメモしてくれてたのに…。もうダメだ。自分の記憶力はもうダメだ。
でもまあ、日常的に emacs 使ってるわけでもないし。忘れるのも仕方ないよな…。とりあえず、「そういう機能はあったはず」「~/.emacs に書いてあるはず」ぐらいのことは、未来の自分には覚えといて欲しいなと。でも、たぶん、自分のことだから、やっぱりそれすら忘れそうな予感…。
「ソースコード上には既に文字列があるわけだから、それをコピーしたほうが早いだろうに…。xyzzy だってそういうことができるんだから、emacs にもあるんじゃないかな。でも、調べるの面倒だなあ」とか思いながら、ずっと手入力してたんですけど。
_Emacs - カーソル位置にある単語が他にもあるか確認する普通の方法 - Qiita [キータ] というページで、C-s の後で C-w を押せば、そこにある単語をコピーできると知りまして。「なんだよー。やっぱりあったのかよー。ここ数年、バカなことしてたー」と。
せっかくだから、~/.emacs にメモしておこう、と思ったら…。
書いてあるんですよ。~/.emacs に。「C-s の後で C-w を押せば単語を取り込める。標準機能だぞ」って。しかも、isearch-yank-char() とか isearch-real-delete-char() とか定義してあって、「C-s の後で、C-d なら1文字追加、C-o なら1文字削除できるぞ」とか書いてあって。
過去の自分は、「未来の俺よ。忘れるなよ。isearch利用時に、ちゃんとコピーできるぞ」とメモしてくれてたのに…。もうダメだ。自分の記憶力はもうダメだ。
でもまあ、日常的に emacs 使ってるわけでもないし。忘れるのも仕方ないよな…。とりあえず、「そういう機能はあったはず」「~/.emacs に書いてあるはず」ぐらいのことは、未来の自分には覚えといて欲しいなと。でも、たぶん、自分のことだから、やっぱりそれすら忘れそうな予感…。
◎ emacsは言葉に縛られてるエディタなのかな。 :
それにしても、一般的なエディタは、文字列を選択してから検索すれば検索文字列欄にその文字列が入ってる、てな仕様だけど。どうして emacs 系は、検索を指示してから文字列を取得するんだろう…。
そういや、emacs は、カーソル移動すら、C-f (forward-char)、C-b (backward-char)、C-n (next-line)、C-p (previous-line) だったりするし…。どう考えてもその配置は使いづらいだろうに、意地でも、処理内容を文で書いた際の頭文字でキーを割り当てる、というルールがあるよな…。
『「検索」しろ、「文字列」を』も、「文章(英文)としてどうなのか」に縛られた仕様のような気がしてきたり。あらゆる面で、「言葉」に縛られているのが emacs。みたいな。
emacsを作った人達って、「便利かどうか」より、「『筋が通ってる』と思えるルールに従ってるかどうか」を優先して仕様を決めていく、かなり偏屈な人達だったのかなと思えてきたり。その点、vi はちょっと対照的。「hjklに矢印が印刷されてるからココに割り当てておこう。他の環境? 知らね。便利ならいいじゃん」てなテキトーぶり。どっちも極端過ぎる…。
てなことを思ったけれど、 _Emacs - Wikipedia を読んでるうちに、emacs は途中でグチャグチャな状態になりかけたので、一本筋を通さないと、みたいな話になって、そこで偏屈(?)ルールが強要されたのかなと思えてきたり。これはこれで仕方なかったのかな…。emacsの歴史について興味が湧いてきた・歴史を知れば納得できそうな気もしてきたけれど、少し検索した程度では出てこないようで。ちと残念。
- フツーのエディタ: 「文字列」を「検索」しろ。
- emacs: 「検索」しろ、「文字列」を。
そういや、emacs は、カーソル移動すら、C-f (forward-char)、C-b (backward-char)、C-n (next-line)、C-p (previous-line) だったりするし…。どう考えてもその配置は使いづらいだろうに、意地でも、処理内容を文で書いた際の頭文字でキーを割り当てる、というルールがあるよな…。
『「検索」しろ、「文字列」を』も、「文章(英文)としてどうなのか」に縛られた仕様のような気がしてきたり。あらゆる面で、「言葉」に縛られているのが emacs。みたいな。
emacsを作った人達って、「便利かどうか」より、「『筋が通ってる』と思えるルールに従ってるかどうか」を優先して仕様を決めていく、かなり偏屈な人達だったのかなと思えてきたり。その点、vi はちょっと対照的。「hjklに矢印が印刷されてるからココに割り当てておこう。他の環境? 知らね。便利ならいいじゃん」てなテキトーぶり。どっちも極端過ぎる…。
てなことを思ったけれど、 _Emacs - Wikipedia を読んでるうちに、emacs は途中でグチャグチャな状態になりかけたので、一本筋を通さないと、みたいな話になって、そこで偏屈(?)ルールが強要されたのかなと思えてきたり。これはこれで仕方なかったのかな…。emacsの歴史について興味が湧いてきた・歴史を知れば納得できそうな気もしてきたけれど、少し検索した程度では出てこないようで。ちと残念。
◎ MELPAとやらをインストールしようとして四苦八苦。 :
_free-keys 空いているキーバインドを教えてくれる拡張 - Life is very short
という記事を読んで、コレは便利そうだと。インストールには MELPA とやらを使うらしいと知り、導入しようとしたのですが、これが上手く行かず。
どうやら ~/.emacs の package-archives あたりの定義の仕方がおかしかったようで。以下のように書き換えたら、M-x package-list-package で、melpa とやらが出てきてインストールできました。とメモ。環境は Windows7 x64 + NTEmacs 23.4。
ところが、その MELPA とやらをインストールしたら、M-x package-list-package で、項目の上で Enter を押しても、
_Emacsでプラグインを簡単にインストールするためのpackage.elを使ってみる - ブログのおんがえし に、同じ症状が。M-x package-install 〜 でインストールできるらしいので、ソレを使ってどうにか。
ちなみに、free-keys なるソレは、cl-lib なるものも必要らしいので、ソレもインストール。なんか runtime がどうとか警告が出てたけど、一応動いてるっぽいので、まあいいかと。
どうやら ~/.emacs の package-archives あたりの定義の仕方がおかしかったようで。以下のように書き換えたら、M-x package-list-package で、melpa とやらが出てきてインストールできました。とメモ。環境は Windows7 x64 + NTEmacs 23.4。
;; install-elisp (require 'install-elisp) (setq install-elisp-repository-directory "~/.emacs.d/") ;; auto-install (require 'auto-install) (setq auto-install-directory "~/.emacs.d/auto-install/") (auto-install-update-emacswiki-package-name t) (auto-install-compatibility-setup) ; 互換性確保 (add-to-list 'load-path "~/.emacs.d/auto-install/") (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (when (< emacs-major-version 24) (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))) (add-to-list 'package-archives '("ELPA" . "http://tromey.com/elpa/")) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) (package-initialize)melpa とやらをインストール出来たら、上記の下のあたりに、
; melpa.el (require 'melpa)を追加。
ところが、その MELPA とやらをインストールしたら、M-x package-list-package で、項目の上で Enter を押しても、
unknown button type 'help-package'とかメッセージが出てくるだけでインストールできない状態に。どうしたらいいんだろう…。
_Emacsでプラグインを簡単にインストールするためのpackage.elを使ってみる - ブログのおんがえし に、同じ症状が。M-x package-install 〜 でインストールできるらしいので、ソレを使ってどうにか。
ちなみに、free-keys なるソレは、cl-lib なるものも必要らしいので、ソレもインストール。なんか runtime がどうとか警告が出てたけど、一応動いてるっぽいので、まあいいかと。
[ ツッコむ ]
以上です。