Emacs part 27
■ このスレッドは過去ログ倉庫に格納されています
0001Zeno
2008/11/09(日) 08:48:02スレッドルールは以下の通り:
* 初心者にやさしく接すること
* Emacsユーザーとの仲間意識をしっかり持って、馴れ合いを怠らないこと
* このスレでのコミュニケーションを前スレ以上に活発にすること (用がなくとも、毎日の書き込みが理想)
* 部外者/非Emacsユーザーの書き込みも可。但し、女性の書き込みは場の雰囲気を乱すので不可
* 自分で書いた便利なコード/アイディアは他人とシェアしようと試みること
_/l__
/ く
| ´ω` | ぐにゅう emacs
| C='|
* Emacs スレッドのマスコットキャラである「ぐにゅう君」 (↑のAA) と
吾 (Zeno ◆5nZQbNmQPs) への挨拶も忘れないように!
GNU Emacs - Free Software Foundation (FSF) http://www.gnu.org/software/emacs/
EmacsWiki http://www.emacswiki.org/
Emacs 電子書棚 http://www.bookshelf.jp/
Emacs CVS Repositories [Savannah] http://savannah.gnu.org/cvs/?group=emacs
Emacs Lisp List http://www.damtp.cam.ac.uk/user/sje30/emacs/ell-date.html
最新の stable リリース (22.2) のダウンロード http://ftp.gnu.org/pub/gnu/emacs/emacs-22.2.tar.gz
Windows用 NTEmacs の最新ダウンロード https://sourceforge.jp/projects/ntemacsjp/files/
前スレ http://pc11.2ch.net/test/read.cgi/unix/1218093847/
CVS先端: cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co emacs
Emacs は世界を救う!
0451名無しさん@お腹いっぱい。
2008/12/16(火) 13:10:010452名無しさん@お腹いっぱい。
2008/12/16(火) 16:28:230453名無しさん@お腹いっぱい。
2008/12/16(火) 17:48:04俺はまるでダメだけどEmacsに罪はねーよ
0454sage
2008/12/16(火) 20:59:36emacsは自動でインデントを揃えてくれ、とても重宝しているのですが、更に欲を言うと
a=b+c;
を
a = b + c;
のようにフォーマットをしてくれる機能(またはelisp?)はないでしょうか?
個人的にはVisual Studioの整形みたいなものを想像しています。
Uncrustifyのような細かい設定まで出来れば完璧です。
わかりにくい文章で申し訳ありませんが、よろしくお願い致します。
0455名無しさん@お腹いっぱい。
2008/12/17(水) 13:13:390456名無しさん@お腹いっぱい。
2008/12/17(水) 14:12:51行内で式が完結していれば、
(lambda ()
(interactive)
(shell-command-on-region (beginning-of-line) (end-of-line) "indent" t t)
(command-execute "\t"))
;; region指定あれば優先した方がいいかな
0457名無しさん@お腹いっぱい。
2008/12/17(水) 15:56:02たまに変数名が衝突してわかりにくいバグが発生する
0458名無しさん@お腹いっぱい。
2008/12/17(水) 16:09:160459名無しさん@お腹いっぱい。
2008/12/17(水) 17:01:05emacs replacementの完成の方が速そうな勢いだものな…
0460名無しさん@お腹いっぱい。
2008/12/17(水) 17:15:54またお前か。うんざりだ。もうemacs使うなよ。
0461454
2008/12/17(水) 17:59:20>>456
.emacs内にそのまま記述してみたのですが、いまいちよく分かりませんでした。
何か実行する手順みたいなのがあるのでしょうか??
何も分かって無くてすみません^^;
.emacsには
(defun my-c-indent (rstart rend)
"Format region using the shell command \"indent\" (C program formatter). If the mark is not active, operate on the current line."
(interactive "*r")
(unless mark-active
(beginning-of-line) (setq rstart (point))
(end-of-line) (setq rend (point))
)
(shell-command-on-region rstart rend "indent" t t)
(command-execute "\t")
)
のように書いて、成形したい行にカーソルを置くかリージョン選択して
M-x my-c-indent
とやればいいのではなかろうか。
0463454
2008/12/17(水) 23:12:38レスありがとうございます。
教えて頂いた通り、以下をリージョンを選択後、M-x my-c-indentを実行した結果、
#include<stdio.h>
main(){
int a,b,c;
a=b+c;
}
が
/bin/bash: indent: command not found
という文字列に置き換わってしまいました。
えっと、これは"indent"の部分を何かフォーマットを行ってくれるような外部プログラムに置き換えるのでしょうか・・・?
0464名無しさん@お腹いっぱい。
2008/12/17(水) 23:48:230465462
2008/12/17(水) 23:56:01そしたらGNU indentをインスコしないといかんね。ftp.gnu.orgから拾ってくればいいはずだけど、どうやら2.2.9はソースをちこっといじる(indent.hの100行目をコメントアウト)必要があるみたいだ。
0466454
2008/12/18(木) 16:00:28きっと後はindentの設定をいじれば、自分の好きなコーディング規約に出来るんですね!
聞いてばっかりで申し訳ないんですが、
;や}を入力してステートメントやブロックの入力を終了したとき、また貼り付けを行ったときなどにオートフォーマットをさせることは可能でしょうか?
それとインデントを揃えるコマンドであるC-M-\をこのmy-c-indentに置き換えたりすることもできれば嬉しいのですが。。。
0467462
2008/12/18(木) 21:12:16上のmy-c-indentの後でこう書けばいいかな。C-M-\とセミコロンだけだが閉じ括弧は自分でやってみてくだされ。
(add-hook 'c-mode-common-hook
'(lambda ()
(define-key c-mode-base-map "\C-\M-\\" 'my-c-indent)
(define-key c-mode-base-map ";"
(lambda (arg) (interactive "*P")
;; use "indent" to format the line
(let ((start) (end))
(beginning-of-line) (setq start (point))
(end-of-line) (setq end (point))
(shell-command-on-region start end "indent" t t)
)
;; default behavior for semicolon
(end-of-line) (c-electric-semi&comma arg)
;; eliminate an extra line comming from "indent" above
(c-electric-delete-forward arg)
)
)
)
)
ところで上のmy-c-..の (command-execute "\t")は(c-indent-command)のほうが良い
鴨。
0468名無しさん@お腹いっぱい。
2008/12/18(木) 21:27:070469454
2008/12/18(木) 22:17:18'}'の時は対応パラグラフ内のフォーマッティングを考えているのですが、教えて頂いたdefine-key c-mode-base-map ";"の部分を単純に'}'へ変えただけでは当然一行しかフォーマッティングされずorz
(let ((start) (end))
(beginning-of-line) (setq start (point))
(end-of-line) (setq end (point))
(shell-command-on-region start end "indent" t t)
)
の部分を書き換えるのかなぁ等と思っているのですが。。。
ちなみにうまくやれば、
a+b+c+
d+e+f;
と数行に渡って式を書いた後のセミコロンで
a + b + c +
d + e + f;
のように複数行へ渡った場合のフォーマッティングもできるのでしょうか?
長文すみませんm(_ _)m
P.S.
C-M-\でのフォーマッティングは仰るとおり(command-execute "\t")を(c-indent-command)へ変えることでうまくできました^^
0470名無しさん@お腹いっぱい。
2008/12/18(木) 22:44:19まずはその投稿を整形すべきだな。
0471名無しさん@お腹いっぱい。
2008/12/19(金) 00:25:03ESC ! や M-x shell-command でよいことは知っています。
Shift-Alt-1 では ! そのものが、Alt-Shift-1 では M-1 が入力されているようです。
これは私の環境のみのバグでしょうか?
0472名無しさん@お腹いっぱい。
2008/12/19(金) 00:26:230473名無しさん@お腹いっぱい。
2008/12/19(金) 00:50:320474名無しさん@お腹いっぱい。
2008/12/19(金) 00:54:220475名無しさん@お腹いっぱい。
2008/12/19(金) 01:23:460476名無しさん@お腹いっぱい。
2008/12/19(金) 02:04:51あと "Ctrl" も "Ctr^1" みたいになっている。
Emacsはキーボードクラッシャーだなあ。
0477名無しさん@お腹いっぱい。
2008/12/19(金) 06:47:470478462
2008/12/19(金) 07:15:03ブロックのはじまりを捕まえるには(forward-sexp)、複数行にわたる式だったら(c-beginning-of-statement)というのがあるのでそれぞれ(beginning-of-line)の代わりに使えば基本的にはおまえさんのやりたいことができるはず。
ちょうど良い練習になると思うのであとはC-h f, C-h v, C-h kとかをお供に頑張ってくれたまへ。
ただしgnu.orgにおいてあるindent 2.2.9には複数行の入力が改行で終わってないときには最後の行が無くなっちゃうという致命的なバグがあるようなので、debian.orgの2.2.10をインスコしなおす必要がある。
うちのにもともと入っていたのも2.2.9だったようだ。新しいの入れといてよジョブズたんorz...
0479名無しさん@お腹いっぱい。
2008/12/19(金) 10:52:26gnomeの設定と被ってる場合うまくいかない
0480454
2008/12/19(金) 15:59:03しばらく挑戦してみて報告しますね〜
0481名無しさん@お腹いっぱい。
2008/12/19(金) 16:02:04Ctrl+Bが遠いので変えようかと思ってるんだけど、どこにしようか決められない・・・
0482名無しさん@お腹いっぱい。
2008/12/19(金) 16:31:500483名無しさん@お腹いっぱい。
2008/12/19(金) 16:32:42C-n, C-pは合理的だと思うが
C-f, C-bは最悪だよな。
俺は C-f -> C-j, C-b -> C-k にしてる。
SKK使いだからSKKのC-jはC-lにしてる。
いまのところこれが一番かな。
0484名無しさん@お腹いっぱい。
2008/12/19(金) 16:40:18普通、Bは左人差し指、Nは右人差し指だよね
Bはアルファベットの中で一番遠く感じるキーだと思うんだけど
>>483
やっぱり我流で決めるべきかな
あんまり普通(=一般Emacsユーザの平均的な設定)からかけ離れてしまうと
まずいかなと妙な懸念を持ってるんだけど、そんなのは捨たほうがいいかなw
上下左右はよく使うんだから、viのhjkl並に易しい位置にしたいものだ・・
0485名無しさん@お腹いっぱい。
2008/12/19(金) 16:54:54あまり割り当てられていないキーの一つ。
>>484
Bはほとんどのキーボードで左右どちらからも同じ距離だし、
手首の回転で届かないYの方が遠いし。説得力まるでない。
0486454
2008/12/19(金) 16:58:34viライクなh,j,k,lだけでの移動にしたいんだけど、そんな事って可能?
0487名無しさん@お腹いっぱい。
2008/12/19(金) 17:01:20ええと、左手を普通にキーボードに乗せると、人差指がBに、中指がFに乗らんか?
手が小さいのか?
0488名無しさん@お腹いっぱい。
2008/12/19(金) 17:06:09ここをいじると他への影響が大きすぎる。
0489名無しさん@お腹いっぱい。
2008/12/19(金) 17:08:14C-x q って何だっけ?
0490名無しさん@お腹いっぱい。
2008/12/19(金) 17:12:13Yは真ん中からやや右よりだから右人差し指でしょ
Bはほんと真ん中にあるじゃん
>>487
自分はおそらく日本人の平均より手はでかいが
つーか左人差し指がF、右人差し指がJのホームポジションじゃないのか?
0491名無しさん@お腹いっぱい。
2008/12/19(金) 17:13:04http://www2.ocn.ne.jp/~cheerful/script/xyzzy/mode/minorviewmode.l
とか、XEmacs の view-less.el とか。
0492名無しさん@お腹いっぱい。
2008/12/19(金) 17:18:33「ホームポジション」に固執して不便を我慢するのですね。すばらしい心掛けです。
0493名無しさん@お腹いっぱい。
2008/12/19(金) 17:22:03'B'を左人差指に固執して不便を我慢するのですね。すばらしい心掛けです。
0494名無しさん@お腹いっぱい。
2008/12/19(金) 17:36:33ROM多いんだなこのスレ。その割に普段ろくな話題提供もしないんだから
コミュニティ精神の欠けらもない…
0495名無しさん@お腹いっぱい。
2008/12/19(金) 17:36:360496名無しさん@お腹いっぱい。
2008/12/19(金) 17:42:17人のこと言えるの?
0498名無しさん@お腹いっぱい。
2008/12/19(金) 18:13:50俺には無理だ・・・FとJの小突起に手が触れてないと迷子になる
0499名無しさん@お腹いっぱい。
2008/12/19(金) 18:17:28なんでみんな変えてると思ったんだ?
0500名無しさん@お腹いっぱい。
2008/12/19(金) 18:34:51俺もホームポジションは変えてないし、Bは左人差し指だな
>Emacs使いが'B'を左人差指はないわw
誰がどうキーボードを使おうと気にしないけどこれはどうかと思った
0501名無しさん@お腹いっぱい。
2008/12/19(金) 18:47:200502名無しさん@お腹いっぱい。
2008/12/19(金) 18:48:37http://pc11.2ch.net/test/read.cgi/unix/1055904385/
0503名無しさん@お腹いっぱい。
2008/12/19(金) 18:48:580504名無しさん@お腹いっぱい。
2008/12/19(金) 19:12:33エディタつーかITに限らず全てにおいてな
0505名無しさん@お腹いっぱい。
2008/12/19(金) 21:02:42日本的な常態性を貴ぶ文化は、ブレークスルーを起こしにくいんだよな。
0506名無しさん@お腹いっぱい。
2008/12/19(金) 21:12:45親指シフトでEmacsを使った経験がある人がいたら、アドバイスが聞きたいのだが。
0507名無しさん@お腹いっぱい。
2008/12/19(金) 21:23:000508名無しさん@お腹いっぱい。
2008/12/19(金) 21:29:020509名無しさん@お腹いっぱい。
2008/12/19(金) 21:48:27なんで一番よく使うキーを、人間の手の動かしやすさを基準に考えずに
単語の頭文字なんかで決めちゃったのか不思議でしょうがない。
C-pとか気が狂っとる。p って、お前・・p って・・・。qwerty配列で1、2を争う打ちづらキーだろうがっ!!!次点でC-b
>>506
emacsで月配列使ってるけど、skkまわりマンドクセ
0510名無しさん@お腹いっぱい。
2008/12/19(金) 21:52:520511名無しさん@お腹いっぱい。
2008/12/19(金) 22:03:47だよな
SATAのコネクタ形状を考えたやつ並に許し難い
0512名無しさん@お腹いっぱい。
2008/12/19(金) 22:05:19ホームポジションに手を置いて、腕や指に神経を集中させながら、AからZまで1キーずつ入力してみてくれ。
どのキーの入力が一番つらい? 俺はp, q, zで、次に y, bあたりだ
親指シフトキーボードって、親指右左の検出ってするのってドライバ必要なんじゃない?
てことは、コンソールで使う時に文字コード届かなくね?emacsで日本語入力できなくね?
0513名無しさん@お腹いっぱい。
2008/12/19(金) 22:06:08pってそんなに打ちにくいか?
カーソル上下移動するときって大体n, p交互で使ったりするから
右手ホームポジションをちょっと左に傾けると
ちょうど人差し指n, 小指pの形になっていい感じになる。
キーバインドを体系的に考えたことがある者にとっては
頭文字の意味もあっててこれは中々うごかせないキーなんだな〜
0514名無しさん@お腹いっぱい。
2008/12/19(金) 22:07:59やってみたが、それは単にお前の小指が短かいだけな気がする。
まあ俺は指が長いほうだからなんとも言えんが…
0515名無しさん@お腹いっぱい。
2008/12/19(金) 22:10:030516名無しさん@お腹いっぱい。
2008/12/19(金) 22:14:23フーム もう少し慎重に検討する必要がありそうかな。
0517名無しさん@お腹いっぱい。
2008/12/19(金) 22:24:27そして今初めて気づいたが、
NとPを打ちやすいように右手は少し内転させてる。
Lの下辺りのキーは打鍵頻度が少ないからこれで問題ない。
それでプログラミングで多用する数字列の8より右側も打ちやすい。
左手はそうしてないから、Qが打ちにくい。
特に俺は小指が短めだから。そのせいでZは打ちにくくない。
折り曲げて小指に長さを揃えている中指薬指で、
XとCを打つ方がずっとつらい。
キーボードスレに行った方がいいかな…
0518名無しさん@お腹いっぱい。
2008/12/19(金) 22:31:11それに人の手の違いが加わってなおさらワケワカメ
だがEmacsとキーボードは気っても切れない関係にあるのは事実
0519名無しさん@お腹いっぱい。
2008/12/19(金) 22:33:24今のキーバインド内だけで打ちにくいかどうか考えてもなー
hjklとか、FPSゲームのwasdと比べるとかしないと分りづらいかもな。
あるいは、まっさらなキーマップがあって、頻度の高いキーバインドをどこに置けば一番打ちやすいかを考える、とか
>> キーバインドを体系的に考えたことがある者にとっては
超頻出キーだけは、これを無視して打ちやすさ使いやすさだけを第一にすべき、というのが俺の考え。
最も美しいキー体系に恍惚を覚える人もいるんだろうけど。
>>514
そりゃ、また、悲しくなる結果だわ
0520名無しさん@お腹いっぱい。
2008/12/19(金) 22:36:500521名無しさん@お腹いっぱい。
2008/12/19(金) 23:14:100522名無しさん@お腹いっぱい。
2008/12/20(土) 00:03:490523名無しさん@お腹いっぱい。
2008/12/20(土) 00:22:24後の環境変化に対応できなくなることに気付いた。
0524名無しさん@お腹いっぱい。
2008/12/20(土) 01:07:38素のemacsしか使えないなら、emacsなんか使う意味は無い。
そういう環境を触らないといけないなら、素直にvi使えばいいわけで。
C-c, C-p, C-n, C-f, C-bみたいな基本的なキーバインドを変えると、
minor modeで再バインドされてしまうことがあるから、
そのminor mode用にもオリジナルのキーバインドを書かないといけないことは、ままある。
0525名無しさん@お腹いっぱい。
2008/12/20(土) 01:12:260526名無しさん@お腹いっぱい。
2008/12/20(土) 01:25:380527名無しさん@お腹いっぱい。
2008/12/20(土) 01:29:18それもそうだな
0528名無しさん@お腹いっぱい。
2008/12/20(土) 01:36:34Emacsianの鑑だな。
0529名無しさん@お腹いっぱい。
2008/12/20(土) 02:22:17自分はきっちりとホームポジション通りやってたけどみんなそうでもないのかな…
ホームポジションっていっても,FとJだけじゃなくて,ちゃんとこんな感じに
ttp://pasokon-yugi.cool.ne.jp/touchtyping/home_position.html
まあCapslockはCtrlにしてしまってるけど
0530名無しさん@お腹いっぱい。
2008/12/20(土) 02:34:30まぁそれが一番普通なやり方でしょ
0531名無しさん@お腹いっぱい。
2008/12/20(土) 05:03:14俺は左で打ってる。皆はどう?
0532名無しさん@お腹いっぱい。
2008/12/20(土) 05:19:07>>529の小指のところは薬指使うキーも多いかな
0小指とか不自然だと思う…
0533名無しさん@お腹いっぱい。
2008/12/20(土) 05:20:34そんなの状況によるだろ。
その時々の近い方の手、近い指を使うだろ。
0534名無しさん@お腹いっぱい。
2008/12/20(土) 05:31:38「6」は微妙に左寄りだしね。
「0」は普通、薬指で打つと思う。
0535名無しさん@お腹いっぱい。
2008/12/20(土) 11:51:510536名無しさん@お腹いっぱい。
2008/12/20(土) 12:15:200537名無しさん@お腹いっぱい。
2008/12/20(土) 12:52:41かつてのタイプ教本のように掌を浮かしてタイプするならそれでもいいが、
パームレストを使っている場合は薬指を延ばしたほうが楽。
0538名無しさん@お腹いっぱい。
2008/12/20(土) 12:54:56とっととキーボードスレに逝けよ
0539名無しさん@お腹いっぱい。
2008/12/20(土) 13:05:10emacsで「p」を快適に打つテクニックはヘッポコな.emacs書くより超重要。
0540名無しさん@お腹いっぱい。
2008/12/20(土) 13:27:18ふつータグジャンプで関数探してC-sで編集地点に飛ぶ
そんなにカーソル移動したい奴は秀丸でも使ってろ
0541名無しさん@お腹いっぱい。
2008/12/20(土) 13:34:22ネタ職人乙。カーソル移動はよくやるよ。
「書く」作業だけじゃなく「読む」作業もあるってこと覚えておいて。
0542名無しさん@お腹いっぱい。
2008/12/20(土) 13:49:47win98とかの時代のPCに入れて急場をしのぐくらいのもん、だと思ってたが
ウェブ何十ページも開きながら物凄い勢いで情報収集してるときに
FirefoxじゃそれなりのPCでもマシン的・情報ノイズ的・操作性的に辛い。
一発検索も便利だし。これで僕も情報富豪の仲間入りです。
0543名無しさん@お腹いっぱい。
2008/12/20(土) 16:23:580544486
2008/12/20(土) 17:18:50リードオンリーに出来るよ。
>>491
レスありがとう。
minorviewmode.lはxyzzyのlispぽいから使うのあきらめて、view-less.elを使おうと思ったら
Symbol's function definition is void: set-keymap-name
って怒られた。どうしたもんだろう?
0545名無しさん@お腹いっぱい。
2008/12/20(土) 17:23:16XEmacs専用関数っぽいな…
0546名無しさん@お腹いっぱい。
2008/12/20(土) 17:33:25なるほど…コレ↓なら使えるっぽいから、大人しくコレを使うか。
http://www.emacswiki.org/cgi-bin/wiki/less.el
中のコメントに書いてあるように、(add-hook 'find-file-hooks 'less-minor-mode)を.emacs中に書くと
リードオンリーファイルを読み込んだとき、自動的にless-minor-modeになってくれるぽいんだけど、
C-x qをしたときにも自動でless-minor-modeになって欲しくて、それってどうやるんだろう?てか出来るのか…?
0547546
2008/12/20(土) 17:51:56(setq view-read-only t)
でできた。
0548名無しさん@お腹いっぱい。
2008/12/21(日) 00:56:20Emavimaru的なエディタってないの?
0549名無しさん@お腹いっぱい。
2008/12/21(日) 01:06:430550名無しさん@お腹いっぱい。
2008/12/21(日) 01:10:29■ このスレッドは過去ログ倉庫に格納されています