トップページunix
1001コメント288KB

Emacs Part 42

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2012/12/24(月) 12:26:20.01
前スレ

Emacs Part 41
http://toro.2ch.net/test/read.cgi/unix/1347009022/
0268名無しさん@お腹いっぱい。2013/01/31(木) 00:37:38.40
>>267
\C-u \C-[ |

tr ABC BCA
を実行すると、望む動作になる?
0269名無しさん@お腹いっぱい。2013/01/31(木) 00:45:48.00
「一遍」な。
02702672013/01/31(木) 01:32:59.19
>>268
まだ試してないけど、多分なると思う。ただ外部コマンドを使いたくない…
>>269
どもども。(しかし、今までずっと間違ってたかな…思いだせん)
0271名無しさん@お腹いっぱい。2013/01/31(木) 03:03:10.58
さっさとシェルに渡すがよし
0272名無しさん@お腹いっぱい。2013/01/31(木) 03:35:30.46
query-replace-regexp : \(A\)\|\(B\)\|\(C\)
... with: \,(cond((match-end 1)"B")((match-end 2)"C")("A"))
0273名無しさん@お腹いっぱい。2013/01/31(木) 06:23:15.03
>>270
一片か一遍かなんてそんなに死ぬほど悩むことじゃないよ。
恥じることもない。
そんなことで人を馬鹿にする奴のほうが恥ずかしい。

間違っていたと気付いたら直せばいい。
それだけのことさ。
0274名無しさん@お腹いっぱい。2013/01/31(木) 07:51:16.58
>>272
華麗すぎて濡れたので関数にしてみた.

(defun query-replace-cycling (&rest args)
"Query replace cycling. If you specify three arguments A,
B and C, replace A->B, B->C and C->A simultaneously."
(when (< (length args) 2)
(error "Specify more than two arguments"))
(let* ((len (length args))
(from-string (mapconcat
(lambda (x)
(format"\\(%s\\)" x))
args "\\|"))
(condition (mapcar
(lambda (x)
`((match-end ,(- len (mod (length (member x args)) len))) ,x))
args)))
(perform-replace from-string
`(replace-eval-replacement replace-quote (cond ,@condition))
t t nil)))

置換時のミニバッファの表示がすこし変だがとりあえず動いている.
interactive にしたいけど,可変個数の引数をミニバッファで入力させるのって
どうやるんだ?
0275名無しさん@お腹いっぱい。2013/01/31(木) 08:00:54.97
コメントの英語がちょっと気になりますなぁ
0276名無しさん@お腹いっぱい。2013/01/31(木) 08:02:18.46
文字列として入力させて適当な文字で分割するとか。
0277名無しさん@お腹いっぱい。2013/01/31(木) 08:08:10.53
>>275
すまん,コメントは超テキトー.Query replace cycling は
まあ意味をなしてないよな.
0278名無しさん@お腹いっぱい。2013/01/31(木) 08:16:47.65
replace というより rotate ですな
0279名無しさん@お腹いっぱい。2013/01/31(木) 08:17:04.52
"Hyper Sequential Replacing Force (HSRF)." がかっこいいと思う。
0280名無しさん@お腹いっぱい。2013/01/31(木) 09:10:01.49
なにその脆弱性攻撃みたいな略字
0281名無しさん@お腹いっぱい。2013/01/31(木) 09:29:08.46
みんなの意見を取り入れて,周回させるかのフラグとリージョン対応したぜ!
これで完璧だろう>>267.こういうときはコンマセパレートでいいのかね.

(defun hyper-sequential-rotate-force (cycle start end &rest args)
"Rotate a number of strings. In interactive call, specify more
than one string separated by comma. If you specify three strings
A, B and C, rotate A->B and B->C. If CYCLE is non-nil (prefix arg
in interactive call), rotate A->B, B->C and C->A.

In Transient Mark mode, if the mark is active, operate on the contents
of the region. Otherwise, operate from point to the end of the buffer."
(interactive
`(,current-prefix-arg
,(and (use-region-p) (region-beginning))
,(and (use-region-p) (region-end))
,@(split-string (read-string "Strings (seprated by comma): ") ",")))
(when (< (length args) 2)
(error "Specify more than two strings"))
(let* ((len (length args))
(from-string (mapconcat
(lambda (x)
(format"\\(%s\\)" x))
(if cycle args (butlast args)) "\\|"))
(condition (mapcar
(lambda (x)
`((match-end ,(- len (mod (length (member x args)) len))) ,x))
args)))
(perform-replace from-string
`(replace-eval-replacement replace-quote (cond ,@condition))
t t nil nil nil start end)))
0282名無しさん@お腹いっぱい。2013/01/31(木) 09:35:47.43
回転地獄五輪みたいな関数名だな
0283名無しさん@お腹いっぱい。2013/01/31(木) 10:35:16.12
処理の性質上、空白文字列は扱わない(扱えない)ので
扱う引数の数だけ一個一個入力して空欄のままエンターなら終了、になったらいいなあ

そんでローテート中は ^I でぐるぐる回せるとかな
(そこまで考えると query-replace なみにちょっとしたモードになってしまうのでだいぶチャレンジングだが)

ヤダ、そこまでされたらアタシの .emacs の中に入れちゃうかも///
0284名無しさん@お腹いっぱい。2013/01/31(木) 10:43:56.49
プログラム作成中に注目している個所の作業をいったん中断して、別の作業を始める場合。
中断する作業を忘れないようにemacs上でメモを残したい。
ソースコードに直接コメントで残す方法が、メモと作業個所の同期、お手軽さではかなり
有利だけど、タイムスタンプが変更されたり、元に戻すのが手間だったり。

こういうの支援してくれるのってないですか?
0285名無しさん@お腹いっぱい。2013/01/31(木) 10:59:48.81
メモとは違うがいわゆるセッション保存系の elisp が望みにかなう気がする。
「開いてるファイルを記憶しといてあとで復帰する」系の機能。
desktop-save とか desktop-menu とか。

あくまでメモでというなら決まったテキストファイルを開く memo-mode (名前曖昧。てかこのテのものもよくある) とか、
なんならホームディレクトリに ChangeLog モードのファイルでもいけると思う。

ていうかぶっちゃけ ~/MEMO.txt あたりに outline-mode で日時書いて列挙、が一番手軽で融通きくやり方だと思う。
0286名無しさん@お腹いっぱい。2013/01/31(木) 11:23:18.41
>>283
,@(split-string ...

の行の代わりに

,@(let (str lst)
(while (not (string= (setq str (read-string "String (Input empty to rotate): ")) ""))
(setq lst (append lst (list str))))
lst)))

に変更したら所望の動作や.^Iでぐるぐる回せるってのは,
現在の一致箇所で^Iを押す度に,A->B,B->C,C->A って
変わっていくってことかな? むずそう.

>>284
org-mode を使ってるならローカルファイルにリンクが貼れる.
org-mode のファイルに
[[file:path/to/file::NNN]]
って書いておけば,そこにカーソルを置いて ENTER 押すと
file の NNN 行へ飛べる.当然 file が変更されたら行番号も変わるけど,
一緒にメモも書けるし,一時的なものなら大丈夫じゃないだろうか.
[[file:path/to/file::some words]]
にすれば file 中の some words に一致する場所に飛べる.
org-store-link を使えばいいと思うよ.
0287名無しさん@お腹いっぱい。2013/01/31(木) 11:42:28.08
いい流れだな。これぞハックという感じだ。
0288名無しさん@お腹いっぱい。2013/01/31(木) 16:00:11.10
org-mode と helm はなんか手を出したら負けな感じがして触れていない
0289名無しさん@お腹いっぱい。2013/01/31(木) 16:11:37.21
org-mode は標準でついてるんだから,アウトライン表示できる便利な
マークアップ言語として使ってもいいと思うけどね.
まあ Emacs でしか使えんし,多機能すぎて混沌としすぎているのは否定できんが.

org-mode の布教ついでにおすすめ設定.

(add-to-list 'org-capture-templates
'("p" "Pending work" entry (file+headline "memo.org" "Pending work")
"** %?
%a"))

これを設定しておけば,M-x org-capture ENTER p と実行すると,

* Pending work
**
[[file:path/to/file::some words]]

memo.org にこのように追加されて,** のところにカーソルが移動するので
好きにメモをかけばいい.org-capture はメモ取りに便利だと思いまっせ.
0290名無しさん@お腹いっぱい。2013/01/31(木) 20:20:11.26
どうも。とりあえずorg-modeでmemoとってみる事にします。
0291名無しさん@お腹いっぱい。2013/01/31(木) 20:41:47.99
>>284
ttp://emacswiki.org/emacs/InPlaceAnnotations

はどうよ?
0292名無しさん@お腹いっぱい。2013/01/31(木) 23:05:05.30
はどうほう
02932672013/02/01(金) 00:00:40.01
なんか随分盛り上がったみたいでありがとう
>>281
これ使ってみたけど残念ながらうまく行かなかった
0294名無しさん@お腹いっぱい。2013/02/01(金) 01:28:08.49
>>291
これは… かなり要求に近い。こっちを使ってみます。
0295名無しさん@お腹いっぱい。2013/02/02(土) 07:24:00.53
純朴な疑問なんだけどEmacsがOSになれかった理由ってなんだろうね。
OSになっていれば今頃はLinuxみたいになってたかもしれないのに。
Emacs OSみたいなやつ。
0296名無しさん@お腹いっぱい。2013/02/02(土) 08:09:58.20
fsに
深入りせず
何の展望も持たなかったからだよ
0297名無しさん@お腹いっぱい。2013/02/02(土) 10:48:30.09
また例のバカが来たのか
0298名無しさん@お腹いっぱい。2013/02/02(土) 11:12:03.14
Emacsって1行が数万文字あるようなファイルを開くと極端に遅くなるんだけど、そういうファイルは苦手なん?
0299名無しさん@お腹いっぱい。2013/02/02(土) 11:28:13.20
極端な桁数とものすごい相性が悪い設定があった記憶はあるなぁ
0300名無しさん@お腹いっぱい。2013/02/02(土) 14:13:51.98
>>299
line-number-mode だな。
24.2.92 では改善されてるよ
0301名無しさん@お腹いっぱい。2013/02/02(土) 15:01:51.26
主にcommon lispなんですが、C#の#REGIONと#ENDREGIONのようなことをしてくれるelってないですか?
0302名無しさん@お腹いっぱい。2013/02/02(土) 15:59:50.21
hideshow とか hs-minor-mode に設定追加すりゃできるんじゃないかな
hs-block-start-regexp と hs-block-end-regexp に領域開始/終了を示したい正規表現でも追加してやればいい

自分は隠れてる所がわかりやすくなるようフリンジにマーク表示する設定して使ってる。
VSみたいに閉じることが出来る場所にもマーク置きたいんだけど結構手間がかかりそう

(defvar hs-fringe-mark 'right-arrow
"*隠れた行の fringe に表示する bitmap 名.
`fringe-bitmaps' 内に設定されているシンボル名から選ぶ.")

(defun hs-mark-fringe (ovr)
"`hs-toggle-hiding'で隠された行の OVR を編集して fringe にマークを付ける."
(when (eq 'code (overlay-get ovr 'hs))
(let ((hiding-text "...")
(fringe-anchor (make-string 1 ?x)))
(put-text-property 0 1 'display (list 'left-fringe hs-fringe-mark) fringe-anchor)
(overlay-put ovr 'before-string fringe-anchor)
(overlay-put ovr 'display hiding-text))))

(setq hs-set-up-overlay 'hs-mark-fringe)
0303名無しさん@お腹いっぱい。2013/02/02(土) 18:27:14.61
>>302
ありがとう
勉強してみる
0304名無しさん@お腹いっぱい。2013/02/03(日) 00:33:07.49
今日もまたEmacs病患者が一人っ……
0305名無しさん@お腹いっぱい。2013/02/03(日) 00:37:06.21
https://github.com/emacs-helm/helm/wiki
このIn Buffer File Completionの部分がよく分からないのですが、どういうことでしょうか?
0306名無しさん@お腹いっぱい。2013/02/03(日) 10:36:36.40
巨大なログファイルを処理したいんだけど、ファイルをストリームとして扱う方法のヒントクレクレ。
cat でも起動して process-filter 使うって方法しかない?
0307名無しさん@お腹いっぱい。2013/02/03(日) 11:14:51.53
insert-file-contents に beg と end 与える。
EOB に達したら filter から再度 insert-file-contents というのをやったことある。
0308名無しさん@お腹いっぱい。2013/02/03(日) 11:56:53.55
insert-file-contentsで読み込んでおいて、一行ずつ処理した方が速い。
非同期プロセスは効率が悪すぎる。読み込み毎にメニューまで書き直すんだぞ、アレ。
0309名無しさん@お腹いっぱい。2013/02/03(日) 13:09:36.98
>>308
> 読み込み毎にメニューまで書き直すんだぞ、アレ。

えーと、メニューってなんのこと?
0310名無しさん@お腹いっぱい。2013/02/03(日) 14:39:43.69
一番上のウインドウの一行目に張り付いてる奴とか、アイコンが表示
されてる奴とか。
メニューじゃないけど、モードラインも再描画するぞ。
0311名無しさん@お腹いっぱい。2013/02/03(日) 15:50:08.45
表示してるしてないにかかわらずそんだけの処理が走るってのもすさまじいな
0312名無しさん@お腹いっぱい。2013/02/03(日) 15:54:16.79
anything便利だけど立ち上げが少し遅くなった
0313名無しさん@お腹いっぱい。2013/02/03(日) 16:02:51.91
また荒れそうな話題が… わざとやってんだろ。
0314名無しさん@お腹いっぱい。2013/02/03(日) 16:03:05.03
流石にアーキテクチャーが古すぎるよな。
別にEmacs開発者のせいじゃないけど。
Emacs自体があまりにも歳を取りすぎた。
0315名無しさん@お腹いっぱい。2013/02/03(日) 16:12:16.21
そういう意味で、Emacsを使うっていうのは
杉本彩のグラビアを見るみたいなもんで、
元がいいから下手な若手よりは見れるが
流石にもう小じわが気になるみたいな感覚なのだと思う。
0316名無しさん@お腹いっぱい。2013/02/03(日) 16:17:02.79
起動画面やメニューがなんか、今風じゃなくてダサいよな
0317名無しさん@お腹いっぱい。2013/02/03(日) 17:21:24.36
うぜー
0318名無しさん@お腹いっぱい。2013/02/03(日) 17:22:18.07
彩姐なら全然いけるだろ
0319名無しさん@お腹いっぱい。2013/02/03(日) 17:45:47.56
俺は無理だわ。ピクリとも動かねぇ
0320名無しさん@お腹いっぱい。2013/02/03(日) 18:58:33.26
なんでるびきちスレできたかわかってないだろ。
あっちでやれよカス。
0321名無しさん@お腹いっぱい。2013/02/03(日) 19:12:02.75
ちゃんと読めよ。anythingの流れじゃないぞ。
0322名無しさん@お腹いっぱい。2013/02/03(日) 19:22:13.13
anythingでもsomethingでも関係ねーよ。
くだらん話題は全部あっち行け。rbkt
0323名無しさん@お腹いっぱい。2013/02/03(日) 19:42:35.45
emacsを今、一から作り直して今風にしたら
どんなかんじになるんだろ?
0324名無しさん@お腹いっぱい。2013/02/03(日) 19:56:37.62
みなさーん。このくだらない感じ、誰がきてるかわかりますねー?
0325名無しさん@お腹いっぱい。2013/02/03(日) 20:09:44.39
ストールマンか!
0326名無しさん@お腹いっぱい。2013/02/03(日) 20:27:43.10
rmsなら俺の隣でピーナツバター舐めてる
0327名無しさん@お腹いっぱい。2013/02/03(日) 21:34:03.65
精神病んでるって自覚あるのにこんなことするってどうなのよ・・
ますます酷くなるよ?
0328名無しさん@お腹いっぱい。2013/02/03(日) 22:20:05.99
左2/3をschemeのソースコード
右1/3を*scheme* バッファー
表示の状態にキーバインド一発で変更するには
どうすればいいのでしょうか
0329名無しさん@お腹いっぱい。2013/02/03(日) 22:28:27.41
そういうインタラクティブ関数を書いて好きなキーにバインドする
0330名無しさん@お腹いっぱい。2013/02/03(日) 23:17:15.92
>>328
適当に書いた.

(defun hoge ()
(interactive)
(select-window (split-window-horizontally (* 2 (/ (window-width) 3))))
(switch-to-buffer (get-buffer "*scheme*")))

フレームに1つのウィンドウしかなくて,そこに scheme のソースコードが
表示されていて,*scheme* バッファが存在していたら望みどおりになる.
0331名無しさん@お腹いっぱい。2013/02/03(日) 23:42:51.21
レジスタ使えば
C-x r w <N>
C-x r j <N>
0332名無しさん@お腹いっぱい。2013/02/04(月) 23:20:29.24
>>314
エディタにアーキテクチャも糞もないだろ
むしろ追いつかれてすらいねーよ
0333名無しさん@お腹いっぱい。2013/02/05(火) 06:58:45.44
それは驕りだね。
確かにEmacs使いといえばエディタ界では神扱いされる。
しかしながらそんな環境に甘んじていていい時代は終わってるということ。
Emacs界はもはや末期ローマ帝国なのだ。
0334名無しさん@お腹いっぱい。2013/02/05(火) 07:26:38.84
>>332
わざわざ相手すんなや
0335名無しさん@お腹いっぱい。2013/02/05(火) 13:44:06.40
Helmを使い出したのですが
補完のためにTabを押すと
Sole Actionというものがでてこれを
どうにかしたいのですが、いい方法はありませんか?
SoleActionというのはどういうものなのでしょうか?
0336名無しさん@お腹いっぱい。2013/02/05(火) 18:25:50.62
>>335
helmが呼び出す機能によっては様々なアクションがそこに表示されて選択することかできる

それをオフにしたいならhelmのC-iのキーマップを他のものに割り当てればいいはず

普通の補完を割り当てればそれなりにディレクトリ名も補完してくれる関数名忘れた

基本的にはFindFilesは自動補完されるから補完は必要ないという発想だとおもう
けど俺は自動補完は補完されるタイミングがわからないからオフにしてる
0337名無しさん@お腹いっぱい。2013/02/06(水) 18:10:50.60
とうとう左小指がキートップに触れただけで痛くなってきた。
だからこの3日間は、C-f, C-b, C-n, C-p を封印してみた。

おかげで小指はちょっとマシになったけど、こんなにも生産性が落ちるとは。
タッチタイピングもできなくなったよ。

もうSEやめるべきだよな。あした辞表出すわ。
0338名無しさん@お腹いっぱい。2013/02/06(水) 18:18:04.02
ctrl to cap
0339名無しさん@お腹いっぱい。2013/02/06(水) 18:20:05.18
俺はcapslockをctrlにしてるんだが稀に小指が痛くなる
なんか良いキーバインド無いかな
0340名無しさん@お腹いっぱい。2013/02/06(水) 18:23:08.92
小指で懸垂
小指で指立てふせ
0341名無しさん@お腹いっぱい。2013/02/06(水) 18:23:46.70
小指より薬指のほうが痛くなる
0342名無しさん@お腹いっぱい。2013/02/06(水) 18:31:18.77
もちろんCtrlはAの左です。
(global-unset-key "\C-f")とかする前は、右ALTをCtrlにしてみたこともあった。

小指じゃなくて親指なら耐久性抜群だろうと。
でも3日ほどやってると、親指でもしんどくなってきた。

そのあと、viper-mode も試してみたけど、もうこれEmacsじゃなくって…。
傍からみたら仕事してなさそうなんだけど、この小指の痛さはもうどうしようもないんだわ。
0343名無しさん@お腹いっぱい。2013/02/06(水) 18:33:11.77
だから日本語キーボードのほうがいいって前から(略)
0344名無しさん@お腹いっぱい。2013/02/06(水) 18:33:13.84
>>341
C-xを片手で正しい指で押してるから?
おれは片手でC-x,c,v,b押すときは人差し指使うよ
0345名無しさん@お腹いっぱい。2013/02/06(水) 18:36:11.41
荷重が軽いキーボードなら負担も減る・・・のかな
0346名無しさん@お腹いっぱい。2013/02/06(水) 18:38:38.12
ubk108あたりは慣れてないと小指をおいてるキーを勝手に押してしまうぐらいは軽い
0347名無しさん@お腹いっぱい。2013/02/06(水) 18:38:41.27
20年ぐらい使ってると手の骨格自体がemacsに合わせて変形して痛みとか感じなくなる
0348名無しさん@お腹いっぱい。2013/02/06(水) 18:39:33.52
> もちろんCtrlはAの左です。
こんな痛い事言ってる奴まだいるんだ。
0349名無しさん@お腹いっぱい。2013/02/06(水) 18:40:07.21
おれは変換キーを Ctrl にして無変換キーを Alt にしてる.
修飾キーが全部親指で押せるので,小指痛もないし
ホームポジションが崩れなくていい.

キーボード配置をいじるのがめんどいけど.
0350名無しさん@お腹いっぱい。2013/02/06(水) 18:41:40.67
>>348
CtrlがAの左なのは当然なんで
いちいち口にだして言う必要は無いな
0351名無しさん@お腹いっぱい。2013/02/06(水) 18:41:49.51
>>348
そんなん勝手じゃんよ。
0352名無しさん@お腹いっぱい。2013/02/06(水) 18:52:16.67
>>344
ごめん……Tabを薬指で打つからだと思う
C-iにしろってのは置いといて
0353名無しさん@お腹いっぱい。2013/02/06(水) 19:14:30.19
emacを使えば秀丸のアウトライン解析と同等の事はできる?
0354名無しさん@お腹いっぱい。2013/02/06(水) 19:21:40.49
>>353
emacってなに?
0355名無しさん@お腹いっぱい。2013/02/06(水) 19:22:39.68
http://ja.wikipedia.org/wiki/EMac
0356名無しさん@お腹いっぱい。2013/02/06(水) 20:06:04.90
てっきりemachineのことだと
0357名無しさん@お腹いっぱい。2013/02/06(水) 20:13:10.36
エディターーー
マクロス!

とぅ!!!
0358名無しさん@お腹いっぱい。2013/02/06(水) 20:31:39.44
ALTもWinキーも両方ALTに変更
全角はエスケープに変更

これが一番いいな
Hyperキーなんて使うアプリないし
0359名無しさん@お腹いっぱい。2013/02/06(水) 20:54:40.70
Xmonad…
0360名無しさん@お腹いっぱい。2013/02/06(水) 21:05:11.25
左下の ctrl を手のひらの端で押す技もある
「猫手押し」とかいう
ノートじゃ無理だけど
0361名無しさん@お腹いっぱい。2013/02/06(水) 21:26:49.73
winキーはタイル型ウィンドウマネージャーの修飾に使ってる。

ctrlは変換と無変換にしてから指が痛くなることはなくなったな。
0362名無しさん@お腹いっぱい。2013/02/06(水) 22:01:51.39
Keyboard キーボード 3
http://toro.2ch.net/test/read.cgi/unix/1285489282/
0363名無しさん@お腹いっぱい。2013/02/06(水) 22:12:27.07
指はいいんだが左肩が痛い
0364名無しさん@お腹いっぱい。2013/02/06(水) 22:22:59.18
ctrl押すのに疲れてvimに移る人もいた
0365名無しさん@お腹いっぱい。2013/02/06(水) 22:35:14.36
俺も色々試行錯誤して、変換→Ctrl、無変換→Altに落ち着いた
むしろ始めからそういうキーボードがあればいいとすら思う
親指シフトキーボードがまさにそれだが、恐しく高くて手がでない
0366名無しさん@お腹いっぱい。2013/02/06(水) 22:38:33.11
親指はAltと染み込んじゃって単語単位で移動するものだと言う感覚が抜けてくれない
そういうのは大丈夫なの?
0367名無しさん@お腹いっぱい。2013/02/06(水) 22:52:15.74
>>366
今一言ってる意味が分からんが無変換→Altは単に左親指を曲げる角度が緩くなるってだけだぞ
右親指は普通の人はスペースの上にあるか遊んでるだけだから多少慣れが必要だね
■ このスレッドは過去ログ倉庫に格納されています