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

Emacs Part 41

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2012/09/07(金) 18:10:22.94
前スレ

Emacs Part 40
http://toro.2ch.net/test/read.cgi/unix/1328958449/
0278名無しさん@お腹いっぱい。2012/10/02(火) 17:03:31.41
   /⌒⌒\
   / /ヽ ヽ
  / /__\ ヽ  あー俺の環境と違うわー
 / / bb) | |   ん?これ文字コードの問題じゃね?
<彡(リ  >  ソ ヽ  てか、ウィンドウズだよ
 ≦イ   ̄ /\_≧  ウィンドウズのせいだったよ
`/ |  ー イ\     (ッターーン!!!)
/  ヽ   | ヽ
レ⌒\ \  / | |
\//  ̄ ̄ヽ |T ̄ ̄ ̄|
/////゙zノノU ||   |
 // ヾ☆/ || | ̄| |
0279名無しさん@お腹いっぱい。2012/10/02(火) 21:42:54.85
>>277
emacsとnode.jsを使ってもできそうだが
誰か頼む
0280名無しさん@お腹いっぱい。2012/10/03(水) 09:05:56.80
MS公式が配布してるTypeScriptモードのスクリプト、Emacsだけやったらサイズ大きい(のわりに機能そんなにあるように見えない?)のは
ちょっと悲しいな。
0281名無しさん@お腹いっぱい。2012/10/06(土) 00:46:18.24
^Mが改行文字だとして
(replace-string "^M" "")
このelispは正常に動作するのですが、wikiなどにこれを投稿して表示すると^Mの部分で改行されてしまいます
可読性を考えて改行文字は文字として表示し、かつelispとして意図したとおりに動作させる手は無いかと思ったのですが
それらしい物を見つけることはできませんでした
何か策はあるでしょうか
0282名無しさん@お腹いっぱい。2012/10/06(土) 00:57:16.63
(replace-string "\r" "")とか(replace-string "\015" "")とか?
0283名無しさん@お腹いっぱい。2012/10/06(土) 01:21:32.07
>>282
ばっちりです!ありがとうございます。
0284名無しさん@お腹いっぱい。2012/10/06(土) 12:03:55.31
今更これ聞くのも恥ずかしいんですが…。
fooをbar置換しているときに、
foo1 // ここから
foo2
foo3 // ここまで置換したい
foo4 // ここにカーソル来て欲しくない

説明の都合上、矩形で処理できそうなならびになってますが、
実際は散らかっています。foo3の時yを押してfoo4に来ちゃう問題、みんなどうしてる?
0285名無しさん@お腹いっぱい。2012/10/06(土) 12:25:45.77
^
0286名無しさん@お腹いっぱい。2012/10/06(土) 12:27:21.74
>>284
narrow-to-regionしてから置換
0287名無しさん@お腹いっぱい。2012/10/06(土) 13:22:38.57
>>285
うはっwこれはww 即レスありがとうございます。重宝します。

>>286
勉強になります。これも役に立ちそうです。↓メモ。
C-x n n
Narrow down to between point and mark (narrow-to-region).
C-x n w
Widen to make the entire buffer accessible again (widen).
0288名無しさん@お腹いっぱい。2012/10/06(土) 17:21:06.01
対話的に置換するなら、(transient-mark-mode 1)を評価して
region範囲の表示を有効にしておくとnarrowingと同じ効果がある
あと、foo3でピリオドもある
0289名無しさん@お腹いっぱい。2012/10/06(土) 17:41:19.61
普通にfoo3で.押す!
0290名無しさん@お腹いっぱい。2012/10/06(土) 17:47:33.22
>>288
うおおお!!!

> (transient-mark-mode 1)

デフォでこれenabledにして使ってたんですが、
それにそんな効果が隠されていたとは知らなかったです。

> foo3でピリオド

これだ!! これかつ、ミスったときに^押せば完璧ですね。
皆さんのおかげで俺捗って仕方ありません。どうもありがとうございました。
0291名無しさん@お腹いっぱい。2012/10/06(土) 17:48:28.55
>>289
ありがとうございます!!
0292名無しさん@お腹いっぱい。2012/10/06(土) 19:08:35.71
ピリオドなんてあったのか・・知らんかった・・
なんか結構長いこと使ってるが、こういう知らないけど地味に便利なこと結構ありそうだなぁ
0293名無しさん@お腹いっぱい。2012/10/06(土) 19:45:05.29
>>289
"Period to replace one match and exit."

素晴らしい。。。
0294名無しさん@お腹いっぱい。2012/10/06(土) 19:46:26.22
別トピックだけどC-M-SPCのリージョン選択機能知った時は
思わず笑みがこぼれた
0295名無しさん@お腹いっぱい。2012/10/06(土) 20:34:02.35
C-M-SPCのリージョン選択機能kwsk
0296名無しさん@お腹いっぱい。2012/10/06(土) 21:17:50.38
 (+ 1 8)で

ここにカーソル持ってきてC-M-SPC押すと)までが選択されるってやつだな。
あんま使ってないけど。

F1 k C-M-SPCでヘルプ見れるぜ。
0297名無しさん@お腹いっぱい。2012/10/06(土) 21:17:52.24
(with-temp-buffer)によって作った作業用バッファの内容を
バッファ切り替えによって表示させるにはどうすればいいですか
今はscratchバッファで
(with-temp-buffer
(progn
...)
(write-region (point-min) (point-max) "c:/hoge.txt"))
これを実行して作業内容をc:/hoge.txtに置きそれを開いています
(princ (buffer-string))とするとscratchバッファにそれが追記されてしまいます
よろしくお願いします
0298名無しさん@お腹いっぱい。2012/10/06(土) 22:19:57.43
with-temp-bufferは作業用バッファを削除してから戻るから、そのバッファに切り替えるとかは無理じゃないの?
作業用バッファ作ってそこに何か出力してそれに切り替えるなら、
with-temp-bufferから適当に借用してこんな感じかね?
もっとちゃんとしたやり方がありそうだけど
(let ((nbf (generate-new-buffer "*MYTEMP*")))
(with-current-buffer nbf
(unwind-protect
(progn (insert-string "テスト"))
(pop-to-buffer nbf))))
0299名無しさん@お腹いっぱい。2012/10/06(土) 22:54:05.70
>>298
こういう手がありましたか。ありがとうございます。勉強になりました。
0300名無しさん@お腹いっぱい。2012/10/07(日) 06:39:29.58
>>297

(with-temp-buffer
(insert "dddd")
(switch-to-buffer (current-buffer))
(sit-for 5))

ってこと?
0301名無しさん@お腹いっぱい。2012/10/07(日) 11:54:16.30
insert-file-contents でファイルをバッファに挿入すると日本語が
\346\227\245
のような文字列に化けてしまいます
(コピペすると半角空白になります)
ascii文字は問題ありません
何がいけないのですか
0302名無しさん@お腹いっぱい。2012/10/07(日) 11:56:19.08
自己解決しました
実際にはinsert-fire-contents-literallyを使っていました
insert-fire-contentsにしたら問題がなくなりました
0303名無しさん@お腹いっぱい。2012/10/07(日) 13:36:18.76
そう言えば大仁田厚ってどうしてるんだろうなぁ
0304名無しさん@お腹いっぱい。2012/10/07(日) 18:25:08.91
上のピリオドみたいに、結構使ってるけど、ひょっとして知らねー奴いるんじゃねえの?
っていう便利コマンド教えてくれ。
0305名無しさん@お腹いっぱい。2012/10/07(日) 18:41:29.24
ピリオドの場合は俺の場合ヘルプになかったからなー。
y,n,!しか使ってなかった。ちなみに終わらせるときはC-g使ってたw
0306名無しさん@お腹いっぱい。2012/10/07(日) 18:46:02.14
うちのには query-replace 中の ? で出てくるヘルプにちゃんと載ってたよ
>RET or `q' to exit, Period to replace one match and exit,
0307名無しさん@お腹いっぱい。2012/10/07(日) 18:56:46.97
うわごめん。たしかにPeriodって書いてあった…。
'.'って書いとけよなー(#^ω^)ピキピキ

うそですごめんなさい。
0308名無しさん@お腹いっぱい。2012/10/07(日) 19:39:24.38
C-rが上手く使えない
0309名無しさん@お腹いっぱい。2012/10/07(日) 19:55:38.21
最近M-^を地味に使うようになったな。
最初はあんま使わなかったのだが、徐々に。

condition
|| condition2 ←この行でM-^すると

condition || condition2 ←こうなる

あとはC-M-SPCかね。
0310名無しさん@お腹いっぱい。2012/10/07(日) 20:10:44.29
C-s '検索文字' C-s で飛んでからミニバッファにカーソル移動する方法がわからん。
0311名無しさん@お腹いっぱい。2012/10/07(日) 20:40:03.87
カーソル移動は出来ないと思うがDELで直前の文字消せるべ
0312名無しさん@お腹いっぱい。2012/10/07(日) 21:32:20.36
>>310
C-s(C-r) の検索中なら M-e で再編集できるけど?
あと、C−w や M−r や M−c も便利。
0313名無しさん@お腹いっぱい。2012/10/07(日) 22:21:46.65
thanks
0314名無しさん@お腹いっぱい。2012/10/07(日) 23:31:38.08
検索中のM-r便利だな。正規表現の検索諦めてた。
M-c便利だな。それが必要になったらいつもぐぐって、ごにょごにょ打ち込んでいちいち切り替えてやってた。

正規表現の置換はいちいち
M-x replace-regexp
やってるけど、標準でこれを一発実行できるキーある?
0315名無しさん@お腹いっぱい。2012/10/08(月) 01:06:53.37
一発実行するためのキーバインドを設定すればいいんじゃね?
0316名無しさん@お腹いっぱい。2012/10/08(月) 01:26:21.14
>>314
C-h w とか M-x where-is とかやってキーバインド探すといいよ。
replace-regexp は標準ではバインドされてないとは思うけど。
0317名無しさん@お腹いっぱい。2012/10/08(月) 01:36:01.15
1行あたり一定の字数を超過したらそれ以後行末までの文字色を変更するelispをどこかで見たのですが
どなかたご存じですか
0318名無しさん@お腹いっぱい。2012/10/08(月) 05:52:09.76
>>312
ご参考
ttp://www.emacswiki.org/emacs/IncrementalSearch
0319名無しさん@お腹いっぱい。2012/10/08(月) 07:10:29.05
helm-c-moccurのhelm-c-moccur-dmoccurが動かないんですが、動作確認できている人いますか?
emacs24、helmはgitの最新版です

現在は代用でhelm-do-grepを使っているのですが、選択すると同時に移動するのが便利なのでできたらdmoccurを使いたいです
0320名無しさん@お腹いっぱい。2012/10/08(月) 10:19:31.59
>>316
M-x where-is こんなのあったのか…。
0321名無しさん@お腹いっぱい。2012/10/08(月) 11:28:23.55
>>317
whitespace.el
0322名無しさん@お腹いっぱい。2012/10/08(月) 19:20:37.19
317じゃないけど試してみます
0323名無しさん@お腹いっぱい。2012/10/08(月) 21:05:07.03
sql-postgres だれもできない わろた
0324名無しさん@お腹いっぱい。2012/10/08(月) 23:14:09.44
>>317
fill-column-indicator かも
0325名無しさん@お腹いっぱい。2012/10/08(月) 23:22:11.90
fciは以前試したらauto-completeとの相性悪かったけどもうどっちかで対策されたかな?
0326名無しさん@お腹いっぱい。2012/10/08(月) 23:52:45.95
>>321のlines-tailでした
知らなかった>>324のfill-column-indicatorはかなりよさそうですね
emacsが本格的なIDEに見えてきました
0327名無しさん@お腹いっぱい。2012/10/09(火) 01:40:55.50
>>323
いちいちageでつぶやくなよ池沼
ここそういう場所じゃねーから
0328名無しさん@お腹いっぱい。2012/10/09(火) 06:30:55.01
かまうなよ。
0329名無しさん@お腹いっぱい。2012/10/09(火) 10:24:10.15
まだ、ageるなとか言い出すジジイが生存してるのか。早く死なねーかなー。
0330名無しさん@お腹いっぱい。2012/10/09(火) 10:36:51.05
おまえが死ね。今死ね
0331名無しさん@お腹いっぱい。2012/10/09(火) 11:31:29.00
ストレス貯めてる奴は外で空気でも吸ってこい
0332名無しさん@お腹いっぱい。2012/10/09(火) 14:04:00.36
スレを荒らしてストレス発散するキチガイは二度とくんな
0333名無しさん@お腹いっぱい。2012/10/09(火) 17:25:16.94
これだからIDのない板は。
0334名無しさん@お腹いっぱい。2012/10/10(水) 15:30:35.79
Emacsって単独のアプリで使用するのとターミナルで開くことどっちが多い?
Vimはターミナルで開いたり閉じたり繰り返すけど、Emacsはどういうスタイルで使用するのか分からん。
0335名無しさん@お腹いっぱい。2012/10/10(水) 15:38:59.14
一旦開いたら何日(何か月)も閉じない。
0336名無しさん@お腹いっぱい。2012/10/10(水) 17:21:45.89
screen の中で開きっぱなし。
外からでもそれ使う。
0337名無しさん@お腹いっぱい。2012/10/10(水) 17:30:38.64
でもバックアップファイルの番号を更新するために開いたり閉じたりする
0338名無しさん@お腹いっぱい。2012/10/10(水) 17:47:34.60
ターミナル上だと使えるキーに制限あるから
普段は(Macの場合)Cocoa Emacsで開発してる
0339名無しさん@お腹いっぱい。2012/10/10(水) 18:39:52.04
ログイン中はC-zとfgでやりくり。
0340名無しさん@お腹いっぱい。2012/10/10(水) 19:53:17.26
Windows で使ってるけど最近すごく軽いから必要のないときは普通に終了させてるな。
ターミナル作業は Emacs 内で済ませてる。
0341名無しさん@お腹いっぱい。2012/10/10(水) 21:52:16.51
screen内だったらマウスは使えないの?
0342名無しさん@お腹いっぱい。2012/10/10(水) 21:56:46.57
使えるよ。もっとも X や Windows 上に直で出してる時といろいろ具合は違うけど。
0343名無しさん@お腹いっぱい。2012/10/10(水) 21:59:51.48
なるほど。ありがとう。
03443362012/10/11(木) 01:01:48.20
>>341
使う気がないのでその辺よくわからん。
0345名無しさん@お腹いっぱい。2012/10/11(木) 12:30:03.69
tmuxで開きっぱなし
ターミナル操作は他のセッションでやる
ターミナル作業中少し設定ファイル編集するような作業はvi
0346名無しさん@お腹いっぱい。2012/10/11(木) 18:50:41.78
俺はWorkspace 2がEmacs専用になってる.
0347名無しさん@お腹いっぱい。2012/10/11(木) 19:08:20.22
単一の(ウィンドウマネージャにおける)ウィンドウ内で運用するか
それとも複数ウィンドウで運用するかとかはどうですか
ログ見る限り後者はあまりいなそうだけど
0348名無しさん@お腹いっぱい。2012/10/11(木) 19:12:02.01
>>346
おれは1だ。
0349名無しさん@お腹いっぱい。2012/10/11(木) 19:13:19.76
1で端末エミュ最大化してEmacs
2でブラウザ最大化
3以降が各種作業用
0350名無しさん@お腹いっぱい。2012/10/11(木) 19:37:59.56
デュアルディスプレイで、1がターミナル最大化
2が資料閲覧用 or X必要なアプリ実行
0351名無しさん@お腹いっぱい。2012/10/11(木) 19:43:42.67
>>347
最近は結構複窓も使ってる。
windows.el や elscreen もどきの簡単なウィンドウ構成保存スクリプトとか
popwin とかも使ってるけどたまに盛大にウィンドウ構成ぶっこわれることあるし
0352名無しさん@お腹いっぱい。2012/10/11(木) 20:18:00.53
tmuxでrootと一般ユーザで2枚開きっぱなし。OSかEmacsのバージョンアップするまで。
0353名無しさん@お腹いっぱい。2012/10/11(木) 20:21:04.43
やっぱターミナルの人が多いのか
0354名無しさん@お腹いっぱい。2012/10/11(木) 20:30:30.28
emacs 立ちあげっぱなしの人って何かのパッケージ削除するような場合は
一々 makunbound とか fmakunbound とかしてまわるの?
0355名無しさん@お腹いっぱい。2012/10/11(木) 20:35:01.69
削除しなきゃいけないパッケージを使う場合だけ別に起動する。(めったにない)
0356名無しさん@お腹いっぱい。2012/10/11(木) 20:42:27.63
起動しっぱなしの場合 session.el とかも不要になるのか
0357名無しさん@お腹いっぱい。2012/10/11(木) 20:53:09.88
>>351
なるほど。うちはウィンドウを生成させずに全部フレームで管理してる
もし窓が不意に出てきてもWMの操作で消せる

(setq pop-up-frames t)
(setq pop-up-windows nil)
0358名無しさん@お腹いっぱい。2012/10/11(木) 21:09:17.58
>>357
タイル型WMだと結構ありかなって気もする
NTEmacs でやったら結構うっとおしいことになった
0359名無しさん@お腹いっぱい。2012/10/11(木) 22:51:05.92
>>356
逆なのだ
やむをえず落とさなきゃならなくなったとき
起動しっぱなしで開いてる大量のファイルや位置情報を
退避復旧するためにその手のコードが必要不可欠になる
少なくとも俺は
0360名無しさん@お腹いっぱい。2012/10/12(金) 19:15:13.44
MicroEmacsの僕も仲間に入れてください
0361名無しさん@お腹いっぱい。2012/10/13(土) 03:04:51.07

WinでNTEmacsを使おうと思ってるんだけど、IMEパッチって当てた方がいいの?
Google日本語入力使ってるんだけど
0362名無しさん@お腹いっぱい。2012/10/13(土) 08:34:52.59
おいちょっと教えて
color-moccur使いたいんだけど*Moccur*バッファで
候補移動しても元バッファの表示が切り替わらないんだわ
本来は該当行にジャンプするよね?
0363名無しさん@お腹いっぱい。2012/10/13(土) 10:27:32.27
>>361
NTEmacsスレで聞いたほうがいいと思うけど、
GoogleIMEなら素のNTEmacsでも別にそんなに問題なく使えるよ。
0364名無しさん@お腹いっぱい。2012/10/13(土) 11:09:35.61
>>361
grupackのNTEmacsを使えばいいよ
パッチ適用済みだし
0365名無しさん@お腹いっぱい。2012/10/13(土) 11:16:41.45
gnupackな。
0366名無しさん@お腹いっぱい。2012/10/13(土) 11:33:37.46
grupackってなんかすごそうだなw
0367名無しさん@お腹いっぱい。2012/10/13(土) 17:55:03.85
IMEのON/OFFでemacsのカーソル色変えてるんだが、
gnupackとGoogle IMEだと取り合いになってうまくいかないんだよなぁ。
前gnupackスレでも尋ねたんだがうまくいかなかった。
0368名無しさん@お腹いっぱい。2012/10/13(土) 18:58:47.60
grupackだとうまくいくかも
0369名無しさん@お腹いっぱい。2012/10/13(土) 19:10:55.82
ウィザード級パッケージとは…
0370名無しさん@お腹いっぱい。2012/10/13(土) 19:50:10.89
牛乳パック
0371名無しさん@お腹いっぱい。2012/10/13(土) 22:44:44.82
                     ■■■■■■■■
                  ■■■■■■■■■■■■
                 ■■■■■■■■■■■■■■
                ■■■■■■ 〜〜 ■■■■■■
              ■■■■■■〜〜〜〜〜〜■■■■■■
             ■■■■■ 〜〜〜〜〜〜〜〜 ■■■■■
             ■■■■■   ■■〜〜■■   ■■■■■
           ■■■■■  ■■■■〜〜■■■■  ■■■■■
           ■■■■          ||          ■■■■ 呼んだ?
          ■■■■■   〓〓〓〓||〓〓〓〓   ■■■■■
          ■■■■   〓〓     ||    〓〓   ■■■■
          ■■■■        //  \\       ■■■■
          ■■■■      //( ●● )\\     ■■■■
          ■■■■    // ■■■■■■ \\   ■■■■
          ■■■■■  / ■■■■■■■■ \  ■■■■■
          ■■■■■   ■/〓〓〓〓〓〓\■   ■■■■■
          ■■■■■■ ■ /▼▼▼▼▼▼\ ■ ■■■■■■
          ■■■■■■■■■ ▼▼▼▼▼▼ ■■■■■■■■■
           ■■■■■■■■■   ■■   ■■■■■■■■■
           ■■■■■■■■■■■■■■■■■■■■■■■
           ■■■■■■■■■■■■■■■■■■■■■■■■
            ■■■■■■■■■■■■■■■■■■■■■■
              ■■■■■■■■■■■■■■■■■■■■
              ■■■■■■■■■■■■■■■■■■■■
0372名無しさん@お腹いっぱい。2012/10/14(日) 03:32:24.41
バッファ内に唯一でてくる
*test foo
のような*一つとそれに続く行末までの文字列を(elispで処理できるよう)取得し、
そのあとでその行を削除したいのですが、どうすればよいでしょうか

ただし、
**hoge
**bar
のようにバッファ内には*が二つ以上続くものは何度も出てくるのですが
それらには何も影響を与えたくないです
0373名無しさん@お腹いっぱい。2012/10/14(日) 08:27:35.91
* 一つが必ず行頭に出て、必ず他の文字が続くなら、簡単な正規表現一発でいけるね。

(save-excursion
(goto-char (point-min))
(save-match-data
(search-forward-regexp "^[*][^*]")
(let ((text (buffer-substring (line-beginning-position) (line-end-position))))
(forward-line 1)
(delete-region (match-beginning 0) (point))
text を使う処理
)))

行頭以外とかも考えるなら、 * の列を探して、長さ 1 だった場合にだけ処理する、ってのが簡単かな。
0374名無しさん@お腹いっぱい。2012/10/14(日) 11:35:54.06
ありがとうございます。理解できました。
気になったのですが、save-match-dataとsearch-forward-regexpを組み合わせて処理するのと
replace-regexpだけで処理することにはどういう違いがあるのでしょうか

0375名無しさん@お腹いっぱい。2012/10/14(日) 11:57:14.63
すみません前段はre-search-forward と replace-match の間違いでした
0376名無しさん@お腹いっぱい。2012/10/14(日) 12:44:54.21
単に(re-search-forward "[^*]\\(\\*[^*\n][^*\n]*\\)" nil t)じゃダメなのか?
0377名無しさん@お腹いっぱい。2012/10/14(日) 15:57:12.55
>>374-375
replace-regexp の docstring に書いてあるように、これは対話的に使うためのコマンド。
push-mark や undo-boundary を呼んでるから、以降の編集作業に影響するかも。

>>376
対象がバッファ先頭とかにあると一致しなそう。
■ このスレッドは過去ログ倉庫に格納されています