#問題
普段はGUIで用事を済ませていて、ときどき端末を使う人向け。(Windows/Mac)
Explorer や Finder の右クリックで端末とか GVim を開けるようにしたい。
ファイルを開くのではなくて、いまマウスでつかんでいる、そのディレクトリでアプリケーションを立ち上げたい。つまり、
- Terminal.app を起動して
cd
と打ってフォルダをドラッグ&ドロップ
とかしたくない。 - gvim.exe を起動して
:cd
と打ってパスをコピー&ペースト
とか・・・。 - いまそのディレクトリを見ているのに、なんでまたパスを指定しなければならんのよ・・・察して移動してくれよ。
という話。よくある話だけど自分でやってみる。ちなみに GVim を立ち上げたいのは、ファイル名変更ツールとして renamer.vim がOS関係なく使えて便利なため。
参考: ファイル名変更にVimの編集力を使う(renamer.vim)
#Windows の場合
レジストリを編集するため .reg ファイルを作る。
下記は、cmd.exe、msys2 の mintty.exe で tcsh を使う例。(msys2 便利ですね)
パスは適宜変更のこと。メニューの中で目立つように★とか■をつけた。
Windows Registry Editor Version 5.00
; vim:fileencoding=utf-16le:ff=dos
; ファイルエンコーディングは UTF-16LE
; cmd.exe
[HKEY_CLASSES_ROOT\Directory\Background\shell\open_cmd]
@="● cmd here"
[HKEY_CLASSES_ROOT\Directory\Background\shell\open_cmd\command]
@="C:\\WINDOWS\\system32\\cmd.exe"
[HKEY_CLASSES_ROOT\Folder\shell\open_cmd]
@="● cmd here"
[HKEY_CLASSES_ROOT\Folder\shell\open_cmd\command]
@="C:\\WINDOWS\\system32\\cmd.exe"
; 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 では何もないところかフォルダをつかむ必要があり、ファイルをつかんだときはメニューにでてこない。若干挙動が違うけど、動くからこれで良し。