クマーなひとときv2

雑多なメモ。twitterで書ききれないもの等。

Windowsでneovim環境を作る

Windowsでneovim環境を作る

neovimのバージョンが0.2になり、WindowsがExperimentalでは無くなったので、
試しに導入した時のメモ。

のはずだったが、導入から大分時間が経ってしまったため、手順を忘れぎみ。
家のPCに導入しつつ書く。

前提

  • neovimを導入したいPCは、完全オフライン。
  • オンラインに繋がったPCを使用可能。
  • USBを使ってオフラインのPCにファイルを移動可能。

neovimの準備

公式から拾う。予めビルドされたのが用意されているため、それを使う。

Installing Neovim · neovim/neovim Wiki · GitHub

適当な場所に展開し、起動確認しておく。 以前はnvim-qt.extを別途拾ってくる必要があった気がするけど、同梱されるようになってて少しだけ楽になった。

Pythonの準備

闇の力 を導入予定のため、Python3を使えるようにする必要がある。

パッケージを取得

以前の記事 でPython3は用意しているため、それをそのまま使う。

これ、vim8と同時に動かしたら問題起きたりするのかな。

pythonを使う設定

WindowsではXDG_CONFIG_PATH配下のinit.vimを読み込むらしい。
標準では~/.config/nvimになる模様。そこに配置する。

配置したら、python3の設定を書いておく。

let python3_host_prog="C:/Users/ton/program/vim8/python3/python.exe"

nvim-qtを起動し、:CheckHealthの結果を確認。この時点ではエラーになる。

Python 3 provider (optional)
  - INFO: Using: g:python3_host_prog = "C:/Users/ton/program/vim8/python3/python.exe"
  - INFO: Executable: C:/Users/ton/program/vim8/python3/python.exe
  - ERROR: Command error (4) C:/Users/ton/program/vim8/python3/python.exe -c import neovim; print(neovim.__file__): Traceback (most recent call last):
  - File "<string>", line 1, in <module>
  - ImportError: No module named 'neovim'
  - INFO: Python3 version: 3.5.3
  - INFO: python.exe-neovim version: unable to load neovim Python module
  - ERROR: Neovim Python client is not installed.
    Error: unable to load neovim Python module
    - SUGGESTIONS:
      - Run in shell: pip3 install neovim

neovimでpython3を使うためには、別途モジュールをインストールする必要があるため。

neovim Python client の準備

オンライン、かつ、pipが使えるのであれば、エラーメッセージ通りに pip3 install neovimを実行すれば、すぐ完了。

しかし、今回neovimを入れたいPCはオフラインのため、必要なパッケージを転送し、
手動でインストールする。

pipのインストー

get-pip.pyというスクリプトが用意されているので、ここから、入手する。

次に、以下パッケージを PyPI から取得して、get-pip.pyと同じ場所に配置する。

配置したらpython.exe get-pip.pyを実行し、インストール。

$ python.exe Scripts\get-pip.py
Collecting pip
  Using cached pip-9.0.1-py2.py3-none-any.whl
Collecting setuptools
  Using cached setuptools-36.2.0-py2.py3-none-any.whl
Collecting wheel
  Using cached wheel-0.29.0-py2.py3-none-any.whl
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-9.0.1 setuptools-36.2.0 wheel-0.29.0

これでpipが使える。

Neovim Python Client のインストー

pipと同じように、必要なパッケージを拾ってインストールするだけ。 というわけで、以下パッケージをPyPIから取得し、今度はpip3.exeと同じ場所に配置する。

会社のPCに導入した時は、もっと沢山必要だった気がするんだけど…まぁ必要だったらメッセージ出るので、
都度取得、配置すればいい。

配置したら、pip3.exe install <拾ってきたパッケージ名>を実行し、インストール。

$ pip3 install greenlet-0.4.12-cp35-cp35m-win_amd64.whl msgpack_python-0.4.8-cp35-cp35m-win_amd64.whl pyuv-1.4.0-cp35-cp35m-win_amd64.whl neovim-0.1.13.tar.gz
Processing c:\users\ton\program\vim8\python3\scripts\neovim-0.1.13.tar.gz
Processing c:\users\ton\program\vim8\python3\scripts\greenlet-0.4.12-cp35-cp35m-win_amd64.whl
Processing c:\users\ton\program\vim8\python3\scripts\msgpack_python-0.4.8-cp35-cp35m-win_amd64.whl
Processing c:\users\ton\program\vim8\python3\scripts\pyuv-1.4.0-cp35-cp35m-win_amd64.whl
Building wheels for collected packages: neovim
  Running setup.py bdist_wheel for neovim ... done
  Stored in directory: C:\Users\ton\AppData\Local\pip\Cache\wheels\1f\56\46\0d9eb8b47f52d685aebfd81df5642f44b334e4c671dfb3259b
Successfully built neovim
Installing collected packages: greenlet, msgpack-python, pyuv, neovim
Successfully installed greenlet-0.4.12 msgpack-python-0.4.8 neovim-0.1.13 pyuv-1.4.0

これで Neovim Python Clientが入ったはず。

動作確認

:CheckHealthを実行して、確認する。

Python 3 provider (optional)
  - INFO: Using: g:python3_host_prog = "C:/Users/ton/program/vim8/python3/python.exe"
  - INFO: Executable: C:/Users/ton/program/vim8/python3/python.exe
  - INFO: Python3 version: 3.5.3
  - INFO: python.exe-neovim version: 0.1.13
  - SUCCESS: Latest python.exe-neovim is installed: 0.1.13

やったぜ。

闇の力を手に入れる

dein/denite/deopleteの導入まで。オフライン環境はほんと面倒。

gitの準備

あらかじめ、vimからgitを使えるようにしておくこと。

vimから「:!git」でgitを実行できる状態じゃないと、
dein.vim で正しくランタイムパスが設定されない。

エラーメッセージとか出ないので、PC再設定してる時にはまった。

dein.vim

dein.vim からパッケージをzipで取得。

展開して出来たフォルダを~/.config/nvim/dein/repos/github.com/Shougo/dein.vim/として配置する。

$ ls .config/nvim/dein/repos/github.com/Shougo/
dein.vim  denite.nvim

そして、init.vimに以下を追記。または、ヘルプを参照して書いてもいい。

let $MY_VIMRUNTIME = $HOME.'/.config/nvim'
if &compatible
  set nocompatible
endif
" dein.vimのディレクトリ
let s:dein_dir = expand('$MY_VIMRUNTIME/dein')
" dein.vimのログ
let g:dein#install_log_filename = s:dein_dir . '/dein.log'
" dein.vim 本体
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
" dein.vim がなければ git clone
if &runtimepath !~# '/dein.vim'
  if !isdirectory(s:dein_repo_dir)
    execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
  endif
  execute 'set runtimepath^=' . fnamemodify(s:dein_repo_dir, ':p')
endif

neovimを起動して、:call dein#update()が実行できる事を確認する。

denite.nvim

dein.vimと同じように denite.nvim をzipで取得し、dein.vimと同じ場所に配置。

init.vimに以下を追記。

if dein#load_state(s:dein_dir)
  call dein#begin(s:dein_dir)
  call dein#add('Shougo/denite.nvim', {'frozen': '1'})
call dein#end()
call dein#save_state()
endif

neovimを起動後、:UpdateRemotePlugins→再起動→:call dein#update()と実行して、:help deniteでヘルプが見れる事を確認する。

deoplete.nvim

denite.nvimと全く同じ流れ。

deoplete.nvim をzipで取得し、dein.vimと同じ場所に配置。

init.vimのdenite.nvimの行の下に追記。

  call dein#add('Shougo/denite.nvim', {'frozen': '1'})
  call dein#add('Shougo/deoplete.nvim', {'frozen': '1'})

後、以下も適当な場所に追記。

let g:deoplete#enable_at_startup = 1

neovimを起動後、:UpdateRemotePlugins→再起動→:call dein#update()と実行して、:help deopleteで、ヘルプが見れる事を確認する。

最後に

以前触った時よりもサクサク動作するのでいい感じ。

ただし、Windowsではアスタリスクが入力できないという 問題 があるため、まだ常用できない。

BoW環境ではneovimを使っているので、上記バグ?が直ったらWindowsもneovimにしたい、とは思っている。

地味に便利なMylistPocket

MylistPocketの使い方

ZenzaWatchの記事 でずっとTODOだったやつ。内容は結構荒い。

続きを読む

ZenzaWatchのマニュアルらしきもの(17/08/17)

ZenzaWatchのマニュアル欲しいなー、と思ったので、だらだら作ってるやつ。
定期的に機能が拡充されてどんどん便利になってて凄い。

めも。

・表の中で色付けするスマートなやり方が欲しい。
・見出し1、はてなブログでも使えるやし。勘違いしてた…
・テーブル内では脚注使えないっぽい。
・回り込み便利だけど、見栄え整えづらい
・GIF貼るとやっぱ重くなるので、出来るだけTwitterとかに貼ってそれをリンクする方向で。
・正直縦に長い感じある。
・文字数多すぎて、Vimで編集し辛くなってきた。設定見直す必要がありそう。
続きを読む

denite.nvimで使えるgrepをそれぞれ試した

今朝、こんなツイートをしたんだけど。

twitter.com

後になって考えると、PCにかなり負荷が掛かってる状態だったので、もう一度試してみた。
折角なので、denite.nvimのヘルプにあるSilver SearcherAckも試す。

結論を先に書くと、Platinum Searcherを使うように設定変更した。

環境

  • Vim8(Kaoriya版)
  • RipGrepgithubから拾った最新版
  • Platinum SearcherSilver Searcherは、Chocolateyで入れたもの
  • オプションはdenite.nvimのヘルプにあるのをそのまま使用
  • あらかじめ以下をマッピングして実行
    • DeniteBufferDir -buffer-name=grep grep:C\:/Users/Public/vim8::vim<CR>

なお、Ackはエラーが出て動作しなかった。コマンドラインからは動くんだけどなぁ。

結果

正確に計った訳じゃないので体感だけど、Platinum Searcher > RipGrep > Silver Searcher という結果になった。

何度か試して、それぞれで一番早く感じた時のgifが以下。

  • RipGrep

f:id:tonkuma:20170226102728g:plain

  • Platinum Searcher

f:id:tonkuma:20170226102800g:plain

  • Silver Searcher

f:id:tonkuma:20170226102840g:plain

雑感

正直な所、どれ使っても実用するには充分な速度がでるし、その速度自体も、環境やパラメータのチューニングによって変わるだろうし、参考程度にしかならないはず。

というわけで、好きなのを使えばいいと思う。

とりあえず今回の結果を元に、半年位使ってたRipGrepは一旦お休みして、Platinum Searcherを使うように設定変更した。特に問題なければ、暫くそのままでいく予定。

VimFx メモ その4

案の定、Vimperatorの周りが慌しくなってますね。やっぱり移行しといてよかったと思う。

Vimperator周辺の様子を尻目に、VimFxメモの続き。

なお、CSSについては、家のNightlyでは動作するのに、職場のportableでは動作しない。何でだろ。

VimFx メモ
VimFx メモ その2
VimFx メモ その3

アドオン追加

VimFx使う上で便利そうなアドオン追加した。

stylRRR

VimFxへのCSS適用に使っていたStylishスパイウェア化したらしいので、代替として使ってる。

StylRRR - Barebones Userstyle Injector :: Add-ons for Firefox

Firefox再起動しなくていいのはやっぱ便利。

設定の追加

いくつか増やした。

TabGroups

元々アドオン自体は入れていたんだけど、VimFxから関数呼べる事が分かったので、その設定を追加した。

//タブグループ画面を開く{{{
vimfx.addCommand({
    name: 'tab_groups',
    description: 'open tabGroups',
    category: 'tabs',
}, ({vim}) => {
    vim.window.tabGroups.TabView.toggle();
});
map('<BS>', 'tab_groups', true); //}}}
//次のタブグループを開く{{{
vimfx.addCommand({
  name: 'next_tab_groups',
  description: 'next tabGroup',
  category: 'tabs',
}, ({vim}) => {
  vim.window.tabGroups.TabView.switchGroup(false);
});
map('gn', 'next_tab_groups', true); //}}}
//タブグループ検索{{{
vimfx.addCommand({
  name: 'search_tab_groups',
  description: 'search tabGroups',
  category: 'tabs',
}, ({vim}) => {
  vim.window.tabGroups.TabView.commandButton();
});
map('gb', 'search_tab_groups', true); //}}}

以下のようにコロコロ切り替えられて便利。
ただし、作者がWEに対応しない事を表明しているため、Firefox57が出るまでの命。悲しいなぁ…

f:id:tonkuma:20170204171406g:plain

クイックマーク

Vimperatorみたいには使えないけど、よく使うページを数ストロークで開く目的にしか使わないので、とりあえずこれで事足りてる。

let categories = vimfx.get('categories');
categories.qmarks = {
  name: 'qmarks',
  order: categories.misc.order - 1,
};
let quickmark = (val, shortcut, url) => {
  vimfx.addCommand({
    name: `quickmark_${val}`,
    description: `Open quickmark ${val}`,
    category: 'qmarks',
  }, function({vim}) {
    vim.window.gBrowser.loadURI(url)
  })
  map(shortcut, `quickmark_${val}`, true)
}

quickmark('twicli', 'got', 'http://twicli.neocat.jp/twicli.html')

Vimperatorみたいに使いたいなら、 Question: Is there any way to get single character with public API? · Issue #861 · akhodakivskiy/VimFx に参考になる情報があるかも。

URLバー非表示

Vimperator使ってた時みたいに、ノートPCの小さい画面でも広々と使いたくなった。

通常は非表示にして、上部にカーソル持っていったり、
otでURLバーにフォーカス移ったら表示されるようにした。

  @-moz-document url(chrome://browser/content/browser.xul) {
    #browser {
      margin-top:-3em !important;
    }
    #nav-bar {
      overflow-y: hidden !important;
      max-height:0 !important;
      min-height:0 !important;
    }
    :hover > #nav-bar {
      max-height: 3.15em !important;
    }
  }
  #nav-bar:focus-within {
      max-height: 3.15em !important;
  }

とりあえずは満足している。細かい不満はあるけど、そこはまた今度直せたらいいな。

タブ検索後に元いたタブのフォーカスを外す

bでタブ検索して移動後、移動前のタブに戻った時にURLバーにフォーカスあったままなのが嫌だったため、フォーカス外すようにした。

vimfx.on('TabSelect', ({event}) => {
  event.detail.previousTab.ownerDocument.activeElement.blur();
})

以下GIFの前半が設定前、後半が設定後。
いつまで動くかちょっと怪しい感じあるが、まぁこれでいいや。1

f:id:tonkuma:20170204171443g:plain

<C-u><C-k>で文字削除

この2つだけ欲しかったので追加した。
コードの量多くて貼ると長くなるため、参考にした方のリンク張っとく。

conf/vimfx at master · doy/conf

その他

約一ヶ月前に、WE版のVimFxへの移行のため、機能要望が打ち切られてる。

Turn VimFx into a WebExtension / THE FUTURE OF VIMFX · Issue #860 · akhodakivskiy/VimFx

正直、現状のFirefox版WE APIで作れるのか…?という不安はあるけど、信じて待つしかないかなぁ、という感じ。
ほんとFirefoxはショートカット用のAPI作ってくれよな~頼むよ~。

1215061 - Better keyboard shortcut support

一応、最悪の自体に備えて、Chrome系も CentBrowser + cVim で設定して使っているけど、Chrome の仕様がどうしても嫌2なので、ほんと Firefox + VimFx には頑張ってほしいです。

もしくは、つい最近知ったんだけど、 vimb とか、 uzbl みたいな、完全にそれに特化したブラウザもいいかもしれない。

選択肢は多いに越した事はないので、今後も快適なブラウジングのため、情報収集はしていきたいな、と思いました(小並)


  1. WE化してもメモってる設定動くの?とか考えだしてきりがない。実際不安要素ではある。

  2. ページの読込終わらないと動かないとか。そもそも動かない(動かせない)ページ多いとか。

VimFx メモ その3

今年最後だけど、特に気にせず記事投稿する。VimFxメモの続き。

前の記事。

VimFx メモ
VimFx メモ その2

主にブラウザ設定に関するメモ。
VimFxはFirefoxの機能を使うので、Firefoxの設定も大事だと思う。

about:configの設定

about:configから毎回変えるのは面倒なので、config.jsに記述する。

let {Preferences} = Cu.import('resource://gre/modules/Preferences.jsm', {})
Preferences.set({
  'browser.startup.page': 3,
  'browser.tabs.animate': true,
  'browser.urlbar.maxRichResults': 20,
})

Vimperatorでいうset!と似たようなやつ。

e10s

もしかしたら勝手に無効化されるかもしれないため、config.jsで毎回設定してる。

'browser.tabs.remote.force-enable': true,
'extensions.e10sBlockedByAddons': false,
'extensions.e10sBlocksEnabling': false,

Firefox50以前の検索機能を使う

新しい検索に対応していないため、古い検索を使うよう変更する。

'findbar.modalHighlight': false,
'findbar.highlightAll': false,

補完候補の表示数変更

タブ検索、ブックマーク検索、履歴検索等にURLバーを使用するが、標準だと補完候補が10個程度しか表示されない。

これ結構不便なので、表示される補完候補の数を増やす。

'browser.urlbar.maxRichResults': 20,

値を大きくしすぎると、それはそれで画面を埋め尽くして邪魔になるため、適度に設定。

プロセス数の変更

chromeっぽくなる。メモリ使用量は増えるけど、その分快適になる。はず。

'dom.ipc.processCount': 10,

他にも便利な設定はあると思うので、見付け次第試したい所。

アドオンの設定

主にVimperatorを一緒に動かしてた時の名残。

アドオンを無効化

邪魔なアドオンを無効化しておく。

let disabled_addons = [
  'firefox@getpocket.com',
  'vimperator@mozdev.org',
]
disabled_addons.forEach((element) => {
  AddonManager.getAddonByID(element, (addon) => {
    addon.userDisabled = true
  })
})

addon.userDisabledtrueにすれば、有効化もいける。

Vimperator側では逆にVimFxを無効化してた。

検索エンジン追加

Vimperatorでは、multi_requester.jsで英辞郎検索を頻繁に使ってたので、
似たような事をするためにブックマーク追加する。

let search_engines = [
{keyword: 'gs', title:'Google Search', url: 'https://www.google.co.jp/search?q=%s'},
{keyword: 'alc', title:'英辞郎検索', url: 'http://eow.alc.co.jp/search?q=%s'},
]
let bookmarks = PlacesUtils.bookmarks
search_engines.forEach((element) => {
  let uri = NetUtil.newURI(element.url, null, null)
  if (!bookmarks.isBookmarked(uri)) {
    bookmarks.insertBookmark(
      bookmarks.unfiledBookmarksFolder,
      uri,
      bookmarks.DEFAULT_INDEX,
      element.title)
    PlacesUtils.keywords.insert(element)
  }
})

こんな感じで使う。


これが投稿される頃には今年も終わる直前かぁ…
結局他記事幾つか間に合わなかったので、年明け時間ある時にでも記事書きたい(書くとはいっていない)

組込版pythonを使ってvim8のif_pythonを有効化させる

今の職場、PCにインストールするパッケージが管理されているため、
python3のインストーラを使用できない。

PCによっては、管理者権限が無いため、そもそもインストーラ動かせない。

そんな環境でも、vim8のif_pythonを有効化して、denite.nvimを動かしたい。
というわけで、色々試した結果動かせたので、その時のメモ。

環境は以下の通り。

  • Windows10 64bit
  • vim8 Kaoriya版

結果だけ見る時は、最後の「まとめ」を見ればOK。

前準備

python3のパッケージを公式から取得してくる。
インストーラは使えないため、組込版を取得する。

Python Release Python 3.5.2 | Python.org

f:id:tonkuma:20161224040300j:plain

試す前に一応、:echo has('python3'):py3 print(sys.version)の結果を確認しておく。

echoは0を、printは以下を返す。

E370: Could not load library python35.dll
E263: Sorry, this command is disabled, the Python library could not be loaded.

取得したパッケージは展開しておく。また、フォルダ内にあるpython35.zipも展開しておく。

python3>ls python35.zip
python35.zip

試行1: python35.dllとvcruntime140.dllを$VIMに置く

dllだけ入れてみる。

展開したフォルダに移動し、中身を確認。

python-3.5.2-embed-amd64> ls *.dll
python35.dll  python3.dll  sqlite3.dll  vcruntime140.dll

python35.dllを$VIMにコピー。

vim8> cp ../python-3.5.2-embed-amd64/python35.dll .
vim8> ls python35.dll
python35.dll

その結果、変化はなかった。

E370: Could not load library python35.dll
E263: Sorry, this command is disabled, the Python library could not be loaded.

どうやら、以下の3.8. Python 埋め込みのための配布を読む限り、Microsoft C Runtimeが必要っぽい。

3. Windows で Python を使う — Python 3.5.2 ドキュメント

もちろんPCに入ってない。
しかし、pythonのフォルダ内にvcruntime140.dllというファイルがあったため、それを入れてみる。

vim8> cp ../python-3.5.2-embed-amd64/vcruntime140.dll .
vim8> ls vcruntime140.dll
vcruntime140.dll

その結果、:echo has('python3')は1を返した。

しかし、printを実行すると、異常終了した。

f:id:tonkuma:20161224040519j:plain

うーん。

試行2: 全部$VIM直下に突っ込む。

取得したファイルを、そのまま全部放り込んでみた。

vim8>cp -r ../python-3.5.2-embed-amd64/* .

その結果、動いた。異常終了しない…?

3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)]

一応目的達成だが、$VIM直下がファイルだらけになるのが嫌なため、他のやり方を探してみる。

試行3: python3のフォルダを$VIMに置く

展開してできたpython3のフォルダをpython3にリネームして$VIMに置き、vimrcにパスを追加してみる。

vim8>ls python3
_bz2.pyd          _hashlib.pyd          _overlapped.pyd  pyexpat.pyd   python35.zip  sqlite3.dll
_ctypes.pyd       _lzma.pyd             _socket.pyd      python.exe    pythonw.exe   unicodedata.pyd
_decimal.pyd      _msi.pyd              _sqlite3.pyd     python3.dll   pyvenv.cfg    vcruntime140.dll
_elementtree.pyd  _multiprocessing.pyd  _ssl.pyd         python35.dll  select.pyd    winsound.pyd

念の為、両方に追加。

set runtimepath+=$VIM/python3/
set path+=$VIM/python3/

その結果、python35.dllが見付からなかった。

OSのPATHじゃないと検索してくれない?

試行4: pythonthreedllを設定する

if_pythonのヘルプを読むと、pythonthreedllというのがあった。

MS-Windows ~

To use the Python interface the Python DLL must be in your search path.  In a
console window type "path" to see what directories are used.  The 'pythondll'
or 'pythonthreedll' option can be also used to specify the Python DLL.

これで使用するDLLを指定できるみたいなので、指定してみる。

set pythonthreedll=$VIM/python3/python35.dll

vcruntime140.dllも見えてないと駄目なのは試行1で判明しているため、
$VIM直下に置いておく。

vim8>ls vcruntime140.dll
vcruntime140.dll

その結果、echoは1を返し、printも動作した。
しかし、denite.nvimは動作しなかった。モジュールが見付からない模様。

[denite]   File "C:/Users/45942/prog..im8/vimfiles/dein/.cache/_vimrc/.dein~
/rplugin/python3/denite/source\file_point.py", line 9, in <module>
[denite]     from socket import gethostbyname
[denite]   File "socket.py", line 49, in <module>
[denite] ImportError: No module named '_socket'
[denite] Please execute :messages command.

もう少しっぽい。

試行5: runtimepath再設定

ヘルプを読むと、runtimepath/pythonxからモジュールを探すという記述があった。

In python vim.VIM_SPECIAL_PATH special directory is used as a replacement for 
the list of paths found in 'runtimepath': with this directory in sys.path and 
vim.path_hooks in sys.path_hooks python will try to load module from 
{rtp}/python2 (or python3) and {rtp}/pythonx (for both python versions) for 
each {rtp} found in 'runtimepath'.

確認してみると、確かにruntimepathに$VIMは含まれていないため、追加してみる。

set runtimepath+=$VIM

その結果、denite.nvim動作した。やったぜ。

f:id:tonkuma:20161224041716j:plain

まとめ

組込版のpython3を使い、
vim8でif_pythonを有効化して、denite.nvimを動作させる事ができた。

まとめると、以下の手順になる。

① python3の組込版を取得。
② 取得したファイルを展開し、python3に名前変更。その中にあるpython35.zipも展開。
③ 展開してできたフォルダを$VIMに置く。
④ 上記からvcruntime140.dllだけ$VIM直下にコピー。

  • 既にOSのPATHにvcruntime140.dllが存在するならこの手順は飛ばして大丈夫。
    (家の環境がそうだった)

⑤ vimrcに以下を追加。

  • set runtimepath+=$VIM
  • set pythonthreedll=$VIM/python3/python35.dll

試してて思ったけど、vim8にもneovimのCheckHealth欲しい…欲しくない?