LoginSignup
5
6

More than 5 years have passed since last update.

Explorer/Finder の右クリックで、その場所で、端末や GVim を開く

Last updated at Posted at 2017-04-08

問題

普段はGUIで用事を済ませていて、ときどき端末を使う人向け。(Windows/Mac)

Explorer や Finder の右クリックで端末とか GVim を開けるようにしたい。
ファイルを開くのではなくて、いまマウスでつかんでいる、そのディレクトリでアプリケーションを立ち上げたい。つまり、

  • Terminal.app を起動して cd と打って フォルダをドラッグ&ドロップ とかしたくない。
  • gvim.exe を起動して :cd と打って パスをコピー&ペースト とか・・・。
  • いまそのディレクトリを見ているのに、なんでまたパスを指定しなければならんのよ・・・察して移動してくれよ。

という話。よくある話だけど自分でやってみる。ちなみに GVim を立ち上げたいのは、ファイル名変更ツールとして renamer.vim がOS関係なく使えて便利なため。
参考: ファイル名変更にVimの編集力を使う(renamer.vim)

scr7.png

Windows の場合

レジストリを編集するため .reg ファイルを作る。
下記は、cmd.exe、msys2 の mintty.exe で tcsh を使う例。(msys2 便利ですね)
パスは適宜変更のこと。メニューの中で目立つように★とか■をつけた。

context_menu.reg
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"`

scr2.png
シェルの設定は /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 では何もないところかフォルダをつかむ必要があり、ファイルをつかんだときはメニューにでてこない。若干挙動が違うけど、動くからこれで良し。

参考

MSYS2 "Open Here" registry settings

Finderで選択したフォルダをiTermで開く

5
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6