背景
開発をするときに必要な3種の神器(ターミナル・ファイラー・エディタ)についての考察はエンジニアなら誰でも行ったことがあると思う。
最近のエディタではそれだけでターミナルやファイラーの機能もあり、一つで完結するようになっているが、私はそうは思っていない。
ターミナルはターミナルに、ファイラーはファイラーに、エディタはエディタにそれぞれ特化した機能があり、一つにまとめてしまうとそれらが切り落とされることが多い。
そこでそれぞれに専用ソフトを使うのだが、それには各ソフトの連携が不可欠である。
どのソフトを使うのか
ファイラー:エクスプローラ
エディタ:gVim
ターミナル:ConEmu & powershell
選定理由を書くと長くなるのでここでは考察しない
どんな連携が必要か
1.ターミナルで開いているディレクトリをファイラーで開く
2.ターミナルで開いているディレクトリ内のファイルをエディタで開く
3.ファイラーで開いたフォルダをターミナルで開く(管理者権限でも開ける)
4.ファイラーで開いているフォルダ、もしくはその中のファイルをエディタで開く
上記4つの連携をスムーズにできることが開発をする上では必要条件となる
ターミナルからの連携
ターミナルからの連携は難しくない。
ディレクトリをファイラーで開く場合は
ii .
ファイルをエディタで開く場合は
gvim [ファイル名]
これだけでOK。ただし、gvimにはPathを通す必要がある。
また、gvimを複数起動したくない場合は
gvim --remote [ファイル名]
とすれば、すでに開いているgVimで開いてくれる。
--remoteを毎回打つのがつらい人は$profileに
function gvimr($arg){gvim --remote-silent $arg}
を追加すればgvimrコマンドで開くことができる。
ファイラーからの連携
ファイラーからの連携は右クリックのコンテキストメニューを利用する。
コンテキストメニューはレジストリを追加することでカスタマイズできる。
※レジストリの変更は実行は自己責任でお願いします。
下記スクリプトをUTF8BOM付で保存し実行すればコンテキストメニューに追加される
$vimpath=(get-command gvim).source
if($vimpath -eq $null){write-host"gvimにpathが通ってないよ?"return}$conemupath=(get-command conemu64).source
if($vimpath -eq $null){write-host"conemu64にpathが通ってないよ?"return}function SetRegistry($binpath,$regpath,$contextValue,$argString){$command="`"" + $binpath + "`"" + $argStringNew-Item$regpathNew-ItemProperty$regpath -name "(default)" -value $contextValueNew-ItemProperty$regpath -name "Icon" -value $binpath$regpath=$regpath +"\command"New-Item$regpathNew-ItemProperty$regpath -name "(default)" -value ("`"" + $binpath+ "`"" + $argString)}$binpath=$vimpath$regpath="Registry::HKEY_CLASSES_ROOT\Directory\Background\shell\gvim"$contextValue="gvimで開く"$argString=" `"--remote-silent`"`"%v.`""
SetRegistry $binpath$regpath$contextValue$argString$regpath="Registry::HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\gvim"$argString=" `"--remote-silent`"`"%v`""
SetRegistry $binpath$regpath$contextValue$argString$binpath=$conemupath$regpath="Registry::HKEY_CLASSES_ROOT\Directory\Background\shell\ConEmu"$contextValue="ConEmuで開く"$argString=" `"-single`"`"-dir`"`"%v.`""
SetRegistry $binpath$regpath$contextValue$argString$regpath="Registry::HKEY_CLASSES_ROOT\Directory\Background\shell\ConEmuRunas"$contextValue="管理者としてConEmuで開く"$argString=" `"-cmd`"`"powershell.exe`"`"-noexit`"`"-command`"`"Set-Location`"`"-literalPath`"`"%v`"`"-new_console:a`""
SetRegistry $binpath$regpath$contextValue$argString
ファイルを右クリック→gvimで開く
フォルダ内の何もないところを右クリック→gvimで開く(gvim内でnetrwが開かれる)
フォルダ内の何もないところを右クリック→ConEmuを開く
フォルダ内の何もないところを右クリック→管理者としてConEmuを開く
上記4つが追加される。ただしgvim,ConEmuはPathを通す必要がある。
ちなみにレジストリを削除するときは下記スクリプトで行う
remove-Item -Recurse "Registry::HKEY_CLASSES_ROOT\Directory\Background\shell\gvim"remove-Item -Recurse "Registry::HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\gvim"remove-Item -Recurse "Registry::HKEY_CLASSES_ROOT\Directory\Background\shell\ConEmu"remove-Item -Recurse "Registry::HKEY_CLASSES_ROOT\Directory\Background\shell\ConEmuRunas"