emacs#7 〜置換と矩形処理〜

エディタはほぼ毎日使っていますが、講習は久しぶりのemacsです。

今回は、前回までに学び損ねた置換方法と矩形処理について学びました。

置換方法
置換は下記の方法で実行することができます。

  1. M-% で置換開始
  2. 置換したい文字列を入力
  3. 置換後の文字列を入力

これで準備は完璧です。

置換したい文字列がある場所の色がかわるので、以下のキーを押すとそれぞれの方法で置換されます。

  • SPCキー ・・・ 置換して次の置換できる文字列にいく
  • DELキー ・・・ 置換しないで次の置換できる文字列にいく
  • RETキー ・・・ 置換しないで置換処理終了
  • !キー  ・・・ 置換できる文字列を全部置換する

例をあげると、
「にわにはにわにわとりがいる」という文字列の中で、「にわ」という文字を「ディノ」に変えたいと思ったとき、上で書いた準備をすると、
にわにはにわにわとりがいる」と、いうような感じに、太字の部分が色違いになります。
そこでRETキーを押すと、何も変わらず処置を終了します。
!キーを押すと「ディノにはディノディノとりがいる」というように置換できる文字列全てが置換されます。
!キーを押さずにSPCキーを押すと、
「ディノにはにわにわとりがいる」といった感じになり、次の「にわ」を置換するかどうか聞かれます。
ここでDELキーを押すと、
「ディノにはにわにわとりがいる」となり、残りの太字の「にわ」を置換するかきかれます。

この置換の処理で注意しなければならないのは、コマンドを入力するときカーソルは置換したい文字列より上に置おくか、置換したい範囲を選択しなければならないということです。
目でみて置換できる文字列があるのに、そんな文字列はありませんと怒られたり、置換が始まる場所がおかしかったりした場合、カーソルの位置を確かめてみるといいと思います。

矩形処理
矩形処理とは、四角で囲われた範囲を操作するもののことです。
コマンドとしては、

  • C−x r k ・・・ 矩形でカット
  • C−x r y ・・・ 矩形でペースト
  • C−x r t ・・・ 矩形で文字列挿入

があります。
それぞれ、C−spc で範囲を選択したあとにコマンドを入力し、その範囲内のみに反映されます。
たとえば、

あああ
いいいいい
ううううう
えええええ
おおおお

という文字列があったとして、3列でいいじゃん。と思った場合、上の太字の「あ」から太字の「お」までを範囲選択してあげます。
その後にC−x r k と入力してあげると、

あああ
いいい
ううう
えええ
おおお

という結果になります。
やっぱり5列がいいよとなった場合、一番右の「あ」の次にカーソルをもってきて、C-x r yと入力すると、

あああああ
いいいいい
ううううう
えええええ
おおおおお

という結果なります。ちなみに一番右の「い」の次にカーソルをもってきてさっきのコマンドを実行すると、

ああ
いいあああ
うういいい
ええううう
おおえええ
  おおお

となったりします。
また、各行の先頭に「あ行:」という文字列をつけたしたい場合、左の「あ」の手前から左の「お」の手前までを範囲選択して、C−x r t と入力したあと「あ行」と入力してあげると、

あ行:あああああ
あ行:いいいいい
あ行:ううううう
あ行:えええええ
あ行:おおおおお

というように、行に一気に文字列を挿入することができます。

今日のお題
今回やった問題は下にある数列をemacsの機能を駆使して2次元配列を表すようなPHPの代入文を作る。というものだったのですが、
置換を学ぶ前にといてみたら、大変な作業になってしまいました;
なので、置換機能はとても便利だなと感じました。・問題の数列

08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48

—-
(2008/05/22 18:12 hirafuji追記)
動画をどうじょ〜!

1 件のコメント so far »

  1. by スタートアップ研修記 » emacs キーボードマクロの使い方, on 05.23.08 @ 6:30 PM

     

    [...] このように規則性もあまりないような文字列を一個一個入力していては膨大に時間がかかってしまいます。 前回学習した置換処理を使って無理矢理やっていく・・という方法もあるのですが、それも効率的とはいえません。 そんな時にどうするかという事で、今回はキーボードマクロを使ってやっていきました。 [...]

Comment RSS · TrackBack URI

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree