秀丸仲間を増やしたい

# 秀丸仲間を増やしたい

## 概要
### 秀丸を使っているとなぜか小馬鹿にされている気がする現状
なんとなくなのですが、昨今秀丸を使っているとなんかディスられている気がする今日この頃、、、例えば

* 秀丸なんか使ってるの？
* ○○使えばいいじゃん

などなど…

そういう事言ってくる人に限って、秀丸なら一瞬で出来る作業に時間と労力を掛けながら別エディタで非効率にやってるのを見掛たりするし…

## 結論
個々に好きなエディタを使えばいいじゃん。
（IDEとして使ってる訳じゃないんだし。。。）

### **以上 ！！**


と、これだけで終わるのも、あれなので秀丸使ってて便利だと思う機能を紹介します。



## 秀丸の好きな所
ITのお仕事をしていると、プログラミングや設計、テストとは別に、以外と**テキストファイルを触る機会**が多かったりします。テキストファイルの解析だったり、上記作業をする際の効率化だったり

そんな時にプログラム作っちゃう程じゃないけど、手でやるのはなぁって時、秀丸さんは結構頑張ってくれます。

特に便利な機能は以下
* **キーマクロ**　…　繰り返し作業をやる時に超便利
* **マクロ**　…　簡単に作れるし、作っちゃえば後は楽だし
* **正規表現**　…　検索、置換、grep時に超便利

今回は上記3点について、簡単な紹介をしてみます。
　
 　
 
 　
  
  
うん○○エディタでも出来るのは知ってる。
今回は秀丸のお話

## Tips

### キーマクロ
秀丸は比較的簡単に、キー操作を記録しそれを再生する事が出来ます。

```
Shift + F1   ・・・　記録の開始（もう1回押すと記録の終了）
Shift + F2   ・・・　記録の再生（押し続ける限りいつまでも）
```
たったこれだけです。

### キーマクロ実践
例えば、以下のような定型的なファイルから、ホスト名とメモリ容量をExcelにまとめるタスクがあったとします。

```
hostname: host1
cpu: Core i5
memory: 8GB

hostname: host2
cpu: Core i7
memory: 16GB

hostname: host3
cpu: Core i3
memory: 4GB

hostname: host4
cpu: Core i5
memory: 16GB

以後ずらずらと同じ記述が続く
```

こんな時、正規表現使っても置換だとちょっと面倒臭そうです。
そこでキーマクロ

以下の手順で操作を記録します。

```
1. まず先頭行の行頭にカーソルを移動して記録開始（Shift+F1）
2. ctrl+→
3. shift+Home
4. delete
5. ↓
6. Shift+↓
7. delete
8. BackSpace
9. Tab
10. Shift+→　×　8回
11. delete
12. End
13. delete
14. ↓
15. Home して記録終了(Shift+F1)

後はShift+F2を押して記録を再生
（大体押しっぱにして最後の方でctrl+zで微調整するんですがね）

補足手順2～3はShift+→　×　10回でも良いです、それぞれ好きな方法でやってください
```

Shift+F2を押しっぱにすると秀丸が頑張ってくれて**一瞬でこんな結果を作れます。**（押し続けるのが苦労な位データが大量にあったら後述する手順でマクロ化して下さい）

```
host1	8GB
host2	16GB
host3	4GB
host4	16GB

以後ずらずら
```

後は結果をExcelにコピるだけ、楽ちんですね


### マクロ
上の方で記録したキー操作を保存するとマクロファイルが作れます。後は作成されたマクロファイルをちょこちょこっとカスタマイズできます。

```
記録の終了⇒メニューバーのマクロ＞キー操作の保存
```
で好きなファイル名を指定して保存します。
その後保存したファイルをカスタマイズ出来ます。（最初はヘルプとかを見ながら慣れましょう）

いつでも実行できるように、キーにマクロを割り当てる事も出来ます。

```
メニューバーのマクロ＞マクロの登録
マクロ1～マクロ10に好きな名前を付けて、割り当てたいマクロファイルを選択します。
```
そうすると、Ctrl+n（登録した場所の数値）を押すたびに、登録したマクロが実行されます。
　
 　
例えば、置換とかもマクロで書く事が出来ます。

```
replacedown "aiue" , "a i u e" ;
aiue を a i u e に置換
```

### ちょっと込み入った正規表現
多少独自のお作法がありますけど、正規表現は普通に使えます。(細かくは割愛。)
今回は「\f」について説明します。

以下のようなログから、誰が何のテーブルから、どのデータを消したか、Excelにまとめるというタスクがあった時、手でやってたら大変です。

```
2015/12/09 00:00:00  debug aaaテーブルのID:a0001をユーザxxxxxが削除しました。
2015/12/10 00:00:00  debug bbbテーブルのID:b0001をユーザyyyyが削除しました。
2015/12/11 00:00:00  debug cccテーブルのID:c0001をユーザzzzが削除しました。
2015/12/12 00:00:00  debug ddddテーブルのID:d0001をユーザqqqが削除しました。
2015/12/13 00:00:00  debug eeeテーブルのID:e0001をユーザoooが削除しました。
2015/12/14 00:00:00  debug aaaテーブルのID:a0001をユーザsssが削除しました。
2015/12/15 00:00:00  debug aaaテーブルのID:a0001をユーザzzzが削除しました。
2015/12/16 00:00:00  debug cccテーブルのID:c0001をユーザooooooが削除しました。
2015/12/17 00:00:00  debug cccテーブルのID:c0001をユーザzzzが削除しました。
2015/12/18 00:00:00  debug hhhhテーブルのID:h0001をユーザyyyyが削除しました。
```

そんな時、正規表現の置換で何とかなります。

秀丸で置換ダイアログ出して、以下のルールで置換します。

```
置換前：^.*debug \f.*\fテーブルのID:\f.*\fをユーザ\f.*\fが削除.*
置換後：\5\t\1\t\3
```

すると以下のようなタブ区切りの結果が得られます。

```
誰が        テーブル    どのデータ
xxxxx	  aaa		a0001
yyyy	  bbb		b0001
zzz	      ccc		c0001
qqq		  dddd	    d0001
ooo		  eee		e0001
sss		  aaa		a0001
zzz		  aaa		a0001
oooooo	  ccc		c0001
zzz	      ccc		c0001
yyyy	  hhhh	    h0001

(見やすいようにスペースで微調整していますが、本来はタブ区切りです)
```
後はExcelに張り付けるだけ、調査量が多い時でも一瞬で終わります。
楽ですね

###解説
**\fは正規表現における、文字の区切りみたいなもの**です。

```
^.*debug \f.*\fテーブルのID:\f.*\fをユーザ\f.*\fが削除.*
```

とした場合、先頭から「debug 」までを一区切り
そこから「テーブルのID:」までを一区切り　みたいな感じで指定できます。

そしてその区切りは、置換後に何番目の区切りか？を指定すれば区切られた文字で置換する事が出来ます。
※ちなみに何番目の区切りか？は秀丸の場合０から始まります。

```
\5\t\1\t\3
```

今回は
6個目の\fと5個目の\fの間の文字
次に\t(タブ)
次に2個目の\fと1個目の\fの間の文字
・・・
と文字を繋げて置換した訳です。

これ覚えておくと色々出来るんです。素敵ですね