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にしたい、とは思っている。
denite.nvimで使えるgrepをそれぞれ試した
今朝、こんなツイートをしたんだけど。
twitter.com本当は試しにpt使ってみよう、とか思ってたんだけど、思った以上にripgrepとの速度差があったのでやめた。
— tomimori (@typetonk2) 2017年2月25日
後になって考えると、PCにかなり負荷が掛かってる状態だったので、もう一度試してみた。
折角なので、denite.nvimのヘルプにあるSilver SearcherとAckも試す。
結論を先に書くと、Platinum Searcherを使うように設定変更した。
環境
- Vim8(Kaoriya版)
RipGrepはgithubから拾った最新版Platinum SearcherとSilver Searcherは、Chocolateyで入れたもの- オプションは
denite.nvimのヘルプにあるのをそのまま使用 - あらかじめ以下をマッピングして実行
DeniteBufferDir -buffer-name=grep grep:C\:/Users/Public/vim8::vim<CR>
なお、Ackはエラーが出て動作しなかった。コマンドラインからは動くんだけどなぁ。
結果
正確に計った訳じゃないので体感だけど、Platinum Searcher > RipGrep > Silver Searcher という結果になった。
何度か試して、それぞれで一番早く感じた時のgifが以下。
RipGrep

Platinum Searcher

Silver Searcher

雑感
正直な所、どれ使っても実用するには充分な速度がでるし、その速度自体も、環境やパラメータのチューニングによって変わるだろうし、参考程度にしかならないはず。
というわけで、好きなのを使えばいいと思う。
とりあえず今回の結果を元に、半年位使ってた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が出るまでの命。悲しいなぁ…

クイックマーク
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の小さい画面でも広々と使いたくなった。
通常は非表示にして、上部にカーソル持っていったり、
oやtで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; }
とりあえずは満足している。細かい不満はあるけど、そこはまた今度直せたらいいな。
Vimperatorの頃の広々としたUIが懐かしくなったので、VimFxで使ってるCSS弄ってみた。まだ少し不満点はあるけど、概ね満足。 pic.twitter.com/CKoZ1gJ7O8
— tomimori (@typetonk2) 2017年1月31日
タブ検索後に元いたタブのフォーカスを外す
bでタブ検索して移動後、移動前のタブに戻った時にURLバーにフォーカスあったままなのが嫌だったため、フォーカス外すようにした。
vimfx.on('TabSelect', ({event}) => { event.detail.previousTab.ownerDocument.activeElement.blur(); })
以下GIFの前半が設定前、後半が設定後。
いつまで動くかちょっと怪しい感じあるが、まぁこれでいいや。1

<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 みたいな、完全にそれに特化したブラウザもいいかもしれない。
選択肢は多いに越した事はないので、今後も快適なブラウジングのため、情報収集はしていきたいな、と思いました(小並)
VimFx メモ その3
今年最後だけど、特に気にせず記事投稿する。VimFxメモの続き。
前の記事。
主にブラウザ設定に関するメモ。
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,
おぉ…dom . ipc . processCount増やしたら、Firefoxのプロセスが増えたぞ!でも使用メモリも凄い増えたぞ!当然ではあるけど、ほんと一長一短だな…メモリと相談しなきゃ。 pic.twitter.com/TuIzUqutiM
— tomimori (@typetonk2) 2016年12月21日
他にも便利な設定はあると思うので、見付け次第試したい所。
アドオンの設定
主にVimperatorを一緒に動かしてた時の名残。
アドオンを無効化
邪魔なアドオンを無効化しておく。
let disabled_addons = [
'firefox@getpocket.com',
'vimperator@mozdev.org',
]
disabled_addons.forEach((element) => {
AddonManager.getAddonByID(element, (addon) => {
addon.userDisabled = true
})
})
addon.userDisabledをtrueにすれば、有効化もいける。
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)
}
})
こんな感じで使う。
Firefoxで昨日知ったことその2。ブックマークに検索エンジンのクエリ登録しておくと、アドレスバーから使える。以前は設定画面から好きに設定出来た気がするんだけど、前からこうだったかな?覚えてないや pic.twitter.com/gSFZTSvnbD
— tomimori (@typetonk2) 2016年7月27日
これが投稿される頃には今年も終わる直前かぁ…
結局他記事幾つか間に合わなかったので、年明け時間ある時にでも記事書きたい(書くとはいっていない)
組込版pythonを使ってvim8のif_pythonを有効化させる
今の職場、PCにインストールするパッケージが管理されているため、
python3のインストーラを使用できない。
PCによっては、管理者権限が無いため、そもそもインストーラ動かせない。
そんな環境でも、vim8のif_pythonを有効化して、denite.nvimを動かしたい。
というわけで、色々試した結果動かせたので、その時のメモ。
環境は以下の通り。
- Windows10 64bit
- vim8 Kaoriya版
結果だけ見る時は、最後の「まとめ」を見ればOK。
- 前準備
- 試行1: python35.dllとvcruntime140.dllを$VIMに置く
- 試行2: 全部$VIM直下に突っ込む。
- 試行3: python3のフォルダを$VIMに置く
- 試行4: pythonthreedllを設定する
- 試行5: runtimepath再設定
- まとめ
前準備
python3のパッケージを公式から取得してくる。
インストーラは使えないため、組込版を取得する。
Python Release Python 3.5.2 | Python.org

試す前に一応、: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を実行すると、異常終了した。

うーん。
試行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動作した。やったぜ。

まとめ
組込版のpython3を使い、
vim8でif_pythonを有効化して、denite.nvimを動作させる事ができた。
まとめると、以下の手順になる。
① python3の組込版を取得。
② 取得したファイルを展開し、python3に名前変更。その中にあるpython35.zipも展開。
③ 展開してできたフォルダを$VIMに置く。
④ 上記からvcruntime140.dllだけ$VIM直下にコピー。
- 既にOSのPATHに
vcruntime140.dllが存在するならこの手順は飛ばして大丈夫。
(家の環境がそうだった)
⑤ vimrcに以下を追加。
set runtimepath+=$VIMset pythonthreedll=$VIM/python3/python35.dll
試してて思ったけど、vim8にもneovimのCheckHealth欲しい…欲しくない?
Vimperator メモ
今までお世話になったVimperatorも、e10sやWebExtensions対応で、先行きが見えない。
使えなくなる可能性高いし、その前に何か書こうと思ってようやく書き始めた。
始めるのが一番エネルギー必要って聞いた事あるけど、ほんとその通りだと思う。
環境は以下の通り。なお、Firefoxはポータブル版を使用。
Vimperator: 3.15.0 (created: 2016/10/05 01:11:26)
Firefox: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0
あと、何故か一部のgifが正常に表示されないんだけど、原因さっぱりなので放置。
- この記事について
- Vimperatorとは
- 特徴
- 良く使ってた機能
- 最後に
この記事について
個人的なVimperatorのメモ。 今までどんな風にVimperatorを使ってきたかを思い出しつつ、自分のrcを見ながら書く。
続きを読む