概要
ランチャーソフトのCraftLaunchから起動したアプリと、Win+Rで起動したアプリではPATH設定が異なっているため、動かないものがありました。それを(泥臭く)解決する方法です。
追記:
ここに書いてある方法は不要で、CraftLaunchを再起動をするだけで治りました。CraftLaunchを起動してからPATHが変わったとしても、変更後のPATHを使うわけじゃなくて、起動時点のPATHを使います。あとから入れたnodejsとか見つからないのは当たり前なんですよね、、、初歩的なことでした。
まとめと解決策
CraftLaunchからnvimを起動したときに、nodeが見つからないといわれました。調べるとnodeだけでなく、Rubyやnvmも動かず、PATHが通っていませんでした。そこでconfig.pyで次のような関数を定義、呼び出すことでパスを設定、解決できました。
    def set_path():
        paths = os.environ['PATH'].split(';')
        paths_append = [
            r'C:\Ruby-on-Windows\rbenv\bin',
            r'C:\Ruby-on-Windows\shims',
            r'C:\Users\ユーザー名\scoop\apps\pwsh\current',
            r'C:\Users\ユーザー名\scoop\apps\nvm\current',
            r'C:\Users\ユーザー名\scoop\apps\nvm\current\nodejs\nodejs'
        ]
        os.environ['PATH'] = ';'.join(list(set(paths + paths_append)))
    set_path()
ちょっと詳しく
CraftLaunchとは
CraftLaunchはキーボードだけで操作できるランチャーアプリです。
アプリの説明をはこのサイトがわかりやすいと思います。→ 【PC作業効率化】おすすめフリーソフト「CraftLaunch」 – 微風 on the web…
公式ページ:craftware - CraftLaunch
アプリ起動だけでなく、VMの操作(起動・停止・スナップショット作成)、特定のサイズ指定で画面のスクショ、よく変更するファイルを開く、などなどに使いまくってます、、、が、今回、困ったことがおきました。
なにが起きたか
僕はnvimを使ってます。で、CraftLaunchにnvimを登録して起動したら[coc.nvim] *node* is not executable, checkout https://nodejs.org/en/download/というエラーが出ました。あらー、と思って:checkhealthするとなんだかよくわからんエラーがでます。
Running healthchecks...
E5009:無効な 'runtimepath' です                                                                                         Error executing lua: function health#coc#check[3]..<SNR>55_checkInitialize, line 5: Vim(call):E118: 関数の引数が多過ぎます: <SNR>55_report_error                                                                                                stack traceback:                                                                                                                [C]: in function 'call'                                                                                                 ...pps/neovim/current/share/nvim/runtime/lua/vim/health.lua:429: in function '_check'                                   [string "<nvim>"]:1: in main chunk  
では、とCraftLaunchから登録したpwsh.exeを起動して、そこからnvimを立ち上げても同様。nvimを閉じてnode -vしたところアプリが見つからないというエラー。nvmも同様。pythonは見つかる、、
PATHを確認するとこんなでした。nodejsがPATHにないです。
> $env:path
C:\Users\(ユーザー名)\OneDrive\デスクトップ\PortableApps\CraftLaunch/lib;C:\Windows\system32; C:\Windows; C:\Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShell\v1.0\; C:\Windows\System32\OpenSSH\; C:\Users\(ユーザー名)\scoop\apps\python\current\Scripts; C:\Users\(ユーザー名)\scoop\apps\python\current; C:\Users\(ユーザー名)\scoop\shims; C:\Users\(ユーザー名)\AppData\Local\Microsoft\WindowsApps;
Win+Rでcmd.exeを起動してPATHを確認するとあります
> echo %PATH%
C:¥Users¥(ユーザー名)¥OneDrive¥デスクトップ¥PortableApps¥CraftLaunch/lib;C:¥Windows¥system32;C:¥Windows;C:¥Windows¥System32¥Wbem;C:¥Windows¥System32¥WindowsPowerShell¥v1.0¥;C:¥Windows¥System32¥OpenSSH¥;C:¥Users¥(ユーザー名)¥scoop¥apps¥nvm¥current;C:¥Users¥(ユーザー名)¥scoop¥apps¥nvm¥current¥nodejs¥nodejs;C:¥Users¥(ユーザー名)¥scoop¥apps¥python¥current¥Scripts;C:¥Users¥(ユーザー名)¥scoop¥apps¥python¥current;C:¥Users¥(ユーザー名)¥scoop¥shims;C:¥Users¥(ユーザー名)¥AppData¥Local¥Microsoft¥WindowsApps; 
CraftLaunchにprint(os.environ['PATH'])する関数を登録して呼び出すと、nodejsのは入ってません。
きっとCraftLaunchは何かの理由でPATHに入れてくれないんだ、と想像しました。
(→ じつはこれは間違いで、単にCraftLaunchの起動時期が問題だっただけでした。)
PATHを登録する関数の追加
登録されないなら自分で登録してしまえばいい、ということでconfig.pyのなかでPATHをセットするようにしました。手順で考えたのは
- 今のPATHをos.environ['PATH']でとってきてlistにする
 - 追加したいパスのlistを作る
 - 二つのlistをつないで、重複を省く
 - listの各要素を「;」でつないでい一つの文字列にする
 - os.environ['PATH']に登録する
 
で、できたのが最初のまとめと解決策の関数です。nodejsだけでなくRubyも抜けていたので追加してあります。
解決した!けどこれは根本的にいろいろ違っていた
追記に書いた通り、こんな関数使わずともCraftLaunchの再起動で解決します。いろいろ知ることができてよかったけど、なんだか視野が狭くなってたなーと反省です。
ところで、nvmとrbenvもWindowsで使えます!(全然関係ない)
nvm : scoop install nvm
rbenv :  RubyMetric/rbenv-for-windows: rbenv for Windows - Manage your app's Ruby environment on Windows (scoop install vcredistが必須)