MylistPocketの使い方
ZenzaWatchの記事 でずっとTODOだったやつ。内容は結構荒い。
続きを読む今朝、こんなツイートをしたんだけど。
twitter.com本当は試しにpt使ってみよう、とか思ってたんだけど、思った以上にripgrepとの速度差があったのでやめた。
— tomimori (@typetonk2) 2017年2月25日
後になって考えると、PCにかなり負荷が掛かってる状態だったので、もう一度試してみた。
折角なので、denite.nvim
のヘルプにあるSilver Searcher
とAck
も試す。
結論を先に書くと、Platinum Searcher
を使うように設定変更した。
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
を使うように設定変更した。特に問題なければ、暫くそのままでいく予定。
案の定、Vimperatorの周りが慌しくなってますね。やっぱり移行しといてよかったと思う。
Vimperator周辺の様子を尻目に、VimFxメモの続き。
なお、CSSについては、家のNightlyでは動作するのに、職場のportableでは動作しない。何でだろ。
VimFx メモ
VimFx メモ その2
VimFx メモ その3
VimFx使う上で便利そうなアドオン追加した。
VimFxへのCSS適用に使っていたStylishがスパイウェア化したらしいので、代替として使ってる。
StylRRR - Barebones Userstyle Injector :: Add-ons for Firefox
Firefox再起動しなくていいのはやっぱ便利。
いくつか増やした。
元々アドオン自体は入れていたんだけど、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 に参考になる情報があるかも。
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メモの続き。
前の記事。
主にブラウザ設定に関するメモ。
VimFxはFirefoxの機能を使うので、Firefoxの設定も大事だと思う。
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!
と似たようなやつ。
もしかしたら勝手に無効化されるかもしれないため、config.jsで毎回設定してる。
'browser.tabs.remote.force-enable': true, 'extensions.e10sBlockedByAddons': false, 'extensions.e10sBlocksEnabling': false,
新しい検索に対応していないため、古い検索を使うよう変更する。
'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日
これが投稿される頃には今年も終わる直前かぁ…
結局他記事幾つか間に合わなかったので、年明け時間ある時にでも記事書きたい(書くとはいっていない)
今の職場、PCにインストールするパッケージが管理されているため、
python3のインストーラを使用できない。
PCによっては、管理者権限が無いため、そもそもインストーラ動かせない。
そんな環境でも、vim8のif_pythonを有効化して、denite.nvimを動かしたい。
というわけで、色々試した結果動かせたので、その時のメモ。
環境は以下の通り。
結果だけ見る時は、最後の「まとめ」を見ればOK。
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
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を実行すると、異常終了した。
うーん。
取得したファイルを、そのまま全部放り込んでみた。
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直下がファイルだらけになるのが嫌なため、他のやり方を探してみる。
展開してできた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じゃないと検索してくれない?
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.
もう少しっぽい。
ヘルプを読むと、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直下にコピー。
vcruntime140.dll
が存在するならこの手順は飛ばして大丈夫。⑤ vimrcに以下を追加。
set runtimepath+=$VIM
set pythonthreedll=$VIM/python3/python35.dll
試してて思ったけど、vim8にもneovimのCheckHealth
欲しい…欲しくない?
今までお世話になった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を使ってきたかを思い出しつつ、自分のrcを見ながら書く。
続きを読む2019/07/21 ver1803位から、また落ちるようになってる。他の探したほうがいいかもなぁ。
win10にしてからのちょっとした不満で、普段使っているビューア「Leeyes」が、定期的にエラーで落ちる、というのがあった。
原因も分からず、<A-F4>
等で終了する事もできないため、わざわざタスクマネージャ起動して
強制終了していたんだけど、ある設定を直したら落ちなくなったのでメモ。
FastChange!!
という壁紙変更ソフトを使用して壁紙を定期的に変更しているけど、
エラーになるタイミングが壁紙変更と全く同じだった。
FastChange!!が悪いというわけではなく、他の手段で壁紙変更しても、結果は同じ。
というわけで、試しに、Leeyesが起動中は壁紙変更を実施しないように設定したところ、エラーは起きなくなった。
何故、壁紙変更と同時にエラーが起きてしまうのかは分からないままだけど、
エラーでなくなったし、気にせずこのまま使う予定。
タブレットとか購入するまでは、Leeyesを使い続けたい。