Jetbrains の Intellij 製品に WSLを自分で追加する

開発界隈でちょっと肩身が狭いWindows

会社でPCを支給されるんですが、開発が全員 Mac だそうで、ただそれだとどう考えても今からMacに変更して技術を覚えるコストが人生と割に合わない。

そんなわけで駄々こねて Windows 10 を支給してもらってる。

今やWSLの選択肢がある中で、そもそも Mac にするメリットも個人的にはあまり思いつかないので個人的には強く推奨していきたいWindows 10。

iOS系アプリの開発する場合は別だけど、ことWeb開発においてはどっちでもイイレベル。

WLinux は Pengwin に名前が変わりました。

で、今回は WLinux が Pengwin に名称が行われた関係でWSLとして認識されなくなっているのを修正する。

下記のファイルを変更する。

C:\Users\ユーザー名\AppData\Roaming\JetBrains\使用中IDEバージョン\options\wsl.distributions.xml
(2020/09/16更新:パスを変更)

<descriptor>
  <id>PENGWIN</id>
  <microsoft-id>WLinux</microsoft-id>
  <executable-path>pengwin.exe</executable-path>
  <presentable-name>Pengwin</presentable-name>
</descriptor>

descriptorを追加するか、もはや使えないWLinuxを変更するかはお好みで。

おそらくIntelliJ(WebStorm, PhpStorm, Pycharm…)製品共通だろうと思われ。

参考
WSLを使ってリモートインタープリターを設定する

そして、VimFxへ……

さよなら、Vimperator…

Firefoxがe10sへの移行を始め、Firefox51になった途端にVimperatorがほぼ動作しなくなった…。
そんなわけで、とうとうVimperatorに見切りを付けVimFxへ移行。

何はともあれツリー型タブ

なにげに使っていたVimperatorのプラグイン「TreeStyleTab.js」。
何が出来るかっていうと、ツリーを開く・畳むがショートカットに割り当てられるようになる。

プラギン作者さんに感謝!

そんなわけで、下記のカスタムコマンドをconfig.jsへ追加すれば使用できるようになるはず。
処理自体はTreeStyleTab.jsほぼそのままで動作。

vimfx.addCommand({
    name: "tree_style_tab_expand",
    description: "ツリーを開く",
    category: "location",
}, ({vim}) => {
    const gBrowser = vim.window.gBrowser;
    if (gBrowser.treeStyleTab) {
        gBrowser.treeStyleTab.collapseExpandSubtree(gBrowser.selectedTab, false);
    } else {
        vim.notify("need TreeStyleTab");
    }
})

vimfx.addCommand({
    name: "tree_style_tab_collapse",
    description: "ツリーを畳む",
    category: "location",
}, ({vim}) => {
    const gBrowser = vim.window.gBrowser;
    if (gBrowser.treeStyleTab) {
        gBrowser.treeStyleTab.collapseExpandSubtree(gBrowser.selectedTab, true);
    } else {
        vim.notify("need TreeStyleTab");
    }
})

ショートカットは好きに設定すればいいと思うけど、以前からのだとこれでやってる。
開く → zo
畳む → zc

まだだ、まだ終わらんよ!

e10sになるとFirefoxもかなり軽くなるようだし、これでまだ10年は戦えるんじゃないかな。

Sublime text はプロジェクトを使う。

Twitter読んでると、プラグインがうまく動かないといった話がよくある。
そもそも Sublime Text はプロジェクトを設定することを前提として作られている。
もちろんプロジェクトがなくても動くけど、設定ファイルはプロジェクトフォルダ内から探す。みたいなプログラムがプラグインではよくされている。

ちょっとした開発でもプロジェクトをまず作りましょう。

Sublime Text 3 のPHP系プラグイン覚え書き

自分が使用しているSublime Text 3 の PHP向けのプラグインメモ。
随時追加していく予定。

Windows Application

Sublime Text とは関係ないけど、PHPerは使用できるようにしておいた方がいいと思われるアプリケーション。

Composer

PHP界隈では必須になりつつあるPEARに変わるライブラリ管理ツール。

  • インストール 公式サイト: Composer
  • 下記パスを環境変数に追加
    ※追加しないとcomposerでインストールしたものがパス無しで実行できない
%USERPROFILE%AppDataRoamingComposervendorbin

登録するコマンドは下記

composer config -g repositories.packagist composer http://packagist.jp

完了

Sublime Text 3 Plugins

SublimeLinter

SublimeLinter-phpcs

コマンドラインツールのPHP CodeSnifferを使用するとコーディング規約をチェックしてエラーを表示してくれる

  • コマンドラインツールのインストール
composer global require squizlabs/php_codesniffer=*

SublimeLinter-phpmd

コマンドラインツールのPHP Mess Detectorを使用するとプログラムで怪しいところをチェックしてエラーを表示してくれる

  • コマンドラインツールのインストール
composer global require phpmd/phpmd=*

ST3 日本語環境向けプラグイン SublimeCodic の紹介

SublimeCodic とは?

プログラミングで使用する日本語を技術者向けに英語へ翻訳してくれるサイトの翻訳APIをSublime Text 3で使用できるようにしたプラグインです。
github:SublimeCodic

この素晴らしいAPIを提供していただいているCodicのサービスは、公式サイトからも使用できます。
codic 公式サイト

このプラグインを作成はしたものの、すでにほぼ同一のCodicへのプラグインがPackage Controlへ公開されており、また公式でも公開しているので私が作成したプラグインの存在意義はかなり薄いです…。
私はもちろん使っていますが…。

それでも使ってみたいという奇特な方は、githubに登録方法などが記載してあります。
ぜひご活用ください。

今後の予定

現状は特に無さそう。
要望には対応できそうなら対応します。

ST3 日本語環境向けプラグイン ConvertFullHalfWidth の解説

ConvertFullHalfWidth とは?

Sublime Text 3 向けのカタカナ・アルファベット・数字を全角半角文字に変換するプラグインです。
github:SublimeConvertFullHalfWidth
※ 以前はConvertZenHanという名称で公開していましたが、同じような名前のプラグインがすでに公開されていたので変更しました。

なお、変換にはPyPIで公開されている jaconv を使用しています。

どうやってるの?

選択文字列とどの文字を変換対象にするかのフラグをプラグインのコマンドに渡し、フラグに従ってjacnonvに文字列を渡すだけ!

今後の追加予定

jaconvにはひらがな→カタカナ、カタカナ→ひらがなの変換もあるのでこの変換も出来るように実装予定。

/** 「もう仕事としてはガラケー特化のサイトなんて作らないよねー」っと思ってたらドンピシャでスマホサイトをガラケー向けに作り変えるお仕事来てプラグイン大勝利で震えたのはいい思い出。 */

以上。

ST3 日本語環境向けプラグイン MultibyteWordSeparators の解説

MultibyteWordSeparators とは?

Sublime Text 3 向けのマルチバイト文字列に対応した単語移動をサポートするパッケージです。
github:SublimeMultibyteWordSeparators
※ 5/1現在Package Controlに登録申請中のため、インストールは手動になります。
※ 5/4にPackage Controlに取り込まれました。

日本語に対応しているエディタの場合、単語移動でカーソル移動すると漢字・ひらがな・カタカナ・英数字を判別し、単語らしきところでカーソルが止まるようになっています。

Sublime Text 3 は、日本語を単語移動しようとすると2byte文字列が判別できず、一つの単語として移動してしまいます。

そこで単語移動出来るように MultibyteWordSeparators を作成しました。

どうやってるの?

漢字・ひらがな・カタカナ・英語・数字・記号のグループを作成し、片っ端から正規表現で引っかけています。

次に、カーソルの位置が漢字であればそれを主とし、主となる文字種から変わるまでカーソルを移動させ続けます。

例えば、ひらがなと同じリストに数字を入れればひらがなと同じ種別と判別され、移動もひらがなと数字は一緒に移動されます。

つまり、厳密には”単語”移動ではないです。

形態素解析は使わなかったの?

そういうわけで、形態素解析は使っていません。
実際のところ、開発時に形態素解析が手軽に使えることを知らなかった、という理由もあったり無かった……。

ちょっと形態素解析の場合について考えてみたけど、現在のカーソル位置から前後の文章をある程度チェックする手間、カーソル位置がその文書のどこに当たるのかをそれぞれチェックする必要がありそうで、逆に手間かも……。

個人的には現在のやり方がベターな気がしてます。

日本語の単語移動の件は困ってる方も結構いるようだったので、このプラグインが一助になればいいなと思いを込めての宣伝でした。

アップデート履歴

7/24 ver1.2.2 へアップデート

よく使う日本語記号(←↑→↓■□▲△▼▽◆◇○◎●★☆)をcjkSymbolへ追加

5/24 ver1.2.0 へアップデート

文字列の検索指定をsubliem-settingsへ移行。このため、ユーザーが任意の文字列で指定できるようになりました。

5/9 ver1.1.0 へアップデート

マウスでのダブルクリックでの単語選択に対応
マウスでダブルクリックを行った際、マウスカーソルの下にある文字を検出して単語を選択する機能を追加

以上。

Sublime Text のプラグインのコマンドに好きなキーを割り当てる

掲題通り、プラグインのコマンドにキーを割り当ててみる。
参考として今回は諸事情で割り当てを行ったSortTabsのGithubを見てみよう。

SortTabs/sort_tabs.py at master · bizoo/SortTabs · GitHub

Sublime textのPluginは

class SortTabsByNameCommand

のようにCommandが付くClass名に対してショートカットキーを設定することが出来る。
SortTabsByNameCommandは名前の通り、タブの名前でソートするコマンド。

ではこのコマンドにキーを割り当ててみる。

{ "keys": ["ctrl+alt+s"], "command": "sort_tabs_by_name" }

と、こうなる。

他のキーマップに倣って好きなkeysを設定する。
さらにcommandを見てもらうとClass名と違うことが分かる。

SortTabsByNameCommand
sort_tabs_by_name

よく見比べてもらえれば簡単で、Commandを削除し、最初の文字以外の大文字の前にアンダースコアを入れ、文字は全部小文字にするだけ。

これでキーを押してみるとタブがいつでも名前順にソートできる。

/** 今更感のあるエントリーだなぁ。 */

Sublime Text 2にPHPのCodeSnifferを追加。

PHPをPSR規約に準拠して書こうと思い立ったのでいくつかの規約を自分で選んで準拠チェックが出来るCodeSnifferを追加した。
このプラグインは他にもいくつか機能があり、自分はPSR準拠にフォーマットしてくれる機能も設定している。
プラグインはsublime-phpcs
プラグインの詳細はこちら

プラグインのインストールはいつも通りPackage Controlなので割愛。

このプラグインはPearのPHP_CodeSnifferライブラリが必要なので下記のコマンドで導入。

pear channel-update pear.php.net
pear clear-cache
pear install PHP_CodeSniffer

※1行目と2行目は念のため。

ついでにPSR準拠のソースに自動で変換してくれるPHP Coding Standards Fixerも使う。
これはsublime-phpcsのオプションとして対応している。
使用するためにはPHP Coding Standards Fixer本体ファイルが必要なので下記から導入。
PHP Coding Standards Fixer
これを適当な場所に置く。
自分はsublime Text 2のDataPackagesUser配下に設置。

追記(2013-08-03 17:44): どうやら以前書いたものは使えなくなったみたい。
どこかのアップデート時にsettingが変わったようで、新しいものにしないと動かなくなったので気づいた。
現在はExampleとして
DataPackagesPhpcsexample-settings
にファイルが入っているのでそれを使った方が無難。

ユーザー設定は下記。参考程度にどうぞ。
設定するうえで必須なのはphp_cs_fixer_executable_path。
このパスはコマンドラインへそのまま渡すので”php “から書かないと動かないので要注意。

{
    // Execute the sniffer on file save
    "phpcs_execute_on_save": false,

    // PHP_CodeSniffer settings

    // Additional arguments you can specify into the application
    //
    // Example:
    // {
    //     "--standard": "PEAR",
    //     "-n"
    // }
    "phpcs_additional_args": {
        "--standard": "PSR2",
        "-n": ""
    },


    // Show the errors in the quick panel so you can then goto line
    "phpcs_show_quick_panel": false,

    // PHP-CS-Fixer settings

    // Fix the issues on save
    "php_cs_fixer_on_save": false,

    // Show the quick panel
    "php_cs_fixer_show_quick_panel": true,

    // Path to where you have the php-cs-fixer installed
    "php_cs_fixer_executable_path": "php "Sublime Text 2インストールパス\Data\Packages\User\php-cs-fixer.phar"",

    // Additional arguments you can specify into the application
    //
    // Example:
    // {
    //     "--level": "all"
    // }
    "php_cs_fixer_additional_args": {
        "--level": "psr2"
    },


    // PHP Linter settings

    // Are we going to run php -l over the file?
    "phpcs_linter_run": false

}