問題
普段はGUIで用事を済ませていて、ときどき端末を使う人向け。(Windows/Mac)
Explorer や Finder の右クリックで端末とか GVim を開けるようにしたい。
ファイルを開くのではなくて、いまマウスでつかんでいる、そのディレクトリでアプリケーションを立ち上げたい。つまり、
- Terminal.app を起動して
cd
と打ってフォルダをドラッグ&ドロップ
とかしたくない。 - gvim.exe を起動して
:cd
と打ってパスをコピー&ペースト
とか・・・。 - いまそのディレクトリを見ているのに、なんでまたパスを指定しなければならんのよ・・・察して移動してくれよ。
という話。よくある話だけど自分でやってみる。ちなみに GVim を立ち上げたいのは、ファイル名変更ツールとして renamer.vim がOS関係なく使えて便利なため。
参考: ファイル名変更にVimの編集力を使う(renamer.vim)
Windows の場合
レジストリを編集するため .reg ファイルを作る。
下記は、msys2 の mintty.exe で tcsh を使う例。(msys2 便利ですね)
パスは適宜変更のこと。メニューの中で目立つように★とか■をつけた。
Windows Registry Editor Version 5.00
; vim:fileencoding=utf-16le:ff=dos; ファイルエンコーディングは UTF-16LE; msys2 terminal[HKEY_CLASSES_ROOT\Directory\Background\shell\open_msys2]@="■tcsh here"[HKEY_CLASSES_ROOT\Directory\Background\shell\open_msys2\command]@="c:\\msys64\\usr\\bin\\mintty.exe /bin/tcsh"[HKEY_CLASSES_ROOT\Folder\shell\open_msys2]@="■tcsh here"[HKEY_CLASSES_ROOT\Folder\shell\open_msys2\command]@="c:\\msys64\\usr\\bin\\mintty.exe /bin/tcsh"; gvim[HKEY_CLASSES_ROOT\Directory\Background\shell\open_gvim]@="★gvim here"[HKEY_CLASSES_ROOT\Directory\Background\shell\open_gvim\command]@="c:\\Apps\\Vim\\gvim.exe"[HKEY_CLASSES_ROOT\Folder\shell\open_gvim]@="★gvim here"[HKEY_CLASSES_ROOT\Folder\shell\open_gvim\command]@="c:\\Apps\\Vim\\gvim.exe"
保存して実行すると、Explorer の右クリックメニューに出てくる。
Mac の場合
Automator > 「新規」 > 「サービス」でワークフローを新規作成し、
下記のように「シェルスクリプトを実行」だけ含んだサービスを作る。
open -a Terminal `dirname "$1"`
シェルの設定は /bin/bash にしておいた。/bin/tcsh だと日本語を含むパスでエラーになったため。(これは Terminal.app で実行されるシェルとは無関係)
ワークフローを保存すると、保存するとき付けた名前が Finder の右クリックに現れる。
.workflow ファイル自体は ~/Library/Services/
に保存されているので、メニューを消したい時はファイルを削除する。
MacVim.app 起動の場合は、
cd`dirname "$1"`
/Applications/MacVim.app/Contents/MacOS/Vim -g
Terminal.app も MacVim も既存のサービスがあるから、自分で作る意味はあまりないが、自分で作れるということに意味がある、ということにしよう。
その他
Mac だと何もないところをクリックしてもメニューに現れないのでファイルかフォルダをつかむ必要がある。逆に Windows では何もないところかフォルダをつかむ必要があり、ファイルをつかんだときはメニューにでてこない。若干挙動が違うけど、動くからこれで良し。