記事一覧はこちら

秀丸ファイラーのオレオレ設定といくつかのスクリプト

imgTemp-2015-08-01-19-41-44imgTemp-2015-08-01-19-42-59 Ctrlを押しながら・・・ A:ファイルを全て選択 のコマンド B:新規テキストファイル のコマンド C:ファイルをコピー のコマンド D:新しいフォルダ のコマンド E:テキストエディタで開く コマンド F:検索枠 のコマンド G:grepの実行 コマンド H:履歴枠 のコマンド I:ブックマーク枠 のコマンド J:全てのカラムをコピー のマクロ K:ファイル検索ソフトEverythingで検索 のマクロ L:アドレスバーにフォーカス のコマンド M:コンソールを開く のマクロ N:新規ウィンドウ のコマンド O:未定 P:選択中のファイルのフルパスをコピー。shift+ctrl同時押しでフルパスをダブルクオートで囲ってコピー のマクロ Q:詳細 のコマンド。ファイル一覧を詳細表示にする R:7-zipファイルマネージャで開く のマクロ S:縮小版 のコマンド。ファイル一覧を縮小表示にする T:新しいタブ のコマンド U:新しいtempディレクトリを作る のマクロ V:ファイルをペースト のコマンド W:タブを閉じる(最後の1つ除く) のコマンド X:ファイル切り取り のコマンド Y:フォルダ配下的にロック のコマンド Z:元に戻す のコマンド Enter:選択中のファイルを選択した状態で新しいタブを開く のマクロ。検索結果からその実ファイルに飛ぶ機能

ではマクロについて

J:全てのカラムをコピー のマクロ

こんな感じで選択中のファイルの詳細カラムをコピーする。tsvだけどタブじゃなくしたりとかどうでも出来るな imgTemp-2015-08-01-19-59-32

// 全てのカラムを追加
var s="";
var cItem=GetItemCount();
var cCol=GetColumnCount();
//ヘッダーコピー
for(iCol=0;iCol<cCol;iCol++){
  s=s+GetColumnText(iCol);
  if(iCol<cCol-1)s=s+"\t";
}
s=s+"\r\n";
//それぞれのアイテムコピー
if(GetSelectedCount()==0){
 //1つもファイルを選択していない=全てコピー
 for(iItem=0;iItem<cItem;iItem++){
   for(iCol=0;iCol<cCol;iCol++){
     s=s+GetItemText(iItem,iCol);
     if(iCol<cCol-1)s=s+"\t";
   }
   s=s+"\r\n";
 }
}else{
 //1つ以上のファイルを選択しているので、それだけをコピー
 index=-1;
 while(true){
   index=GetNextItem(index,0x02);
   if(index==-1){break;}
   for(iCol=0;iCol<cCol;iCol++){
     s=s+GetItemText(index,iCol);
     if(iCol<cCol-1)s=s+"\t";
   }
   s=s+"\r\n";
 }
}
SetClipboard(s);

K:ファイル検索ソフトEverythingで検索 のマクロ

Everythingという世界一速いファイル検索ソフトを開く。当然パスは各自変える必要あり。 パラメーターもいくらでも変えられる

var wsh = new ActiveXObject("WScript.Shell");
wsh.exec("\"C:\\Everything.exe\" -noregex -filename \""+GetDirectory()+"\"");

M:コンソールを開く のマクロ

そこそこ使いやすいコンソールアプリを開く imgTemp-2015-08-01-20-04-42

P:選択中のファイルのフルパスをコピー のマクロ

フルパスにダブルクオートを含めるべきかべからずか決行悩んだけど、両方の場合があるから両方出来るようにした。最初はマクロの中でshiftキーを押しているか判定していたけど、意識してshift押しっぱなしにしないといけなくて別ファイルにした。doubleQuoteの所を空文字にすればよし。シングルクオートもOKだね。 ファイルが一つでも選択状態の時はそのファイルをコピー、ファイルが選択されていない時はディレクトリ名をコピー。 選択≠フォーカス。選択状態とフォーカス状態は違う。選択は複数同時に出来るが、フォーカスは一つだけ たぶん。

doubleQuote="\"";
if(GetSelectedCount()==0){
  SetClipboard(doubleQuote+GetDirectory()+doubleQuote);
  EndMacro();
}else{
  var index=-1;
  var s="";
  while(true){
    index=GetNextItem(index,0x02);
    if(index==-1){break;}
    if(s!=""){s+="\r\n";}
    s+=doubleQuote+GetItemPath(index)+doubleQuote;
  }
  SetClipboard(s);
}

R:7-zipファイルマネージャで開く のマクロ

7-Zipというくっそ使いにくいアーカイブソフトを開く。拡張子限定してないからexeとかapkとかなんちゃってアーカイブもばっちりよ。ただソフトはくっそ使いにくいから別の探したい。しかし7-Zipアーカイブのフル機能が使えるからまあそれはそれでしょうがないのかもね。 imgTemp-2015-08-01-20-09-58

U:新しいtempディレクトリを作る のマクロ

簡単に空のtempフォルダを作ってオープン。フルパスの文字数は可能な限り短く。replaceする文字を変えればいくらでも変更可。 ヒマな時にポチポチ消す。6GBってのはtsの実験をしてる時のフォルダでした。消しとこ imgTemp-2015-08-01-20-15-44

objFSO = new ActiveXObject("Scripting.FileSystemObject");
directoryPath = objFSO.GetSpecialFolder(2)+"\\"+getDateStr();
try{
    objFSO.CreateFolder(directoryPath);
}catch(e){}
Open(directoryPath,2,0);
objFSO = null;
function getDateStr(){
    var myTbl=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
    var myD=new Date(),map={},path;
    map.Y=myD.getFullYear();
    map.m=("000"+(myD.getMonth() + 1)).slice(-2);
    map.d=("000"+(myD.getDate())).slice(-2);
    map.D=myTbl[myD.getDay()];
    map.H=("000"+(myD.getHours())).slice(-2);
    map.i=("000"+(myD.getMinutes())).slice(-2);
    map.s=("000"+(myD.getSeconds())).slice(-2);
    map.u=("000"+(myD.getMilliseconds())).slice(-3);
    path = "tmp_"+"YmdDHis".replace(/([YmdDHisu])/g,function(a,b){return map[b];});
    return path;
}

Enter:選択中のファイルを選択した状態で新しいタブを開く のマクロ

ちょっと秀丸ファイラー側にバグがあるっぽくてopenを2回コール。仕様とはちょっと思えないんだよな~。検索結果タブでは右クリックメニューに「ファイルのあるフォルダを開く」が追加されるけど、検索結果タブでしか使えないのが気に入らなかった。

if(GetSelectedCount()==0){
  EndMacro();
}else{
 index=GetNextItem(-1,0x02);
 if(index==-1){
   EndMacro();
 }
 path=GetItemPath(index);
 open(path,1)
 open(path)
}

だいたいこんな感じ。はー買ってよかった。どんどん機能追加をして欲しいけど、クラシックって名前だからそういうもんでもないんだよな~ 「バイナリエディタで開く」が欲しいんだけど、そもそもいいバイナリエディタが無い。しかもファイル名が長かったりすると開けませんって言うし。 Stirlingを一応入れてるんだけど、これUTF-8対応してないのが致命的でつらい。 Stirlingにある、ウインドウのフッターに座標や値を16進数、10進数両方で表示する機能が他のソフトのどこにも無いのだ・・・ つらい。