Explzhを使ってダブルクリックで解凍→元ファイル削除したい
昨年iMacが逝って以来、以前メインで使っていたWindowsマシンを使っている訳なんだけど、圧縮ファイルをダウンロードするたびに右クリックして即時解凍、元ファイルは手動で削除、みたいな超めんどくさい作業を強いられてました。
iMac使ってた頃の環境では圧縮ファイルをダブルクリックすると解凍して元ファイルを削除してくれるのが普通になってたから、Windowsでも同じ環境にしたいと思い立ったんだけど、僕のお気に入りの圧縮・解凍ソフトであるExplzhだと元ファイルを削除する設定を解凍のたびに選択しないとダメみたいな感じで無理っぽい。 Lhaplusだと簡単にできるんだけど、RARファイルも解凍したいのでExplzhで実現したいところ。
というわけで、VBの出番。
必要なもの
ソースコード
Option Explicit Dim i Dim argv Dim ws Dim query Dim archiver Dim recycler archiver = """C:\Program Files\Explzh\EXPLZH.EXE"" /e" recycler = """GB.exe""" Set argv = WScript.Arguments Set ws = CreateObject("Wscript.Shell") For i = 0 To argv.Count-1 query = "cmd /c """ & archiver & " """ & argv(i) & """""" ws.run query,0,true query = "cmd /c """ & recycler & " """ & argv(i) & """""" ws.run query,0,true Next
解説と
バッチで書くと実行時にDOS窓が出てしまうのでVBを選択しました。 Explzhの/eオプションで解凍、解凍が終わるのを待ってGB.exeを使ってゴミ箱に元ファイルを捨てるようにしてます。やたらとダブルクォーテーションが多くて黒魔術みたいになってるのはご愛嬌。
使い方
上記のソースコード(ExplzhやGB.exeのファイルパスが違う場合は要変更)を拡張子.vbs
で保存して、MakeExeなどのソフトでEXEファイル形式に変換して適当な場所に配置し、ZIPなどの圧縮ファイルにアプリケーションの関連付けをしてやります。あとはダブルクリックするだけで解凍→元ファイル削除されるように!
nvALTというMarkdownエディタが良い
LightPaper を使ってたんだけど、コード補完がおかしくて邪魔でしかなかったり保存がめんどかったりして嫌気が差してきたのでもっと良いのあるかもしれないと探してみたら、nvALT というMarkdownエディタを見つけて使ってみたら良かったので紹介する。
優れてる点
とりあえず優れてると思う点をあげるとこんな感じに。
- MultiMarkdownに対応してる
- プレビューにMarkedを使用できる
- プレビュー用のHTML/CSSをカスタマイズできる
- コード補完のON/OFFを切り替えできる
- 記事作成から保存までの動作のアクションが一瞬
- 書いた記事の管理ができる
- オープンソース
MultiMarkdownに対応してる
アンカーリンクを使いたい人なので最優先事項でした。
MarkdownExtraにも対応してたらclassもMarkdown記法で楽に記述できるから良かったんだけどこの際仕方ない。 最悪、オープンソースだからMarkdownパーサーいじればいいし。
プレビューにMarkedを使用できる
デフォルトのプレビューと Marked を使い分けれる。 ていうか Marked 2 なんて出てたんだ。
Marked使う人ならMarked側でMarkdownパーサーの変更ができるみたいなので前述の問題も楽に解決できるかも?
プレビュー用のHTML/CSSをカスタマイズできる
MarsEditみたくブログに合わせたデザインとかにしてもいいかも。
コード補完のON/OFFを切り替えできる
日本人の僕らはコード補完がバグらないかとビクビクしながら生きているのでコード補完のON/OFFが切り替えできるとすごくありがたい。
記事作成から保存までの動作のアクションが一瞬
タイトルを入力してEnterするだけで記事作成・保存されます。 手軽に記事を書き始められるでとても良い感じ。原稿の自動保存もされるし。
書いた記事の管理ができる
記事の検索機能とタグ機能がある。
オープンソース
オープンソースなので気に入らないところがあったらいじれるしコードが公開されてるっていう安心感がある。
セットアップ
インストールしたら設定。 保存形式がデフォルトだとデータベース形式で他アプリへの移行が難しくなりそうなのであらかじめプレーンテキスト形式で保存するようにしておく。 僕の場合は拡張子をmdにしておきたかったのでこんな感じの設定にした。
あと日本語使う人は
Editing -> Links -> Make URLs clickable links
のチェックは消したほうがいいかも。
Marked を使う人はさらに設定が必要なので
を参考に設定するといい。
HTMLも楽に入力したい
Markdownで書ききれないところをHTMLで書かないといけない状況ってかなりあると思うんだけど、なぜかMarkdownエディターでEmmetとかZen-Codingに対応してるものがほとんどない不思議。 そして例にもれなくnvALTにも標準で搭載されていないので、 [MarsEdit] Zen Coding で高速 HTML コーディング!を参考にしながらWorkflowを作った。やはり動作は少し遅いけど我慢するしかない…。
ショートカットキーには
Command + 数字
あたりを推奨する。反応してくれないキーが結構あるので注意が必要。Ctrlとか。
いい感じに改行を行いたい
色々調べた結果、
こんな感じになった。
まず、
body { word-wrap: break-word; }
これはURLとかの長い半角文字列が改行されずに親要素の横幅をこえてしまうのを防ぐためにする設定。
次の
pre { overflow: auto; white-space: pre-wrap; word-wrap: break-word; word-break: break-all; }
これは<pre>
の中の改行を良い感じにする設定。
どうもword-break: break-all
しないと親要素の横幅を超える場合があるので推奨。
code, kbd, abbr, var, samp { &::before, &::after { content: "\0020"; font-size: 0; } }
これはcode要素の直前・直後で自動折り返しを発動させるのそっくりそのまま。ただし、これらのインライン要素にdisplay: inline-block
を指定した場合に内側下部分にわずかな空白が生まれる場合があるので、その場合には擬似要素にもdisplay: inline-block
を指定する。
table { word-break: break-all; }
最後のこれはテーブル内で改行がされずにテーブルの横幅が広がってしまうのを防ぐための設定。
table-layout: fixed
でも改行直せるけど色々と影響が出てしまうのでこちらのほうが良いと判断した。
SassのKeywords Arguments
SassにKeywords Argumentsなんていうのがあるのを知った。
これがとても便利で例えば、
@mixin test($a: true, $b: true, $c: true) { @if $a { // ... } @if $b { // ... } @if $c { // ... } }
こんなmixinがあったとして、
「$cだけfalseにしたい」
なんていうときに、
@include test($c: false);
なんていう風に$cだけ値を指定できるみたい。