Emacs Part 41
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2012/09/07(金) 18:10:22.94Emacs Part 40
http://toro.2ch.net/test/read.cgi/unix/1328958449/
0291名無しさん@お腹いっぱい。
2012/10/06(土) 17:48:28.55ありがとうございます!!
0292名無しさん@お腹いっぱい。
2012/10/06(土) 19:08:35.71なんか結構長いこと使ってるが、こういう知らないけど地味に便利なこと結構ありそうだなぁ
0293名無しさん@お腹いっぱい。
2012/10/06(土) 19:45:05.29"Period to replace one match and exit."
素晴らしい。。。
0294名無しさん@お腹いっぱい。
2012/10/06(土) 19:46:26.22思わず笑みがこぼれた
0295名無しさん@お腹いっぱい。
2012/10/06(土) 20:34:02.350296名無しさん@お腹いっぱい。
2012/10/06(土) 21:17:50.38↑
ここにカーソル持ってきてC-M-SPC押すと)までが選択されるってやつだな。
あんま使ってないけど。
F1 k C-M-SPCでヘルプ見れるぜ。
0297名無しさん@お腹いっぱい。
2012/10/06(土) 21:17:52.24バッファ切り替えによって表示させるにはどうすればいいですか
今は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から適当に借用してこんな感じかね?
もっとちゃんとしたやり方がありそうだけど
(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こういう手がありましたか。ありがとうございます。勉強になりました。
0300名無しさん@お腹いっぱい。
2012/10/07(日) 06:39:29.58(with-temp-buffer
(insert "dddd")
(switch-to-buffer (current-buffer))
(sit-for 5))
ってこと?
0301名無しさん@お腹いっぱい。
2012/10/07(日) 11:54:16.30\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.760304名無しさん@お腹いっぱい。
2012/10/07(日) 18:25:08.91っていう便利コマンド教えてくれ。
0305名無しさん@お腹いっぱい。
2012/10/07(日) 18:41:29.24y,n,!しか使ってなかった。ちなみに終わらせるときはC-g使ってたw
0306名無しさん@お腹いっぱい。
2012/10/07(日) 18:46:02.14>RET or `q' to exit, Period to replace one match and exit,
0307名無しさん@お腹いっぱい。
2012/10/07(日) 18:56:46.97'.'って書いとけよなー(#^ω^)ピキピキ
うそですごめんなさい。
0308名無しさん@お腹いっぱい。
2012/10/07(日) 19:39:24.380309名無しさん@お腹いっぱい。
2012/10/07(日) 19:55:38.21最初はあんま使わなかったのだが、徐々に。
condition
|| condition2 ←この行でM-^すると
condition || condition2 ←こうなる
あとはC-M-SPCかね。
0310名無しさん@お腹いっぱい。
2012/10/07(日) 20:10:44.290311名無しさん@お腹いっぱい。
2012/10/07(日) 20:40:03.870312名無しさん@お腹いっぱい。
2012/10/07(日) 21:32:20.36C-s(C-r) の検索中なら M-e で再編集できるけど?
あと、C−w や M−r や M−c も便利。
0313名無しさん@お腹いっぱい。
2012/10/07(日) 22:21:46.650314名無しさん@お腹いっぱい。
2012/10/07(日) 23:31:38.08M-c便利だな。それが必要になったらいつもぐぐって、ごにょごにょ打ち込んでいちいち切り替えてやってた。
正規表現の置換はいちいち
M-x replace-regexp
やってるけど、標準でこれを一発実行できるキーある?
0315名無しさん@お腹いっぱい。
2012/10/08(月) 01:06:53.370316名無しさん@お腹いっぱい。
2012/10/08(月) 01:26:21.14C-h w とか M-x where-is とかやってキーバインド探すといいよ。
replace-regexp は標準ではバインドされてないとは思うけど。
0317名無しさん@お腹いっぱい。
2012/10/08(月) 01:36:01.15どなかたご存じですか
0318名無しさん@お腹いっぱい。
2012/10/08(月) 05:52:09.76ご参考
ttp://www.emacswiki.org/emacs/IncrementalSearch
0319名無しさん@お腹いっぱい。
2012/10/08(月) 07:10:29.05emacs24、helmはgitの最新版です
現在は代用でhelm-do-grepを使っているのですが、選択すると同時に移動するのが便利なのでできたらdmoccurを使いたいです
0320名無しさん@お腹いっぱい。
2012/10/08(月) 10:19:31.59M-x where-is こんなのあったのか…。
0321名無しさん@お腹いっぱい。
2012/10/08(月) 11:28:23.55whitespace.el
0322名無しさん@お腹いっぱい。
2012/10/08(月) 19:20:37.190323名無しさん@お腹いっぱい。
2012/10/08(月) 21:05:07.030324名無しさん@お腹いっぱい。
2012/10/08(月) 23:14:09.44fill-column-indicator かも
0325名無しさん@お腹いっぱい。
2012/10/08(月) 23:22:11.900326名無しさん@お腹いっぱい。
2012/10/08(月) 23:52:45.95知らなかった>>324のfill-column-indicatorはかなりよさそうですね
emacsが本格的なIDEに見えてきました
0327名無しさん@お腹いっぱい。
2012/10/09(火) 01:40:55.50いちいちageでつぶやくなよ池沼
ここそういう場所じゃねーから
0328名無しさん@お腹いっぱい。
2012/10/09(火) 06:30:55.010329名無しさん@お腹いっぱい。
2012/10/09(火) 10:24:10.150330名無しさん@お腹いっぱい。
2012/10/09(火) 10:36:51.050331名無しさん@お腹いっぱい。
2012/10/09(火) 11:31:29.000332名無しさん@お腹いっぱい。
2012/10/09(火) 14:04:00.360333名無しさん@お腹いっぱい。
2012/10/09(火) 17:25:16.940334名無しさん@お腹いっぱい。
2012/10/10(水) 15:30:35.79Vimはターミナルで開いたり閉じたり繰り返すけど、Emacsはどういうスタイルで使用するのか分からん。
0335名無しさん@お腹いっぱい。
2012/10/10(水) 15:38:59.140336名無しさん@お腹いっぱい。
2012/10/10(水) 17:21:45.89外からでもそれ使う。
0337名無しさん@お腹いっぱい。
2012/10/10(水) 17:30:38.640338名無しさん@お腹いっぱい。
2012/10/10(水) 17:47:34.60普段は(Macの場合)Cocoa Emacsで開発してる
0339名無しさん@お腹いっぱい。
2012/10/10(水) 18:39:52.040340名無しさん@お腹いっぱい。
2012/10/10(水) 19:53:17.26ターミナル作業は Emacs 内で済ませてる。
0341名無しさん@お腹いっぱい。
2012/10/10(水) 21:52:16.510342名無しさん@お腹いっぱい。
2012/10/10(水) 21:56:46.570343名無しさん@お腹いっぱい。
2012/10/10(水) 21:59:51.480345名無しさん@お腹いっぱい。
2012/10/11(木) 12:30:03.69ターミナル操作は他のセッションでやる
ターミナル作業中少し設定ファイル編集するような作業はvi
0346名無しさん@お腹いっぱい。
2012/10/11(木) 18:50:41.780347名無しさん@お腹いっぱい。
2012/10/11(木) 19:08:20.22それとも複数ウィンドウで運用するかとかはどうですか
ログ見る限り後者はあまりいなそうだけど
0348名無しさん@お腹いっぱい。
2012/10/11(木) 19:12:02.01おれは1だ。
0349名無しさん@お腹いっぱい。
2012/10/11(木) 19:13:19.762でブラウザ最大化
3以降が各種作業用
0350名無しさん@お腹いっぱい。
2012/10/11(木) 19:37:59.562が資料閲覧用 or X必要なアプリ実行
0351名無しさん@お腹いっぱい。
2012/10/11(木) 19:43:42.67最近は結構複窓も使ってる。
windows.el や elscreen もどきの簡単なウィンドウ構成保存スクリプトとか
popwin とかも使ってるけどたまに盛大にウィンドウ構成ぶっこわれることあるし
0352名無しさん@お腹いっぱい。
2012/10/11(木) 20:18:00.530353名無しさん@お腹いっぱい。
2012/10/11(木) 20:21:04.430354名無しさん@お腹いっぱい。
2012/10/11(木) 20:30:30.28一々 makunbound とか fmakunbound とかしてまわるの?
0355名無しさん@お腹いっぱい。
2012/10/11(木) 20:35:01.690356名無しさん@お腹いっぱい。
2012/10/11(木) 20:42:27.630357名無しさん@お腹いっぱい。
2012/10/11(木) 20:53:09.88なるほど。うちはウィンドウを生成させずに全部フレームで管理してる
もし窓が不意に出てきてもWMの操作で消せる
(setq pop-up-frames t)
(setq pop-up-windows nil)
0358名無しさん@お腹いっぱい。
2012/10/11(木) 21:09:17.58タイル型WMだと結構ありかなって気もする
NTEmacs でやったら結構うっとおしいことになった
0359名無しさん@お腹いっぱい。
2012/10/11(木) 22:51:05.92逆なのだ
やむをえず落とさなきゃならなくなったとき
起動しっぱなしで開いてる大量のファイルや位置情報を
退避復旧するためにその手のコードが必要不可欠になる
少なくとも俺は
0360名無しさん@お腹いっぱい。
2012/10/12(金) 19:15:13.440361名無しさん@お腹いっぱい。
2012/10/13(土) 03:04:51.07WinでNTEmacsを使おうと思ってるんだけど、IMEパッチって当てた方がいいの?
Google日本語入力使ってるんだけど
0362名無しさん@お腹いっぱい。
2012/10/13(土) 08:34:52.59color-moccur使いたいんだけど*Moccur*バッファで
候補移動しても元バッファの表示が切り替わらないんだわ
本来は該当行にジャンプするよね?
0363名無しさん@お腹いっぱい。
2012/10/13(土) 10:27:32.27NTEmacsスレで聞いたほうがいいと思うけど、
GoogleIMEなら素のNTEmacsでも別にそんなに問題なく使えるよ。
0364名無しさん@お腹いっぱい。
2012/10/13(土) 11:09:35.61grupackのNTEmacsを使えばいいよ
パッチ適用済みだし
0365名無しさん@お腹いっぱい。
2012/10/13(土) 11:16:41.450366名無しさん@お腹いっぱい。
2012/10/13(土) 11:33:37.460367名無しさん@お腹いっぱい。
2012/10/13(土) 17:55:03.85gnupackとGoogle IMEだと取り合いになってうまくいかないんだよなぁ。
前gnupackスレでも尋ねたんだがうまくいかなかった。
0368名無しさん@お腹いっぱい。
2012/10/13(土) 18:58:47.600369名無しさん@お腹いっぱい。
2012/10/13(土) 19:10:55.820370名無しさん@お腹いっぱい。
2012/10/13(土) 19:50:10.890371名無しさん@お腹いっぱい。
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.630376名無しさん@お腹いっぱい。
2012/10/14(日) 12:44:54.210377名無しさん@お腹いっぱい。
2012/10/14(日) 15:57:12.55replace-regexp の docstring に書いてあるように、これは対話的に使うためのコマンド。
push-mark や undo-boundary を呼んでるから、以降の編集作業に影響するかも。
>>376
対象がバッファ先頭とかにあると一致しなそう。
0378名無しさん@お腹いっぱい。
2012/10/14(日) 20:59:17.26なるほど、replace-regexpでは単なる置換以上のことをしてしまうのですね
なぜ対話的にしか使わないかと疑問に思っていましたがそうだったのですか
0379名無しさん@お腹いっぱい。
2012/10/14(日) 21:48:30.58大学の勉強用にNTEmacs入れて、その後でCygwin入れたんですが、Error (initialization): User nas no home directoryが表示されるようになりました
Cygwin入れる時に環境変数HOMEを追加したのが関係してるんでしょうか?
問題なく動きますが気に掛かります
0380名無しさん@お腹いっぱい。
2012/10/14(日) 22:21:57.16windows環境ならそちらを使えばよいのでは?
0381名無しさん@お腹いっぱい。
2012/10/14(日) 22:34:21.37インストール手順に関して情報が溢れていたので、まずgnupackでないやつでやっていました。
今度また時間が出来たら試してみます。
0382名無しさん@お腹いっぱい。
2012/10/15(月) 00:45:15.24この結果が5になります。
common lispでは6になりました
これはemacsにバグがあるということですか
0383名無しさん@お腹いっぱい。
2012/10/15(月) 00:53:53.360384名無しさん@お腹いっぱい。
2012/10/15(月) 04:29:48.15けれども以下のようにしても上手くいかないんですが、何故でしょうか?
(defun set-whitespace-line-column (mode column)
(let ((hook (intern (concat (symbol-name mode) "-hook"))))
(add-hook hook
(lambda ()
(setq whitespace-line-column column)))))
(let ((lis '((emacs-lisp-mode 100) (lisp-mode 150)))) ; デフォルトではfill-columnのままがいい
(mapcar (lambda (x) (apply set-whitespace-line-column x))
lis))
; (c-mode nil) とかするとc-modeでは無効とかなったりすると嬉しいけどやり方がわからない。。。
0385名無しさん@お腹いっぱい。
2012/10/15(月) 08:43:04.54(defun set-whitespace-line-column (mode column)
(let ((hook (intern (concat (symbol-name mode) "-hook"))))
(add-hook hook
`(lambda ()
(setq whitespace-line-column ,column)))))
あるいは Emacs 24 系で lexical-binding を使うか。
0386名無しさん@お腹いっぱい。
2012/10/16(火) 01:34:49.36> ; (c-mode nil) とかするとc-modeでは無効とかなったりすると嬉しいけどやり方がわからない。。。
(kill-local-variable 'whitespace-line-column)
0387名無しさん@お腹いっぱい。
2012/10/16(火) 05:02:23.98lambdaがclosureを生成しないなんて・・・
(lambda ()
(lexical-let ((column column))
(if column
(setq whitespace-line-column column)
(kill-local-variable 'whitespace-line-column)))))))
だと駄目なんですね。(当たり前だけど。) http://emacswiki.org/emacs/DynamicBindingVsLexicalBinding を見てみましたが、
lambdaにclosureを生成させるには lexical-binding を使うしかないんですかね。(cl使っても無理?)
0388名無しさん@お腹いっぱい。
2012/10/16(火) 05:04:40.39kill-local-variable だとdefalut値(fillcolumn使うとか書いてるくせにwhitespace.elには80でhard codeしてる・・・)
を使うのでうまくいきません。結局次の様にしました。
(make-variable-buffer-local 'whitespace-style)
(setq-default whitespace-style
'(face
tabs spaces newline trailing space-before-tab space-after-tab
space-mark tab-mark newline-mark
lines-tail))
(defun set-whitespace-line-column (mode column)
(let ((hook (intern (concat (symbol-name mode) "-hook"))))
(add-hook hook
`(lambda ()
(if ,column
(setq whitespace-line-column ,column)
(setq whitespace-style
(srfi-1:remove (lambda (x) (eq 'lines-tail x))
whitespace-style)))))))
(let ((lis '((emacs-lisp-mode nil))))
(mapc (lambda (x) (apply #'set-whitespace-line-column x))
lis))
;; srfi-1:remove
(defun srfi-1:remove (pred xs)
(loop for x in xs
unless (funcall pred x)
collect x))
0389名無しさん@お腹いっぱい。
2012/10/16(火) 05:31:17.16ありがとうございました。
ところで、変数に関しては lexical-let を使えばいいとして、関数内関数はどうすればいいんでしょう。
(defun f (&rest args)
(defun aux (lis)
...)
(aux args))
(defun g (x y)
(defun aux (x y)
(... (mapcar #'f '(...))))
(aux x y))
とかやって意味不明なエラーを前に数時間を無駄にしたよ…
f-aux, g-auxとかするというのはナシで。
http://lists.gnu.org/archive/html/help-gnu-emacs/2010-12/msg00269.html
(let ((fac (lambda (x) (if (zerop x) 1 (* x (funcall fac (1- x)))))))
(funcall fac 10))
これはちょっときもちわるい。あんまりdynamic bindingに依存したくない。
0390名無しさん@お腹いっぱい。
2012/10/16(火) 05:36:35.12(defun set-whitespace-line-column (mode column)
(let ((hook (intern (concat (symbol-name mode) "-hook"))))
(add-hook hook
(lexical-let ((column column))
(lambda ()
(if column
(setq whitespace-line-column column)
(setq whitespace-style
(srfi-1:remove (lambda (x) (eq 'lines-tail x))
whitespace-style))))))))
0391名無しさん@お腹いっぱい。
2012/10/16(火) 09:03:47.02cl だけど。
■ このスレッドは過去ログ倉庫に格納されています