Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Windowsのターミナル・ファイラー・エディタの連携

$
0
0

背景

開発をするときに必要な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"

Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>